CodeBlanks Logo Icon CodeBlanks

Gatekeeper nedir?

Gatekeeper'ın Kubernetes admission webhook'u olduğunu öğrenirsin.

Gatekeeper nedir?

Gatekeeper, OPA'yı Kubernetes'e bağlayan projedir. İki parçası vardır:

  • Admission denetleyicisi: yeni ya da değişen nesneleri politikalarla denetler, ihlal varsa reddeder.
  • Denetim (audit): cluster'da zaten var olan nesneleri düzenli tarar ve ihlalleri politika nesnesinin status'una yazar.

Politikalar iki CRD ile yazılır: ConstraintTemplate (Rego mantığı ve parametre tanımı) ve Constraint (o şablonun hangi nesnelere, hangi parametrelerle uygulanacağı).

ConstraintTemplate  K8sZorunluEtiket   (Rego: etiket var mı?)
   └── Constraint   deployment-etiketleri  (etiketler: [takim, ortam], hedef: Deployment)

İhlalleri görmek

Audit sonuçları Constraint'in status'undadır. Reddedilen bir istek, ihlal mesajıyla birlikte kullanıcıya döner:

$ kubectl get k8szorunluetiket deployment-etiketleri -o jsonpath='{.status.totalViolations}'
4
$ kubectl create deployment deneme --image=nginx:1.27
error: admission webhook "validation.gatekeeper.sh" denied the request: [deployment-etiketleri] eksik etiket: takim

Uygulama İhlalleri sorgula

Üç komut yaz: ConstraintTemplate'leri listele (kubectl get constrainttemplates); k8szorunluetiket türündeki deployment-etiketleri Constraint'inin toplam ihlal sayısını jsonpath='{.status.totalViolations}' ile yazdır; aynı Constraint'i ayrıntılı göster.

Başlangıç kodu

terminal
# buraya yaz

Örnek çözüm

terminal
kubectl get constrainttemplates
kubectl get k8szorunluetiket deployment-etiketleri -o jsonpath='{.status.totalViolations}'
kubectl describe k8szorunluetiket deployment-etiketleri

Beklenen çıktı

NAME               AGE
k8szorunluetiket   3d
4
Name:         deployment-etiketleri
Status:
  Total Violations:  4
  Violations:
    Message:    eksik etiket: takim
    Name:       eski-rapor
    Namespace:  magaza

Soru ve cevaplar

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

1 Gatekeeper kurulmadan önce oluşturulmuş ve politikaya uymayan bir deployment ne olur?

  • Hemen silinir
  • Yeniden başlatılır
  • Hiç fark edilmez
  • Silinmez; audit onu ihlal olarak raporlar Doğru cevap

Açıklama: Admission yalnızca yeni istekleri durdurur; audit mevcutları gösterir.

2 Rego mantığını içeren nesne türünü yaz.

Soru
apiVersion: templates.gatekeeper.sh/v1
kind: ____
Cevap
apiVersion: templates.gatekeeper.sh/v1
kind: ConstraintTemplate

Açıklama: Şablon mantığı, Constraint uygulamayı tanımlar.

3 Eşleştir.

Kavram Anlamı
ConstraintTemplate Rego ve parametreler
Constraint Nerede ve nasıl uygulanır
admission Yeni istekleri durdurur
audit Mevcutları raporlar

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