Özet - OPA
- Docker & Kubernetes kursu
- Uzman
- Ders 36/47
- 5 dk
Rego ve ConstraintTemplate'i birleştirerek bir politika yazarsın.
Özet: OPA
Bu grupta:
- OPA politikaları koddan ayırır; Kubernetes'te admission aşamasında nesne içeriğini denetler (RBAC kimi, OPA içeriği denetler).
- Rego:
violationkuralları,input.review.object,[_],not;opa evalveopa testile yerelde sınanır. - Gatekeeper: admission ile yeni istekleri durdurur, audit ile mevcut ihlalleri raporlar.
- ConstraintTemplate mantığı ve parametre tanımını, Constraint hedefleri (
match) ve parametreleri tanımlar. enforcementAction: dryrun → warn → deny ile kademeli devreye alma; sistem namespace'leri hariç tutulur.
kubectl get constrainttemplates
kubectl get constraintsUygulama Uyarıdan reddetmeye geç
Üç komut yaz: tüm Constraint'leri listele; deployment-etiketleri (k8szorunluetiket) Constraint'ine {"spec":{"enforcementAction":"deny"}} yamasını --type=merge ile uygula; magaza'da nginx:1.27 image'lı deneme deployment'ını --dry-run=server ile oluşturmayı dene.
Başlangıç kodu
# buraya yazÖrnek çözüm
kubectl get constraints
kubectl patch k8szorunluetiket deployment-etiketleri --type=merge -p '{"spec":{"enforcementAction":"deny"}}'
kubectl create deployment deneme --image=nginx:1.27 -n magaza --dry-run=serverBeklenen çıktı
NAME ENFORCEMENT-ACTION TOTAL-VIOLATIONS deployment-etiketleri warn 0 k8szorunluetiket.constraints.gatekeeper.sh/deployment-etiketleri patched error: admission webhook "validation.gatekeeper.sh" denied the request: [deployment-etiketleri] eksik etiket: takim
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Tüm Constraint'leri türlerinden bağımsız listelemek için hangisi kullanılır?
- kubectl get constraints Doğru cevap
- kubectl get policies
- kubectl get rego
- kubectl get admission
Açıklama: Gatekeeper tüm Constraint türlerini constraints kategorisinde toplar.
2 Hedef nesne türünü belirt.
match:
____:
- apiGroups: ["apps"]
kinds: ["Deployment"]
match:
kinds:
- apiGroups: ["apps"]
kinds: ["Deployment"]
Açıklama: match.kinds API grubu ve tür listesidir.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
Rego |
Politika dili |
ConstraintTemplate |
Mantık |
Constraint |
Uygulama |
audit |
Mevcut ihlaller |