Validation
- Docker & Kubernetes kursu
- Uzman
- Ders 11/47
- 4 dk
CRD doğrulama kurallarını öğrenirsin.
Validation
CRD'nin openAPIV3Schema'sı API sunucusunda doğrulama yapar: türler, zorunlu alanlar, sınırlar, izinli değerler. Geçersiz nesne kaydedilmeden reddedilir; denetleyicinin bozuk veriyle uğraşması önlenir:
spec:
type: object
required: [veritabani, takvim]
properties:
veritabani: {type: string, minLength: 1}
takvim: {type: string, pattern: "^[0-9*/,-]+( [0-9*/,-]+){4}$"}
saklamaGun: {type: integer, minimum: 1, maximum: 365, default: 7}
tur: {type: string, enum: [tam, artimli]}CEL kuralları
Alanlar arası kurallar için şemaya CEL ifadeleri (x-kubernetes-validations) yazılır. Webhook yazmadan karmaşık doğrulama yapılabilir:
spec:
type: object
x-kubernetes-validations:
- rule: "self.tur != 'artimli' || self.saklamaGun <= 30"
message: "artımlı yedekler en fazla 30 gün saklanır"
$ kubectl apply -f yedek.yaml
The Yedek "magaza-gece" is invalid: spec: Invalid value: artımlı yedekler en fazla 30 gün saklanırUygulama Doğrulamayı sıkılaştır
Bir CRD doğrulama tanımının spec özelliğini yaz (spec: ile başlayarak): type: object; required: [veritabani, takvim]; properties altında veritabani (type: string), takvim (type: string) ve saklamaGun (type: integer, minimum: 1, maximum: 365).
Başlangıç kodu
# buraya yazÖrnek çözüm
spec:
type: object
required: [veritabani, takvim]
properties:
veritabani:
type: string
takvim:
type: string
saklamaGun:
type: integer
minimum: 1
maximum: 365Beklenen çıktı
customresourcedefinition.apiextensions.k8s.io/yedekler.ornek.com configured $ kubectl apply -f hatali-yedek.yaml The Yedek "deneme" is invalid: spec.saklamaGun: Invalid value: 500: spec.saklamaGun in body should be less than or equal to 365
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 saklamaGun: 500 olan bir Yedek uygulanırsa ne olur?
- API sunucusu "must be less than or equal to 365" hatasıyla reddeder Doğru cevap
- 365'e kırpılır
- Kaydedilir, denetleyici düzeltir
- Yok sayılır
Açıklama: Doğrulama kaydetmeden önce yapılır.
2 Zorunlu alanları belirt.
spec:
type: object
____: [veritabani, takvim]
spec:
type: object
required: [veritabani, takvim]
Açıklama: required, OpenAPI'de zorunlu alan listesidir.
3 Eşleştir.
| Kavram | Anlamı |
|---|---|
required |
Zorunlu alanlar |
minimum/maximum |
Sayı sınırı |
enum |
İzinli değerler |
x-kubernetes-validations |
CEL kuralı |