CodeBlanks Logo Icon CodeBlanks

Meydan okuma - RBAC

ServiceAccount ve RoleBinding yazarsın.

Meydan okuma: en az yetki

Bir CI sistemi yalnızca magaza namespace'inde deployment'ların image'ını güncelleyip durumunu izleyebilmeli; Secret okuyamamalı, başka namespace'lere dokunamamalı. Bunun için:

  1. ci ServiceAccount'u
  2. Yalnızca deployment'lar için get, list, watch, patch izni veren bir Role
  3. İkisini bağlayan RoleBinding
  4. auth can-i ile sınama
kubectl auth can-i patch deployments -n magaza --as system:serviceaccount:magaza:ci   # yes
kubectl auth can-i get secrets -n magaza --as system:serviceaccount:magaza:ci          # no
kubectl auth can-i patch deployments -n prod --as system:serviceaccount:magaza:ci     # no

Uygulama Rol

Bir Role YAML'ı yaz: adı ci-dagitici, namespace'i magaza; tek kural: apiGroups: ["apps"], resources: ["deployments"], verbs: ["get", "list", "watch", "patch"].

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: ci-dagitici
  namespace: magaza
rules:
  - apiGroups: ["apps"]
    resources: ["deployments"]
    verbs: ["get", "list", "watch", "patch"]

Beklenen çıktı

role.rbac.authorization.k8s.io/ci-dagitici created

Uygulama Kimlik, bağlama ve sınama

Dört komut yaz: magaza'da ci ServiceAccount'unu oluştur; magaza'da ci-dagitici rolünü magaza:ci'ye veren ci-dagitici RoleBinding'ini oluştur; system:serviceaccount:magaza:ci adına magaza'da deployment yamalama iznini sorgula; aynı kimlikle magaza'da Secret okuma iznini sorgula.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
kubectl create serviceaccount ci -n magaza
kubectl create rolebinding ci-dagitici --role=ci-dagitici --serviceaccount=magaza:ci -n magaza
kubectl auth can-i patch deployments -n magaza --as system:serviceaccount:magaza:ci
kubectl auth can-i get secrets -n magaza --as system:serviceaccount:magaza:ci

Beklenen çıktı

serviceaccount/ci created
rolebinding.rbac.authorization.k8s.io/ci-dagitici created
yes
no

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 kubectl set image için hangi fiil gerekir?

  • patch (ve okumak için get) Doğru cevap
  • create
  • delete
  • escalate

Açıklama: set image deployment'ı yamalar.

2 Deployment'ların API grubunu yaz.

Soru
rules:
  - apiGroups: [____]
    resources: ["deployments"]
Cevap
rules:
  - apiGroups: ["apps"]
    resources: ["deployments"]

Açıklama: Deployment apps grubundadır.

3 Eşleştir.

Kavram Anlamı
ci ServiceAccount CI kimliği
Role Yalnızca magaza
patch Image güncelleme
secrets: no Gizlilere erişim yok

İleri seviye bölümündeki tüm dersler