‫Dürüst olacağım.
‫Kubernetes YAML'ı ilk gördüğümde gerçekten gözüm
‫korkmuştu.
‫Compose formatından çok daha karmaşık görünüyordu.
‫Bunun iyi bir sebebi var.
‫Tonlarca esneklik katıyor, onunla yapabileceğiniz
‫tonlarca daha fazla şey var. Ama bunun bir bedeli var.
‫Bu, temel bilgileri ve bu dosyaların nasıl yapılacağını öğrenmenin zorluğunu
‫aşmaktır. Bu dosyalara ilk bakmaya
‫başladığınızda, o kadar çok şey var ki, bu dosyaları ilk elime aldığımda
‫neler olup bittiğinden bile emin değildim.
‫Eğer bu konuda biraz kafanız karıştıysa
‫bunu tamamen anlıyorum, sadece bu videoları tekrar
‫izlemeye çalışın çünkü bunu Kubernetes YAML'ı öğrenmek için
‫en iyi olduğunu düşündüğüm şekilde parçalara ayırmaya
‫çalışacağım.
‫İlk olarak, bunu teknik olarak JSON'da yazabilirdik,
‫ancak YAML insanların manipüle etmesi ve okuması için
‫daha kolay olma eğilimindedir ve JSON bilgisayarlar
‫için daha iyidir.
‫Arka planda olan şey, biz insanlar için standart
‫olan YAML yazmak ve daha sonra bunu JSON'a
‫dönüştürmektir. Teknik olarak JSON yazabilirsiniz,
‫ancak Kubernetes'te insanların yazması için
‫standart YAML'dir.
‫Daha önce de söylediğim gibi, bu dosyaları karıştırabilir
‫veya eşleştirebilirsiniz. Tek bir dosyada birçok farklı kaynağa sahip olabilir
‫ve kaynak başına tek bir dosyaya sahip olduğunuzda bunun
‫tersini yapabilirsiniz.
‫Gerçekten önemli değil. Sana kalmış.
‫Komutlar aynı şekilde çalışır.
‫Biz bunlara tezahür diyoruz.
‫Bir kaynağın tam açıklaması bir bildirimdir
‫ve bu bildirimin gereksinimleri vardır.
‫Bu gereksinimleri YAML dosyası içindeki kök anahtarlar için
‫göreceksiniz.
‫Kök, hattın en başında oldukları anlamına gelir.
‫Bu API sürümü ile başlar.
‫Çok naziksin.
‫Meta veri var. Ve bir de spesifikasyon var.
‫Dolayısıyla, bu kaynakların çalışması için bunları her
‫dosyada görmeniz gerekir. Şimdi de komut satırından bazı hızlı
‫örneklere bakalım.
‫Docker Mastery repo'nuzdaysanız, bu örneklerden bazılarını
‫buraya koyduğum bir k8s-yaml dizini
‫göreceksiniz.
‫Bu dizini göremiyorsanız, depodaki en son güncellemeleri
‫almak için bir git-pull yapmanız gerekebilir.
‫Bu
‫dersi aldıktan sonra depoda bazı değişiklikler yaptıysanız, sorun değil.
‫Bu değişiklikleri geçici olarak saklamak için bir git-stash kullanabilir ve
‫daha sonra git-pull yapabilirsiniz.
‫Ya da sadece farklı bir dizine kopyalayabilirsiniz.
‫Kursun
‫bu bölümü için farklı bir konuma klonlayın, çünkü bu Kubernetes
‫öğesi orijinal öğeden daha yeni.
‫Dolayısıyla, bazılarınız bu konuya daha sonra geri dönebilir ve en
‫son güncellemelere sahip olmayabilir.
‫Buradaki ilk örnek sadece basit bir kapsüldür.
‫Bu muhtemelen oluşturabileceğimiz en basit YAML'dir.
‫Bu kursta daha önce de söylediğim gibi, çok fazla pod yapmayacaksınız
‫çünkü bu sadece bir docker çalıştırması gibi oluşturmaktır.
‫Bu gerçekten yapmak isteyeceğiniz bir şey değil.
‫Sürekli güncelleme yok. Bu bir konuşlandırma
‫değil, doğru. Sorun gidermeniz gerekirse veya yerel olarak
‫basit bir şey çalıştırmanız gerekirse, bunu yapabilirsiniz.
‫Aynı dört gereksinime sahip olduğunu fark edeceksiniz.
‫API sürümü, tür, meta veri ve
‫teknik özellik.
‫Bunların neler olduğunu bir sonraki derste konuşacağız.
‫Şimdilik, sadece bu türün nasıl bakla
‫olduğunu görmenizi istiyorum. Daha sonra meta veriler
‫name niteliğine sahiptir.
‫Bu anahtar, tüm YAML nesnelerinin gerekli
‫anahtarıdır.
‫Hepsinin bu isme sahip olması gerekir, tıpkı docker run'ın bir isme sahip olması
‫gerektiği gibi. Tüm Docker nesnelerinin bir adı olmalıdır.
‫Kubernetes ile aynı. Buradaki özellik et.
‫Bu konuya birazdan geleceğiz. Bir dağıtıma daha
‫göz atalım.
‫Burada aynı konteynerin iki kopyasına
‫sahip tek bir dağıtım var. Muhtemelen iki katı büyüklüğünde
‫ama iyi bir nedeni var.
‫Çünkü düşünürseniz, bu dağıtım kaynağını
‫oluşturuyorsunuz ve ardından bu da ReplicaSet'i
‫oluşturuyor. Bu da kapsülleri oluşturuyor.
‫Spesifikasyon alanı biraz
‫daha karmaşık hale geliyor çünkü tanımlamamız
‫gereken daha fazla şey yapıyor. API sürümümüzün biraz farklı olduğunu
‫da fark edeceksiniz çünkü bu türle
‫ilgilidir ve bu durumda tür bir dağıtımdır.
‫Bu bir tür kaynak anlamına geliyor.
‫API sürümü ise bu tür için
‫API sürümüdür. Geri kalanı umarım sizin için
‫biraz anlamlıdır.
‫Compose dosyalarına biraz benziyor ama
‫tabii ki format farklı.
‫Bu yüzden, özellikle Compose ve Kubernetes arasında ileri geri çalışıyorsanız,
‫kafa karıştırıcı olabileceğini anlıyorum.
‫Bu örnekte, aynı dağıtım türü için
‫hizmeti ve dağıtımı
‫tek bir dosyada birleştirdim.
‫İkisini birbirinden ayırmak için üç çizgi kullandığınızdan, tek bir dosyada
‫birden fazla manifeste bu şekilde
‫sahip olursunuz. Bu, Kubernetes'e
‫hey, bu nesne benzersizdir diyecek bir tür YAML
‫şeyidir. Bir sonraki bölüm
‫yeni bir nesnedir. O kadar asi bir hal alana kadar burada
‫istediğin kadar kalabilirsin ki, onu dışarı çıkarmak zorunda kalırsın.
‫Bu ilk bölümde, API sürümünün hizmet kaynağı türünün
‫V1'i olduğunu göreceksiniz.
‫Buradaki nazik kelimesi muhtemelen sadece kaynak olabilir,
‫ancak buna nazik demişler.
‫Metadata yine burada. Bir ismi olmalı.
‫Spesifikasyon ve bu, hangi kaynağı oluşturduğunuza bağlı
‫olarak tamamen farklı olacaktır.
‫Daha sonra daha önce yaptığımıza benzer bir
‫dağıtım, bu durumda üç kopyam var ve biraz
‫farklı bir adı var, ancak bunun dışında aynı Nginx.
‫Sadece buna bakarak, vay canına diyorsunuz. Nasıl başlayacağımı bilmem
‫için saklayacağım şablonlara ihtiyacım olmalı çünkü bu oldukça
‫karmaşık görünüyor.
‫Tüm farklı düzinelerce ve düzinelerce kaynak türü
‫için tüm bunları ve her birinin nasıl ayarlanması gerektiğini
‫açıklayan tek bir doküman sayfası yoktur.
‫Bu maalesef Compose'da yaşadığımız bir şey, uzun
‫olmasına rağmen güzel bir single oldu.
‫web sayfasındaki Docker dokümanlarında Compose
‫formatının tamamı için. Bu durumda, Kubernetes ile
‫bunu elde edemiyoruz çünkü çok fazla karmaşıklık
‫var ve hepsi tek bir yerde değil.
‫Tek bir uygulama bile değil. Aslında CRD adı verilen ve daha sonra
‫bahsedeceğimiz daha fazla şey ekleyerek daha fazla kaynak
‫türü ekleyebilirsiniz.
‫Bu konuya girebiliriz. Bu temel olarak Kubernetes'i daha fazla kaynak
‫türüyle genişletebileceğiniz anlamına gelir.
‫Bu YAML'ye daha fazla seçenek ekleyecek daha fazla
‫üçüncü taraf malzeme. Bu Kubernetes'e özgüdür.
‫Swarm ve Docker buna izin vermez.
‫Biçimleri, kümenizde neyin kurulu olduğuna bağlı olarak
‫bunun oldukça genişletilebilir olduğu yerlerde ayarlanır.