Kubernetes, namespace

Jeonghak Choยท2025๋…„ 6์›” 22์ผ

Kubernetes

๋ชฉ๋ก ๋ณด๊ธฐ
18/20

๐Ÿ“— K8S, Namespace

๐Ÿณ๏ธโ€๐ŸŒˆ [๊ถ๊ธˆํ•œ์ ]

  • namespace ์‚ญ์ œ๋ฅผ ์ •์ฑ…์ ์œผ๋กœ ๋ฐฉ์ง€
  • namespace ๋ณ„๋กœ ์ž์› ์‚ฌ์šฉ๋Ÿ‰์„ ์ œํ•œ

๐Ÿ”—[๋ชฉ์ฐจ]

๋„ค์ž„ ์ŠคํŽ˜์ด์Šค

๋„ค์ž„์ŠคํŽ˜์ด์Šค(Namespace)๋Š” Kubernetes์—์„œ ๋ฆฌ์†Œ์Šค ๊ฒฉ๋ฆฌ์™€ ๋‹ค์ค‘ ์‚ฌ์šฉ์ž/์„œ๋น„์Šค ํ™˜๊ฒฝ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋…ผ๋ฆฌ์  ๊ตฌํš์ด๋‹ค. ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐ ์•ˆ์—์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…๋ฆฝ๋œ "๋…ผ๋ฆฌ์  ๊ณต๊ฐ„"์„ ๋งŒ๋“ค์–ด ํŒ€, ํ”„๋กœ์ ํŠธ, ์„œ๋น„์Šค ๋‹จ์œ„๋กœ ๋ฆฌ์†Œ์Šค๋ฅผ ๊ตฌ๋ถ„ํ•ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

  • ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์‚ฌ์šฉ๋ชฉ์ 
๋ชฉ์ ์„ค๋ช…
์ž์› ๊ฒฉ๋ฆฌ์„œ๋กœ ๋‹ค๋ฅธ ์„œ๋น„์Šค/ํŒ€ ๊ฐ„ ๋ฆฌ์†Œ์Šค๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ์ถฉ๋Œ ๋ฐฉ์ง€
์ ‘๊ทผ ์ œ์–ด๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ณ„๋กœ RBAC ์„ค์ • ๊ฐ€๋Šฅ (์˜ˆ: AํŒ€์€ A ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ)
๋ฆฌ์†Œ์Šค ํ• ๋‹น ์ œํ•œResourceQuota๋ฅผ ํ†ตํ•ด ์ž์› ํ• ๋‹น๋Ÿ‰ ์ œํ•œ ๊ฐ€๋Šฅ
๊ด€๋ฆฌ ๋‹จ์ˆœํ™”๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‹จ์œ„๋กœ ๋ฆฌ์†Œ์Šค ๋ณด๊ธฐ, ์‚ญ์ œ, ๋ฐฐํฌ ๋“ฑ ๊ฐ„ํŽธ ๊ด€๋ฆฌ
ํ…Œ์ŠคํŠธ์™€ ์šด์˜ ๋ถ„๋ฆฌdev, test, prod ๊ฐ™์€ ํ™˜๊ฒฝ๋ณ„ ๊ฒฉ๋ฆฌ ๊ฐ€๋Šฅ
  • ๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค
์ด๋ฆ„์„ค๋ช…
default๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค, ๋ช…์‹œํ•˜์ง€ ์•Š์œผ๋ฉด ์—ฌ๊ธฐ์— ์ƒ์„ฑ๋จ
kube-systemKubernetes ์‹œ์Šคํ…œ ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋™์ž‘ํ•˜๋Š” ์˜์—ญ (kube-dns, coredns ๋“ฑ)
kube-public๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐœ ์˜์—ญ (๊ฑฐ์˜ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ)
kube-node-lease๋…ธ๋“œ heartbeat ์ฒดํฌ์šฉ lease ๊ฐ์ฒด ์ €์žฅ์šฉ (v1.13+์—์„œ ์ถ”๊ฐ€๋จ)
  • ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ •์˜ ๊ธฐ์ค€
๊ธฐ์ค€์„ค๋ช…์˜ˆ์‹œ
์„œ๋น„์Šค/์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ์ค€์„œ๋น„์Šค ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌspark, trino, airflow, hms
ํŒ€/์กฐ์ง ๊ธฐ์ค€ํŒ€ ๋˜๋Š” ๋ถ€์„œ ๋‹จ์œ„ ๋ถ„๋ฆฌdata-engineering, ml-team
๋ฐฐํฌ ํ™˜๊ฒฝ ๊ธฐ์ค€dev/test/staging/prod ๋ถ„๋ฆฌdev-spark, prod-trino
๋ณด์•ˆ ๊ฒฉ๋ฆฌ ๊ธฐ์ค€์ ‘๊ทผ ์ œํ•œ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐsecure-data, compliance-zone

๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ƒ์„ฑ ๋ฐฉ๋ฒ•

apiVersion: v1
kind: Namespace
metadata:
  name: dev

๋„ค์ž„์ŠคํŽ˜์ด์Šค ์šฉ๋„ ๋ณ„ ์‚ฌ์šฉ ์‚ฌ๋ก€

ํ™œ์šฉ ์˜ˆ์„ค๋ช…
team-a, team-bํŒ€ ๋‹จ์œ„ ๋ถ„๋ฆฌ (RBAC + ๋ฆฌ์†Œ์Šค์ฟผํ„ฐ ์ ์šฉ)
airflow, spark, trino์ปดํฌ๋„ŒํŠธ ๋‹จ์œ„ ๊ฒฉ๋ฆฌ
dev, stage, prod๋ฐฐํฌ ํ™˜๊ฒฝ ๋ถ„๋ฆฌ
ci, cdํŒŒ์ดํ”„๋ผ์ธ์šฉ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๊ตฌ๋ถ„

๋„ค์ž„์ŠคํŽ˜์ด์Šค RBAC ์ ์šฉ

# RoleBinding ์˜ˆ์‹œ
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: trino-readonly
  namespace: trino
subjects:
- kind: User
  name: alice
roleRef:
  kind: Role
  name: view
  apiGroup: rbac.authorization.k8s.io

๋ฆฌ์†Œ์Šค ์ œํ•œ: ResourceQuota, LimitRange

  • CPU, ๋ฉ”๋ชจ๋ฆฌ ์š”์ฒญ/์ œํ•œ
  • Pod ๊ฐœ์ˆ˜ ์ œํ•œ
  • PVC ๊ฐœ์ˆ˜ ์ œํ•œ
  • ํŠน์ • ๊ฐ์ฒด ๊ฐœ์ˆ˜ ์ œํ•œ (ConfigMap, Secret ๋“ฑ)
apiVersion: v1
kind: ResourceQuota
metadata:
  name: dev-quota
  namespace: dev
spec:
  hard:
    requests.cpu: "8"
    limits.memory: "32Gi"
    pods: "20"

๋„ค์ž„์ŠคํŽ˜์ด์Šค ํ•œ๊ณ„

์ œํ•œ์ ์„ค๋ช…
ํด๋Ÿฌ์Šคํ„ฐ ์ˆ˜์ค€ ์ž์›์€ ๊ฒฉ๋ฆฌ ๋ถˆ๊ฐ€๋…ธ๋“œ, CRD, IngressClass ๋“ฑ์€ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ๋ฌด๊ด€
์™„๋ฒฝํ•œ ๋ณด์•ˆ ๊ฒฝ๊ณ„๋Š” ์•„๋‹˜๋ณด์•ˆ์ ์œผ๋กœ๋Š” ๊ฐ€์ƒ ํด๋Ÿฌ์Šคํ„ฐ(vCluster) ์ˆ˜์ค€์˜ ๋ถ„๋ฆฌ ํ•„์š”
๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ด๋ฆ„์€ ํด๋Ÿฌ์Šคํ„ฐ ๋‚ด ์œ ์ผํ•ด์•ผ ํ•จ์ค‘๋ณต ๋ถˆ๊ฐ€

Kubernetes์—์„œ๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ณ„ ResourceQuota์˜ ์ดํ•ฉ์ด ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด ์‹ค์ œ ์ž์›์„ ์ดˆ๊ณผํ•ด๋„ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค. "Quota ์ดํ•ฉ โ‰ค ์‹ค์ œ ์ž์›"์ด๋ผ๋Š” ์ œํ•œ์€ ๊ฐ•์ œ๋˜์ง€ ์•Š๋Š”๋‹ค.
ResourceQuota๋Š” ์ž์› "๋ณด์žฅ"์ด ์•„๋‹Œ "์ œํ•œ"์„ ์œ„ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์˜ˆ: ์ „์ฒด ๋…ธ๋“œ ์ž์›์ด ์•„๋ž˜์™€ ๊ฐ™๋‹ค๊ณ  ๊ฐ€์ •

์ด ๋…ธ๋“œ ์ž์›:

  • CPU: 32์ฝ”์–ด
  • Memory: 128Gi

์˜ˆ์‹œ๋กœ ์ž˜๋ชป๋œ Quota ์„ค์ •์ด ๊ฐ€๋Šฅํ•จ

๋„ค์ž„์ŠคํŽ˜์ด์ŠคCPU ์ฟผํ„ฐMemory ์ฟผํ„ฐ
spark2496Gi
trino1664Gi
airflow832Gi

โ†’ CPU ์ดํ•ฉ: 48์ฝ”์–ด, Memory ์ดํ•ฉ: 192Gi โ†’ ์‹ค์ œ ์ž์›๋ณด๋‹ค ์ดˆ๊ณผํ–ˆ์ง€๋งŒ ์„ค์ •์€ ๊ฐ€๋Šฅํ•จ.

๋ฆฌ์†Œ์Šค ์ฟผํ„ฐ ์ดˆ๊ณผ ํ—ˆ์šฉ ์ด์œ 

์ด์œ ์„ค๋ช…
๋ฆฌ์†Œ์Šค ํ• ๋‹น์€ "์˜ˆ์•ฝ"์ด ์•„๋‹ˆ๋ผ "์ œํ•œ" ๋ชฉ์ ์‹ค์ œ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ œ ์—†์Œ
๋ฆฌ์†Œ์Šค๋Š” ๋™์  ์‚ฌ์šฉ๋จ (Spark executor ๋“ฑ)ํ”ผํฌ์น˜๋กœ ๊ณ„์‚ฐํ•  ๊ฒฝ์šฐ ์ดˆ๊ณผ ๊ฐ€๋Šฅ
Quota๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‚ด๋ถ€ ์ œํ•œ์šฉ๋‹ค๋ฅธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์™€ ํ˜‘์˜๋œ ๋ณด์žฅ์€ ์•„๋‹˜
๋ฆฌ์†Œ์Šค ์Šค์ผ€์ค„๋ง์€ kube-scheduler๊ฐ€ ๋‹ด๋‹น์‹ค์ œ ๋…ธ๋“œ์— ์ž์›์ด ์—†์œผ๋ฉด Pending ์ƒํƒœ ์œ ์ง€

๋ฆฌ์†Œ์Šค ์ฟผํ„ฐ ์‹ค๋ฌด ํ™œ์šฉ

์ „๋žต์„ค๋ช…
ํด๋Ÿฌ์Šคํ„ฐ ์ด๋Ÿ‰๋ณด๋‹ค ์•ฝ๊ฐ„ ์—ฌ์œ ๋กญ๊ฒŒ ํ• ๋‹น์˜ˆ: ์ด ์ž์›์˜ 80~90%๋งŒ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์ฟผํ„ฐ๋กœ ๋ฐฐ๋ถ„
Quota ํ•ฉ์‚ฐ ๋Œ€์‹œ๋ณด๋“œ ๊ตฌ์„ฑPrometheus + Grafana ๋˜๋Š” Kubecost์—์„œ ์ถ”์  ๊ฐ€๋Šฅ
๋ฆฌ์†Œ์Šค oversubscription ์ •์ฑ… ๋ฌธ์„œํ™”์˜ˆ: Spark maxExecutor ์ˆ˜ ์ œํ•œ ๋“ฑ
ํ•„์š” ์‹œ LimitRange๋กœ ๊ฐœ๋ณ„ Pod ์ œํ•œQuota๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‹จ์œ„, ์‹ค์ œ ์‚ฌ์šฉ์€ Pod ๋‹จ์œ„

๋Œ€์•ˆ (๋ณด๋‹ค ์ •๋ฐ€ํ•œ ์ œ์–ด)

๋„๊ตฌ๊ธฐ๋Šฅ
Kubecost๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ณ„ ์‹ค์‚ฌ์šฉ ๋ฆฌ์†Œ์Šค ์ถ”์ , Quota ์ดˆ๊ณผ ๊ฐ์ง€
OPA Gatekeeper์ •์ฑ… ๊ธฐ๋ฐ˜์œผ๋กœ ์ดํ•ฉ ์ดˆ๊ณผ ๋ฐฉ์ง€ ๊ฐ€๋Šฅ (์˜ˆ: Template ์ •์ฑ… ์ž‘์„ฑ)
Karmada / Hierarchical Namespace Controller์กฐ์ง/ํ•˜์œ„ ๊ตฌ์กฐ ๊ธฐ๋ฐ˜ Quota ๋ฐฐ๋ถ„ ๊ฐ€๋Šฅ

๋„ค์ž„์ŠคํŽ˜์ด์Šค ์‚ญ์ œ

Kubernetes์—์„œ ๋„ค์ž„์ŠคํŽ˜์ด์Šค(Namespace) ๋ฅผ ์‚ญ์ œํ•˜๋ฉด, ๊ทธ ์•ˆ์— ์กด์žฌํ•˜๋Š” ๋ชจ๋“  ๋ฆฌ์†Œ์Šค(Pod, Service, Deployment, PVC, ConfigMap ๋“ฑ) ๊ฐ€ ํ•จ๊ป˜ ์˜๊ตฌ์ ์œผ๋กœ ์‚ญ์ œ๋œ๋‹ค. ์ด๋กœ ์ธํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์œ„ํ—˜ ์š”์†Œ๊ฐ€ ์กด์žฌํ•œ๋‹ค.

๋„ค์ž„์ŠคํŽ˜์ด์Šค ์‚ญ์ œ์˜ ์ฃผ์š” ์œ„ํ—˜

์œ„ํ—˜ ์š”์†Œ์„ค๋ช…
๋ชจ๋“  ๋ฆฌ์†Œ์Šค ์‚ญ์ œ๋„ค์ž„์ŠคํŽ˜์ด์Šค ํ•˜์œ„์˜ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๊ฐ€ ์ข…์†์ ์œผ๋กœ ์ œ๊ฑฐ๋จ
๋ณต๊ตฌ ์–ด๋ ค์›€๋ฆฌ์†Œ์Šค๋ฅผ ๋ณต๊ตฌํ•˜๋ ค๋ฉด ๋ฐฑ์—…์ด๋‚˜ GitOps ๋“ฑ์˜ ๋ณ„๋„ ์ด๋ ฅ์ด ํ•„์š”
๊ณต์œ  ๋ฆฌ์†Œ์Šค ์‚ญ์ œ ์œ„ํ—˜๋„ค์ž„์ŠคํŽ˜์ด์Šค ์•ˆ์— ๋‹ค๋ฅธ ํŒ€ ํ˜น์€ ์„œ๋น„์Šค๊ฐ€ ํ•จ๊ป˜ ์“ฐ๋˜ ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ์œผ๋ฉด ํ•จ๊ป˜ ์‚ญ์ œ๋จ
์ข…์† ์™ธ๋ถ€ ๋ฆฌ์†Œ์Šค ์†์ƒ์˜ˆ: PVC ์‚ญ์ œ โ†’ ์˜์† ์Šคํ† ๋ฆฌ์ง€๊นŒ์ง€ ์‚ญ์ œ๋  ์ˆ˜ ์žˆ์Œ (์Šคํ† ๋ฆฌ์ง€Class ์„ค์ •์— ๋”ฐ๋ผ ๋‹ค๋ฆ„)

์‹ค๋ฌด์—์„œ ์•ˆ์ „ํ•˜๊ฒŒ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•

๋ฐฉ๋ฒ•์„ค๋ช…
kubectl delete๋กœ ๊ฐœ๋ณ„ ๋ฆฌ์†Œ์Šค ์‚ญ์ œ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์‚ญ์ œ ๋Œ€์‹  ๋ฆฌ์†Œ์Šค ํƒ€์ž…๋ณ„๋กœ ์„ ํƒ์  ์‚ญ์ œ ๊ถŒ์žฅ
๋„ค์ž„์ŠคํŽ˜์ด์Šค ์‚ญ์ œ ์ „ ๋ฐฑ์—…kubectl get all --namespace=<ns> -o yaml > backup.yaml
GitOps ๊ด€๋ฆฌ ์‚ฌ์šฉArgo CD, Flux ๋“ฑ์„ ์‚ฌ์šฉํ•ด ์„ ์–ธ์  ์ƒํƒœ์—์„œ ๋ณต์› ๊ฐ€๋Šฅํ•˜๊ฒŒ ์šด์˜
Finalizer ํ™•์ธ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์‚ญ์ œ๊ฐ€ ์˜ค๋ž˜ ๊ฑธ๋ฆด ๋•Œ๋Š” finalizer ๊ฐ€ ๊ฑธ๋ ค ์žˆ๋Š”์ง€ ํ™•์ธ ํ•„์š”
--wait=false ์˜ต์…˜ ์‚ฌ์šฉ ์ž์ œ๊ฐ•์ œ ์‚ญ์ œ ์‹œ ์ผ๋ถ€ ๋ฆฌ์†Œ์Šค๊ฐ€ ์œ ๋ น์ฒ˜๋Ÿผ ๋‚จ๋Š” ๊ฒฝ์šฐ ์žˆ์Œ

๋ฆฌ์†Œ์Šค ๋ณดํ˜ธ์šฉ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋Š” deletion ๊ถŒํ•œ ์ œํ•œ

โ†’ ์˜ˆ: admin๋งŒ ์‚ญ์ œ ๊ฐ€๋Šฅํ•˜๊ฒŒ RBAC ๊ตฌ์„ฑ

--dry-run=client๋กœ ์‚ฌ์ „ ๊ฒ€ํ† 

โ†’ ์‚ญ์ œ ๋ช…๋ น์ด ์‹ค์ œ๋กœ ์–ด๋–ค ๋ฆฌ์†Œ์Šค๋ฅผ ์ œ๊ฑฐํ•˜๋Š”์ง€ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ๊ฐ€๋Šฅ

ํ•„์š”ํ•˜์‹œ๋‹ค๋ฉด ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์‚ญ์ œ ์ „์— ๋ฆฌ์†Œ์Šค๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๊ฑฐ๋‚˜ ๋ฐฑ์—…ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋„ ๋งŒ๋“ค์–ด๋“œ๋ฆด ์ˆ˜

RBAC ๊ตฌ์„ฑ ๋ฐฉ๋ฒ•

Kubernetes์—์„œ RBAC(Role-Based Access Control) ์€ ์‚ฌ์šฉ์ž ๋˜๋Š” ์„œ๋น„์Šค ๊ณ„์ •์ด ๋ฌด์—‡์„, ์–ด๋””์—์„œ, ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ์ œ์–ดํ•˜๋Š” ํ•ต์‹ฌ ๋ณด์•ˆ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ด๋‹ค.

RBAC ๊ตฌ์„ฑ ์š”์†Œ

๊ฐ์ฒด์„ค๋ช…
RoleํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๋‚ด์—์„œ์˜ ๊ถŒํ•œ์„ ์ •์˜
ClusterRoleํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด ๋˜๋Š” ์—ฌ๋Ÿฌ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๊ฑธ์นœ ๊ถŒํ•œ ์ •์˜
RoleBindingRole์„ ์‚ฌ์šฉ์ž/๊ทธ๋ฃน/์„œ๋น„์Šค๊ณ„์ •์— ๋ฐ”์ธ๋”ฉ (๋„ค์ž„์ŠคํŽ˜์ด์Šค ํ•œ์ •)
ClusterRoleBindingClusterRole์„ ํด๋Ÿฌ์Šคํ„ฐ ์ „์ฒด์— ๋ฐ”์ธ๋”ฉ

RBAC ํ™œ์šฉ

ํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค์—์„œ get, list๋งŒ ํ—ˆ์šฉ

  • role.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: readonly-role
  namespace: my-namespace
rules:
  - apiGroups: [""]
    resources: ["pods", "services"]
    verbs: ["get", "list"]
  • rolebinding.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: readonly-binding
  namespace: my-namespace
subjects:
  - kind: User
    name: alice@example.com   # ๋˜๋Š” kind: ServiceAccount
    apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: Role
  name: readonly-role
  apiGroup: rbac.authorization.k8s.io

๋„ค์ž„์ŠคํŽ˜์ด์Šค ์‚ญ์ œ ๊ถŒํ•œ ์ œ๊ฑฐ

delete ๊ถŒํ•œ์„ ๋บ€๋‹ค. ๋˜๋Š” ์™„์ „ํ•œ admin ClusterRole ๋Œ€์‹  ์ œํ•œ๋œ Role์„ ์ง์ ‘ ์ •์˜ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

  • ์˜ˆ: ๋„ค์ž„์ŠคํŽ˜์ด์Šค ์‚ญ์ œ ๊ถŒํ•œ ์ œ์™ธํ•œ Role
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: limited-admin
rules:
  - apiGroups: [""]
    resources: ["pods", "services", "configmaps", "secrets"]
    verbs: ["get", "list", "create", "update", "patch", "delete"]
  - apiGroups: ["apps"]
    resources: ["deployments", "statefulsets"]
    verbs: ["*"]

๊ทธ๋ฆฌ๊ณ  ์ด๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ ์ˆ˜์ค€ ๋˜๋Š” ํŠน์ • ๋„ค์ž„์ŠคํŽ˜์ด์Šค์— ๋ฐ”์ธ๋”ฉํ•œ๋‹ค.

๋ฐ”์ธ๋”ฉ ๋Œ€์ƒ ์ข…๋ฅ˜

kind์„ค๋ช…
Userkubectl ๋“ฑ์œผ๋กœ ๋กœ๊ทธ์ธํ•œ ์‚ฌ์šฉ์ž
GroupIDP ์—ฐ๋™ ์‹œ ์‚ฌ์šฉ์ž ๊ทธ๋ฃน (ex. OIDC)
ServiceAccountPod ๋‚ด๋ถ€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ธ์ฆ ์ฃผ์ฒด

0๊ฐœ์˜ ๋Œ“๊ธ€