Rego dili
- Docker & Kubernetes kursu
- Uzman
- Ders 32/47
- 4 dk
Rego politika dilini öğrenirsin.
Rego dili
OPA politikaları Rego diliyle yazılır. Rego bildirimseldir: bir kural, içindeki tüm ifadeler doğruysa tetiklenir. Gatekeeper'da ihlaller violation kuralıyla üretilir; denetlenen nesne input.review.object'tedir:
package image_kaynagi
violation[{"msg": msg}] {
c := input.review.object.spec.template.spec.containers[_]
not startswith(c.image, "ghcr.io/sirket/")
msg := sprintf("izinsiz image: %v", [c.image])
}[_] dizideki her öğe için kuralı dener; not olumsuzlar; := değişken atar.
Rego'yu yerelde sınamak
opa eval bir politikayı örnek bir girdiyle yerelde çalıştırır; opa test Rego ile yazılmış birim testlerini çalıştırır. Politikalar cluster'a gitmeden önce böyle sınanır:
$ opa eval -d politika.rego -i girdi.json "data.image_kaynagi.violation"
{"result": [{"expressions": [{"value": [{"msg": "izinsiz image: nginx:1.27"}]}]}]}
$ opa test . -v
data.image_kaynagi.test_izinli_image: PASS (1.2ms)
data.image_kaynagi.test_izinsiz_image: PASS (0.9ms)Uygulama Politikayı yerelde sına
İki komut yaz: politika.rego ve girdi.json ile "data.image_kaynagi.violation" sorgusunu opa eval ile çalıştır (-d, -i); mevcut klasördeki testleri ayrıntılı (-v) çalıştır.
Başlangıç kodu
# buraya yazÖrnek çözüm
opa eval -d politika.rego -i girdi.json "data.image_kaynagi.violation"
opa test . -vBeklenen çıktı
{"result": [{"expressions": [{"value": [{"msg": "izinsiz image: nginx:1.27"}]}]}]}
data.image_kaynagi.test_izinli_image: PASS (1.2ms)
data.image_kaynagi.test_izinsiz_image: PASS (0.9ms)
PASS: 2/2
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Yukarıdaki kural iki container'dan biri izinsiz image kullanıyorsa kaç ihlal üretir?
- 1 Doğru cevap
- 2
- 0
- Hata verir
Açıklama: Kural her container için ayrı denenir; yalnızca koşulu sağlayan için ihlal oluşur.
2 Dizideki her container'ı dene.
c := input.review.object.spec.template.spec.containers[____]
c := input.review.object.spec.template.spec.containers[_]
Açıklama: _ adsız bir değişkendir; her indeks için kural denenir.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
violation |
İhlal kuralı |
input.review.object |
Denetlenen nesne |
not |
Olumsuzlama |
opa test |
Birim testleri |