İçeriğe geç
%100 Gizlilik — Dosyalar Cihazınızda Kalır
>_
Türkçe

Kubernetes YAML Doğrulayıcı

kubectl apply yapmadan önce bir veya birden fazla Kubernetes manifestosunu (--- ile ayrılmış) yapıştırın ve gerçek şemaya göre doğrulayın.

Buraya bir .yaml/.yml dosyası bırakın veya manifesto metnini yukarıya yapıştırın.

"---" ile ayrılmış birden çok manifesto ayrı belgeler olarak doğrulanır.

Gelişmiş seçenekler

Ayrıştırma ve doğrulama tarayıcınızda çalışır — genel bir CDN'den yalnızca kaynak şeması indirilir, manifestonuz asla indirilmez.

Yukarıya bir Kubernetes manifestosu yapıştırın (veya örneği yükleyin); doğrulama sonuçları burada görünecek.

Kubernetes manifesto hatalarını kubectl'den önce yakalamak

Reddedilen bir `kubectl apply`, bir Kubernetes manifestosundaki hatanın genellikle ilk görünür olduğu andır — o sırada çoğunlukla dağıtımın ortasındasınızdır ve az önce düzenlediğiniz YAML dosyasıyla bariz biçimde eşleşmeyen bir JSON Şema doğrulama yolunu (`spec.template.spec.containers[0].image: Required value`) alıntılayan bir hata mesajına bakarsınız. Aynı türden hatayı, ilgili satır vurgulanarak daha erken yakalamak bunu bağlam değiştirmeden beş saniyelik bir düzeltmeye çevirir.

YAML'ın kendi söz diziminin çoğu yapılandırma biçiminde görülmeyen sivri yanları vardır: girinti anlamlıdır ve tutarsız sekme/boşluk kullanımı bazı durumlarda hata vermek yerine sessizce farklı (yanlış) bir yapı üretir; birden çok kaynaklı uzun bir dosyada `---` belge ayırıcılarının takibi kolayca kaybedilir; fazladan bir iç içe geçme düzeyi geçerli YAML gibi okunur ama Kubernetes için tamamen başka bir anlama gelir. Bu araç, ayrıştırma boyunca tam kaynak konum bilgisini koruyan bir yaklaşımla ayrıştırır; böylece söz dizimi sorunu "200 satırlık bu dosyanın bir yerinde" değil, gerçekten oluştuğu satırda bildirilir.

Kullanımdan kalkmış apiVersion'lar daha yavaş işleyen bir tuzaktır: `extensions/v1beta1` Deployment'ları, `apps/v1beta1`/`apps/v1beta2` StatefulSet ve DaemonSet'leri ile `networking.k8s.io/v1beta1` Ingress'lerinin hepsi hâlâ kusursuz geçerli YAML olarak ayrıştırılır ve eski kümelerde çalışıyordu — ta ki küme, Kubernetes'in eski API grubunu tamamen kaldırdığı sürümün ötesine yükseltilene kadar; o noktada bunları kullanan her manifesto önceden uyarı verilmeden uygulanamaz hâle gelir. Bunları düzenleme sırasında yakalamak (önerilen yeni apiVersion ile birlikte), küme yükseltmesi sırasında öğrenmenin önüne geçer.

Gerçek Kubernetes OpenAPI şartnamesine karşı şema doğrulaması gerisini yakalar: sayı yerine tırnaklı dize olarak kalmış bir `replicas` alanı, geçerli aralığın dışında bir `containerPort`, manifestolar arasında kopyala-yapıştır yaparken silinmiş bir Deployment'taki `spec.selector` gibi zorunlu bir alan. Bunların hiçbiri YAML söz dizimi hatası değildir — dosya sorunsuz ayrıştırılır — ve tam da bu yüzden ayrı bir şema geçişi, dosyaya hızlıca göz atarak genellikle fark edilmeyeni yakalar.

Sık sorulan sorular

Bu araç `kubectl apply --dry-run` veya `kubeconform` yerine geçer mi?

Hayır. `kubectl apply --dry-run=server`, gerçek kümenizin API sunucusuna (kurulu CRD'ler ve admission webhook'lar dahil) karşı çalışan tek denetimdir; `kubeconform`/`kubeval` ise CI hatları için geliştirilmiş olgun CLI araçlarıdır. Bu araç aynı türden şeyleri — YAML söz dizimi, şema yapısı, kullanımdan kalkmış apiVersion'lar — bir tarayıcı sekmesinden, henüz herhangi bir yere karşı `kubectl` yapılandırmadan ya da başkasının gönderdiği bir manifestoyu incelerken denetler.

Şemalar nereden geliyor?

Kubernetes'in kendi OpenAPI kaynaklı JSON Şemalarının topluluk tarafından sürdürülen, otomatik güncellenen bir yansıması olan `yannh/kubernetes-json-schema` projesinden; seçtiğiniz Kubernetes sürümü için gerektiğinde herkese açık bir CDN'den alınır. Manifestonuza dair hiçbir şey bir yere gönderilmez — yalnızca (sürümlü, herkese açık) şema dosyasının kendisi indirilir; o tür/sürümü doğrulayan her kullanıcı için aynı dosyadır.

Neden yalnızca 10 kaynak türü?

Deployment, Service, Ingress, ConfigMap, Secret, StatefulSet, DaemonSet, Job, CronJob ve PersistentVolumeClaim, elle yazılan manifestoların büyük çoğunluğunu kapsar. Diğer türler de tam YAML söz dizimi denetimi ve kullanımdan kalkmış apiVersion algılaması alır — yalnızca henüz şema yapısı doğrulaması yapılmaz.

YAML'ım tarayıcımdan hiç çıkıyor mu?

Hayır. Ayrıştırma ve şema doğrulaması bu sekmede düz JavaScript ile çalışır — bu aracın yaptığı tek ağ isteği, seçtiğiniz kaynak türü ve Kubernetes sürümü için herkese açık JSON Şema dosyasını indirmektir; manifesto içeriğiniz asla gönderilmez.

İlgili araçlar