CodeBlanks Logo Icon CodeBlanks

Özet - OPA

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: violation kuralları, input.review.object, [_], not; opa eval ve opa test ile 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 constraints

Uygulama 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

terminal
# buraya yaz

Örnek çözüm

terminal
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=server

Beklenen çı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.

Soru
  match:
    ____:
      - apiGroups: ["apps"]
        kinds: ["Deployment"]
Cevap
  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

Uzman bölümündeki tüm dersler