‫Umarım bu YAML meselesi biraz olsun mantıklı gelmeye
‫başlamıştır ve bu YAML'yi sıfırdan nasıl oluşturacağımızı
‫öğreneceğimiz yer burasıdır.
‫Kubernetes YAML formatını öğrenmeye
‫başladığımda, ilk olarak sadece kubernetes'teki
‫dokümantasyon örneklerini kullanarak
‫başladım. io sitesinden ya da belki başka yerlerden.
‫Diğer yerlerle ilgili olan şey, tıpkı Docker'da olduğu gibi, bu bloglar
‫ve diğer şeyler, hepsi güncelliğini yitiriyor.
‫Kubernetes ile ilgili olan şey, özellikle dağıtımlar,
‫podlar ve diğer temel şeyler gibi şeyler söz
‫konusu olduğunda, bu şeylerden bazılarının zaman içinde değişmiş
‫olmasıdır. Formatlarını değiştirdiler.
‫API'deki sürümler değişti.
‫Güncel konular üzerinde kalmak
‫istiyoruz, bu da sıfırdan nasıl başlayacağınızı bilmeniz
‫gerektiği anlamına geliyor. Dosyalarınızın ne zaman değişmesi gerektiğini, herhangi
‫bir şeyin değişip değişmediğini görmek için rastgele gidip belgeleri
‫yeniden okumak yerine nasıl anlarsınız, değil mi?
‫Bu kısım, sanırım, bu şeyleri ve önceden var olan
‫bir şablonu kullanmadan bir dosyayı nasıl
‫oluşturacağımı anlamamın biraz zaman
‫aldığı bir beceri. Son derste dört türden bahsetmiştik
‫ve ilk olarak odaklanmak istediğim şey kaynak türü
‫olan türün temel anahtarıdır.
‫Çünkü bir kümedekilerin bir listesini alabilirsiniz.
‫Kurulum test kümelerimizde, bunların çoğu hepimiz
‫arasında aynı olacaktır.
‫Üretime geçtiğinizde ve kümenize üçüncü
‫taraf şeyler eklemeye başladığınızda, üçüncü taraf
‫araçlar API'ye yeni kaynak nesneleri ekleyebileceğinden,
‫bu liste kullandığınız şeye bağlı olarak uzayacaktır.
‫Bir kubectl api-resources yapalım.
‫Saatlerce üzerinde konuşabileceğimiz
‫en az düzinelerce farklı nesneyi geri alacaksınız.
‫Bunu yapmayacağız.
‫Deployments, Pods, ReplicaSets ve Services
‫gibi birkaç tanesinden zaten bahsetmiştik.
‫Bunlar standart kullanıma hazır şeyler.
‫Bunun geri kalanının çoğuna asla dokunamayabilirsiniz.
‫Kubernetes'te o kadar çok şey var ki
‫aslında hiçbir zaman tüm gücüne ihtiyaç
‫duymayabilirsiniz. Bunların hepsini gözden geçirmeniz ve ezberlemeniz
‫o kadar da önemli değildir.
‫Sağ tarafta bu tür bir sütun göreceksiniz.
‫Bu bizim YAML dosyamıza girecek olan şey.
‫Eğer bir pod oluşturmak istiyorsak, burada bir tür pod olduğunu
‫görebilirsiniz. Eğer bir deployment oluşturmak
‫istiyorsak deployment diye bir tür var.
‫Ayrıca API grubunu da göreceksiniz.
‫Bu API grubu API sürümü ile ilgilidir.
‫Bunu birazdan göreceksiniz.
‫Bu bize tam olarak kuralcı bir kılavuz
‫vermiyor. Ancak, burada oturuyor olsaydım
‫ve bir pod oluşturmam gerektiğini söyleseydim, kaynak türündeki podlar
‫için bu listeye bakardım.
‫Nasıl bir şey olduğunu görürdüm.
‫YAML'ime koymam gerektiğini bildiğim şey bu.
‫Herhangi bir API grubu olup olmadığına bakardım çünkü
‫bu bana kullanabileceğim sürümleri nerede bulacağımı söyleyecektir,
‫çünkü muhtemelen bir dağıtım için farklı
‫belgeler görmüşsünüzdür.
‫Çünkü dağıtımların zaman içinde birden fazla sürümü olmuştur.
‫Bir v1beta1, bir v1beta2 vardı.
‫Aslında API'de bile yer değiştirdi çünkü eski ve yeni şeyler
‫var, bu yüzden biraz kafa karıştırıcı olabilir.
‫Bu listeye bakarsanız, aslında burada yukarıda
‫ve burada aşağıda dağıtımlar olduğunu
‫göreceksiniz.
‫İkisi arasındaki tek fark bu orta
‫sıra, API grubu.
‫Bu API grubu, API'de bu tür bir kaynağa erişilebilecek,
‫oluşturulabilecek, silinebilecek
‫vb. yerdir.
‫Bu biraz karmaşık bir konu, ancak bu konularla çalışmaya
‫başladığınızda, burada iki tür dağıtım
‫görmek gibi durumlarla karşılaştığınızda biraz zaman harcamanız gerekecek.
‫Hangisini kullanmalıyım?
‫Peki, gidip araştırma yapmaya başlıyorsunuz ve
‫ya dokümantasyonda ya da birazdan bakacağımız API kılavuzunun
‫kendisinde bulacaksınız.
‫Birinin kullanımdan kaldırıldığını ve birinin
‫diğerine geçtiğini söyleyeceği şeyleri göreceksiniz
‫ve bu durumda dağıtımlarda, en son sürümdeki yeni
‫sürümü uygulamanın API'sidir.
‫Bununla birlikte gelen bir sonraki komut,
‫tür ve API sürümü hakkında daha iyi bir resim elde
‫etmemize yardımcı olmak için kubectl API sürümleri
‫komutudur.
‫Bu bize endişelenmemiz gereken API'lerin farklı
‫sürümlerinden oluşan daha kısa bir liste
‫verir. Dağıtımlar söz konusu olduğunda,
‫burada tanıdık bir şey olduğunu göreceksiniz.
‫Hatırlayın, uygulamalar için bir tane ve dağıtımlar için bir
‫tane uzantı olduğunu görmüştük.
‫Onları burada göreceğiz.
‫Teknik olarak, v1beta1 API'sinin uzantıları
‫vardır. Orada üç farklı versiyonunu görebileceğiniz
‫uygulamalar API'si var.
‫Muhtemelen eski betaları değil, V1 uygulamalarını
‫kullanmak istersiniz.
‫Ancak, API'nin yenilerini çıkarırken bu API'nin kullanımdan
‫kaldırılmış sürümlerini nerede tuttuğunu görebilirsiniz.
‫Bu şekilde, temel olarak, eski YAML'niz birçok sürüm geçene
‫kadar bozulmaz ve artık ihtiyaç duyulmadığında API'den
‫bir şeyler çıkarırlar.
‫Kubernetes'in ilk günlerindeyseniz, YAML'nizin
‫ömrü boyunca tipik olarak gerçekleşen şey,
‫API sürümü için extensions/v1beta1 yazan bir
‫YAML dosyası kullanıyor
‫olmanız ve türün dağıtımlar olmasıdır.
‫Ancak, bu API değiştiğinden ve artık
‫buna apps API adını verdiklerinden ve sürüm
‫farklı olduğundan, yine de bir tür dağıtıma sahip
‫olursunuz, ancak API sürümünü artık apps/v1 olarak
‫değiştirirsiniz.
‫Bunu bilmemin yolu, arama yapmak zorunda kalmam
‫ve belgelere bakmanızdır.
‫Örneklerde görüyorsunuz ki, oh hey.
‫Şimdi uygulamalar yazıyor. Artık uzantılar yazmıyor.
‫Bu çok garip. Gidip bakayım. Sonra GitHub'da bu konu
‫hakkında konuşan bazı Kubernetes sorunları bulursunuz.
‫Biraz dağınık. Her zaman değişen her şeyin
‫net bir kullanımdan kaldırma listesi yoktur,
‫bu nedenle sorun teşkil eden bir şey olabilir.
‫Bunun işe yaramadığını anlamanın yolu, eski
‫bir YAML'yi alıp yeni bir kümeye uyguladığınızda
‫size artık bu API sürümünü desteklemediğini
‫söylemesidir. Ya da bu türün ne olduğunu bilmiyorum.
‫Böylece, size sorunun bu olduğunu bildiren güzel bir
‫hata verecektir. O zaman, muhtemelen hızlı
‫bir arama yapabilir ve neyin eski olduğunu bulabilirsiniz.
‫Anlatmak istediğim, tür ve API sürümünün
‫birlikte kullanılarak hangi kaynağı alacağınıza
‫ve bu kaynak için hangi API sürümünü kullanabileceğinize
‫karar verilmesidir.
‫Bunlar, bir YAML oluşturmadan önce çözmeniz
‫gereken ilk iki şeydir.
‫Bunu yaptıktan sonra meta veri kısmını
‫oluşturacaksınız. Burada sahip olmanız gereken tek şey,
‫oluşturacağınız kaynağın adıdır.
‫Sadece güzel bir isim ver.
‫Sonra, spesifikasyona gideceksiniz. Tüm aksiyon burada gerçekleşir
‫çünkü spesifikasyon, oluşturduğunuz kaynağa bağlı olarak
‫tamamen farklı olacaktır.
‫Bir dağıtım yerine depolama alanı oluşturuyorsanız, YAML'nin nasıl oldukça
‫farklı olacağını tahmin edebilirsiniz,
‫değil mi?
‫Bir sonraki derste, farklı kaynaklar için YAML'nize
‫koyabileceğiniz tüm farklı özelliklerle ilgili API'yi
‫keşfetmenize yardımcı olacak bazı kubectl komutlarını
‫inceleyeceğiz.