‫Kubernetes ile sahip olduğumuz muazzam esneklik
‫nedeniyle, Kubernetes küme sisteminde işinizi nasıl
‫yapacağınıza dair birçok stil vardır.
‫Beni daha önce bu konuda konuşurken duymuştunuz, değil mi?
‫İş akışınıza uyacak farklı yollar olduğunu ve farklı
‫komutları farklı şekillerde kullanabileceğinizi
‫söyledim. Dolayısıyla, bunu öğretmeye çalıştığınızda
‫bu zorlayıcı olabilir çünkü insanlar gerçekten nasıl kullanmaları gerektiğini
‫bilmek isterler. En iyi yol nedir?
‫En iyi uygulama nedir? Bu zor çünkü gerçekten
‫ne istediğinize bağlı.
‫Bu, cazip olmayan eski bir sistem.
‫Yani, bir şeyler yapmanın pek çok farklı yolu var.
‫İşte burada bunu kırmaya çalışıyorum.
‫Dolayısıyla, bu kilit önemde bir konu.
‫Ancak, bunların hepsi sadece slayt öğrenimi.
‫Birkaç dakika boyunca size bu kavramları açıklamaya
‫ve özellikle Kubernetes için ne anlama geldiklerini anlatmaya
‫çalışacağım.
‫Önerilen yaklaşımlara geçmeden önce, Kubernetes'in
‫nasıl kullanılacağına dair temelde önerilen
‫üç strateji olacak.
‫Bir sonraki dersin ne olduğunu bilmeniz için bu
‫terimlerden bazılarını burada açıklamam gerekiyor.
‫Bunu birçok blog yazısında ve dokümantasyonda
‫göreceksiniz. Emredici ve Bildirici.
‫Kubernetes ile ilgili olarak bunu açıklamanın en iyi yolu, geri çekilmek
‫ve sadece yazılım açısından ne anlama geldiğini
‫söylemektir.
‫Zorunlu olarak yazılım yazarken, bu programın
‫nasıl çalıştığına, her bir adıma, sırayla,
‫birbiri ardına odaklanırız.
‫Yazılıma yönelik bildirimsel bir yaklaşımdan bahsettiğimizde,
‫daha çok yazılımın neyi başarması gerektiğini anlatmış oluruz.
‫Nihai hedefleri nelerdir?
‫Oraya nasıl ulaştığı çok da umurumuzda değil, sadece oraya
‫ulaşmış olması önemli. Bir benzetme yapalım.
‫Bir fincan kahve istediğinizi düşünün.
‫Her sabah uyandığımda, o ilk fincanı
‫arıyorum. Eğer kendim yapacaksam, bunu zorunlu
‫olarak yapmam gerekecek.
‫Biraz su kaynatmayı düşünmem gerekecek.
‫Bir sonraki adım ne? Biraz kahve çekirdeğine ihtiyacım var.
‫O zaman o çekirdekleri öğütmem lazım. Tam olarak ne kadarına
‫ihtiyacım var? Mükemmel bir fincan kahve elde etmek
‫için bu çekirdeklerin üzerine ne kadar su dökmeliyim, vb.
‫Her bir adımı gözden geçiriyorum ve adım adım nasıl yapıldığını
‫düşünüyorum.
‫Bu şart. Kubernetes'e baktığınızda, bundan
‫birazdan bahsedeceğiz.
‫Bildirimsel mod. Bunu daha çok bir kahve dükkanındayım
‫ve bir baristayla konuşuyorum gibi düşünün.
‫Onlara sadece soruyorum.
‫Bir fincan kahve istiyorum.
‫Benim tek görevim bir fincan kahve
‫istemek ve bunu çözmek onlara kalmış.
‫Sıfırdan mı yapmam gerekiyor? Tencerede önceden yapılmış
‫bir tane var mı? Yoksa tencere çok mu eski?
‫Yapabilirler. yapabilirler. Belki de bir fincan kahve yapmak için
‫üç kez yeniden denemek zorunda kalırlar çünkü karıştırmışlardır.
‫Sorun değil.
‫Nasıl yaptıklarını sormuyorum.
‫Bana bir fincan kahve yapmalarını istiyorum.
‫Bunu Kubernetes'te kullanacağınız komutlara
‫uygulayalım. Şu ana kadar büyük ölçüde öğrendiğiniz
‫şey olan zorunluluğa odaklanalım çünkü herhangi bir aracı
‫öğrenmeye başlamanın yolu zorunluluktur.
‫Bunları
‫yapılması gereken sırayla yapacaksınız ve nasıl yapılacağına dair
‫açık talimatlar vereceksiniz.
‫Bu komutlar, kubectl run, create deployment ve henüz
‫ele almadığımız update veya edit gibi komutlardır.
‫Bunlar, bildiğiniz bir durumda başlamanızı
‫sağlayacak farklı komut türleridir.
‫Bir dağıtım oluşturma komutu kullandığınızda,
‫dağıtımın henüz oluşturulmadığını bilirsiniz.
‫Böylece, yaratıcıyı kullanıyorsunuz, doğru.
‫Bir şeyi güncellemek veya düzenlemek istiyorsanız, bunu yapmak için
‫açıkça bu komutu kullanıyorsunuz.
‫Burada komut satırı ve CLI'ya yazmak için güzel olan şey, ister
‫oluşturma, ister güncelleme veya silme olsun, farklı eylem türleri
‫için farklı komutların kullanılmasıdır.
‫Yaptığımız eylemi bildiğimiz için beynimizin bunu hatırlaması
‫daha kolaydır.
‫Nesnenin veya kaynağın durumunu zaten biliyorsanız
‫ve araçları kullanmaya yeni başlıyorsanız, zorunluluğun
‫daha kolay olduğunu unutmayın.
‫Yani, açıkça düşünmek istersiniz, Tamam, bir hizmet oluşturmam gerekiyor
‫ve bu hizmetin bir yük dengeleyici olması gerekiyor.
‫Bu tür şeyleri bilirsin. O zaman, insan zihnimizde bu
‫şeyleri CLI'da yazmak bizim için daha kolay.
‫Ne yazık ki otomatikleştirmek
‫kolay değil. Bu tür işlerin en büyük dezavantajlarından
‫biri, otomatik bir komut dosyasının veya aracın,
‫"Bu istediğiniz bir güncelleme mi?" sorusunu otomatik olarak
‫ele almasının gerçekten zor olmasıdır.
‫Yoksa bu bir yaratım mı?
‫Yoksa bu bir silme işlemi mi? Burada ne yapmam
‫gerekiyor? Bu tür işleri otomatikleştirmek
‫bizim için zor. Kafamızda kolay.
‫CLI'da yazmak bizim için kolay. Otomatikleştirmek bizim için zor.
‫Unutmayın, bildirimsel, durumu gerçekten bilmediğimiz anlamına gelir.
‫Kahveyi unutma. Kahve var mı yok mu bilmiyorum.
‫Belki de çoktan hazırlamışlardır. Bazılarını
‫sıfırdan yapmaları gerekebilir.
‫Eyaleti bilmiyorum.
‫Ben sadece istediğim sonucu biliyorum.
‫Bu, bildirimsel bir model için gerçekten uygun.
‫Burada bizim için ve otomasyon için bazı avantajlar,
‫aynı komutun, genellikle apply komutunu, kubectl
‫apply kullanacak olmanızdır.
‫Aynı komut, kaynakları oluşturuyor, güncelliyor ya
‫da muhtemelen siliyor olmamızdan bağımsız olarak
‫kullanılabilir. Eğer YAML'ye bakmaya başladıysanız,
‫ki birazdan bu konuya gireceğiz.
‫Bu YAML tek bir dosyada da olabilir.
‫Çok sayıda farklı kaynak türünü tek bir YAML'de
‫bir araya getirebilirsiniz. Ya da bunları tek bir dizindeki her
‫YAML dosyasında tek bir nesne olarak ayırabilir ve tüm dizini uygulamak
‫için tek bir komut kullanabilirsiniz.
‫Orada bir sürü seçenek var.
‫Bu yöntemi kullanmaya başlamamamızın sebeplerinden
‫biri, her zaman ihtiyaç duymamamızdır.
‫Bu biraz karmaşıklık yaratır çünkü bunu yapmadan
‫önce bu dosyayı ve içindeki tüm öğeleri oluşturmanız
‫gerekir.
‫Bunlara sıfırdan sahip olmayabilirsiniz ve bunları sadece
‫bir kapsül veya başka bir şey oluşturmak için
‫oluşturmak istemezsiniz, değil mi? Dolayısıyla, CLI ile başlamak mantıklıdır.
‫Standart emir komutlarını kullanmak mantıklıdır.
‫Ancak, üretim ve otomasyon hakkında düşünmeye
‫başladığınızda ve bu tekrarlayan güncelleme işlemini
‫tekrar tekrar yaptığınızda, tamam, diye düşünmeye
‫başlarsınız. Daha açıklayıcı bir yaklaşıma ihtiyacım var.
‫Buradaki zorluk, tüm bu YAML anahtarlarını ve ayarlarını
‫bilmek zorunda olmanız ve sıfırdan başlayıp zaman içinde
‫bu YAML'ye koymanız gereken tüm yollar ve şeyler konusunda uzmanlığınızı
‫geliştirmenizdir.
‫Burada harika olan şey, yatırımınızın boşa
‫gitmemesidir. Kubernetes'te şu anda kubectl
‫run veya create gibi CLI'ları yazarak bazı temel
‫şeyleri yapabiliyorsunuz.
‫Bu süre boyunca, çıktı komutuyla YAML'ye bakıyorsunuz,
‫-o yaml'ı hatırlayın.
‫YAML çıktısına bakabilirsiniz.
‫YAML'ye bakabileceğimiz başka yollar da var.
‫YAML'nin neye benzemesi gerektiğine dair bilgimizi
‫geliştirmeye başlarız, böylece üretim dünyasına girdiğinizde,
‫temelde tüm gün YAML yaptığınızda, bunun nasıl ayrıştırıldığına
‫biraz daha aşina olursunuz.
‫Bu
‫YAML yolu, orkestrasyonunuzu otomatikleştirmenin en kolay yoludur.
‫Bu aynı zamanda mutluluğa ulaşmanın en
‫kolay yoludur. Bu kursta get-ops hakkında
‫çok fazla konuşmayacağız. Bunu Google'da aratmanızı
‫tavsiye ederim çünkü bu, get aracını doğruluk
‫kaynağınız olarak kullanan bir tür DevOps çalışmasıdır.
‫Temel olarak, ortamınızda her değişiklik yapmak istediğinizde,
‫bazı YAML'leri düzenlersiniz.
‫Uygula komutunu verirsiniz.
‫Bir get-commit yaparsın. Artık yaptığınız her şeyin
‫kaydını tutuyorsunuz. Bu, get-ops operasyon modelinin
‫özelliklerinden biridir ve bunu bildirimsel olarak yapmak, oraya
‫nasıl ulaştığınızı gösterir.
‫Kubernetes ekiplerinin Kubernetes komut satırını kullanmamız
‫gerektiğini düşündüğü üç yola bakalım.