Docker & Kubernetes
Constraint
Constraint ile politika uygulmayı öğrenirsin.
Constraint
Constraint, şablonun ürettiği türde bir nesnedir: politikanın hangi nesnelere (match) ve hangi parametrelerle uygulanacağını söyler. enforcementAction davranışı belirler: deny (reddet), warn (uyar ama kabul et), dryrun (yalnızca audit):
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sZorunluEtiket
metadata:
name: deployment-etiketleri
spec:
enforcementAction: deny
match:
kinds:
- apiGroups: ["apps"]
kinds: ["Deployment"]
excludedNamespaces: ["kube-system", "gatekeeper-system"]
parameters:
etiketler: ["takim", "ortam"]
Sistem namespace'lerini hariç tutmak
Politikaların kube-system gibi sistem namespace'lerine uygulanması kritik bileşenlerin güncellenmesini engelleyebilir; bu yüzden excludedNamespaces ile hariç tutulur. Gatekeeper'ın kendi config'i de bazı namespace'leri tamamen dışarıda bırakabilir:
$ kubectl create deployment deneme --image=nginx:1.27 -n magaza
error: admission webhook "validation.gatekeeper.sh" denied the request: [deployment-etiketleri] eksik etiket: takim
$ kubectl create deployment deneme --image=nginx:1.27 -n magaza --dry-run=server -o name
Warning: [deployment-etiketleri] eksik etiket: ortam # enforcementAction: warn olsaydı
Uygulama Constraint yaz
Bir K8sZorunluEtiket Constraint YAML'ı yaz: constraints.gatekeeper.sh/v1beta1; adı deployment-etiketleri; enforcementAction: deny; match.kinds altında apiGroups: ["apps"], kinds: ["Deployment"]; excludedNamespaces: ["kube-system"]; parameters.etiketler: ["takim", "ortam"].
Örnek çözümü göster
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sZorunluEtiket
metadata:
name: deployment-etiketleri
spec:
enforcementAction: deny
match:
kinds:
- apiGroups: ["apps"]
kinds: ["Deployment"]
excludedNamespaces: ["kube-system"]
parameters:
etiketler: ["takim", "ortam"]
Kendini test et
-
Yeni bir politikayı üretimde güvenle devreye almanın yolu nedir?
- Audit'i kapatmak
- Önce dryrun ya da warn ile başlayıp ihlalleri temizledikten sonra deny'a geçmek
- Doğrudan deny ile başlamak
- kube-system'e de uygulamak
Cevabı göster
Önce dryrun ya da warn ile başlayıp ihlalleri temizledikten sonra deny'a geçmek — Doğrudan deny, mevcut dağıtımların güncellenmesini bir anda durdurabilir.
-
Politikayı yalnızca uyaracak şekilde ayarla.
spec:
enforcementAction: ____
Cevabı göster
spec:
enforcementAction: warn
-
Eşleştir.
- deny
- Reddet
- warn
- Uyar, kabul et
- dryrun
- Yalnızca audit
- excludedNamespaces
- Hariç tutulanlar
Sıradaki ders: Özet - OPA