Meydan okuma - RBAC
- Docker & Kubernetes kursu
- İleri seviye
- Ders 69/70
- 5 dk
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:
ciServiceAccount'u- Yalnızca deployment'lar için
get,list,watch,patchizni veren bir Role - İkisini bağlayan RoleBinding
auth can-iile 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 # noUygulama 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
# buraya yazÖrnek çözüm
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
# buraya yazÖrnek çözüm
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:ciBeklenen çı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.
rules:
- apiGroups: [____]
resources: ["deployments"]
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 |