Docker için WordPress Geliştiricilerine Giriş, Üçüncü Bölüm: Kubernetetes

Bu oldukça uzun öğreticiyi keşfetmeden önce özür dilememe izin verin.Bu üçüncü bölüm (birinci ve iki bölüme bakın) ve nihayet yazmak için birkaç aya ihtiyacım var, iki nedenden ötürü: Birincisi, şirketin kurucusu olarak, varlığım ve dikkatim başka bir yerde ihtiyaç duyuluyor ve ikincisi, Web sitesi Bu geçici olarak çalıştırmak için web sitesi, bu yüzden ne yazacağım eminim iyi, güvenilir ve iyi bir performansa sahip olacak.Buna ek olarak, bu çözümü uygulamak için Google Cloud’u kullanacağımız için, birkaç dolar gerektiren birkaç nispeten küçük sanal sunucu çalıştıracağımıza dikkat edin (bu sunucuyu öğreticiyi takip etmek için çalıştırdığınız sürece), bu yüzden emin olun. Bitirdikten sonra her şeyi silin.İyi haber şu ki, daha önce Google Cloud’u hiç kullanmadıysanız, bunu denemek için Google tarafından 300 $ bonus verilir!
Başlayalım! Bana söyledim mi? Kubernetes, kısacası, bir konteyner düzenleme aracıdır. Bu, konteynerimizin düzgün çalışmasını sağlamak için tüm ağır randevuları yaptığı, gereksiz veya yeni dönmeyi yok ettiği ve bunların çoğu ve birçoğu dünyasında manuel olarak yapılması gereken bazı diğer yararlı şeyler arasında doğru olmasını sağlamak için yaptığı anlamına gelir. Sunucu yönetimi geleneksel. Neden Docker Swarm olmasın? Birincisi, onunla kesinlikle hiçbir deneyimim yok ve ikincisi, çünkü konteyner yönetimi açısından pazar lideri oldum. İyi nedenlerden dolayı, bu, sunucu teknolojisi ve taşıdıkları engeller hakkında bir veya iki şey bilen bir şirket olan Google’ın açık kaynaklı bir projesi olduğu için. (Kubernetes’te olan bazı varlıklar var, YAML dosyaları kullanılarak tanımlanır. ) daha önce bahsetmeye değer tüm bu öğreticide başvuracağımız ve kullanacağımız, ancak kullandıktan sonra çok daha tanıdık olması muhtemeldir:
Pod, tartışmasız Kubernetetes’in ana varlığıdır. Bu neredeyse Konteyner Docker’a benzer, tek fark bir kapsülde birçok kap bulunabilmemizdir. Şimdilik POD == Container hakkında düşünün
Dağıtım, POD’u kontrol etme şeklimizdir. Anlam, kelimenin geleneksel anlamından biraz farklıdır, çünkü bu bir süreç değil, ihtiyacımız olan belirli türden kaç bakla (bu bağlamda kopyalar olarak da adlandırılır), kaç kaynak olduğumuzu belirlediğimiz yapılandırmanın bir örneğidir. Her ve diğer birçok sorumluluk için tahsis etmek istiyorum.
Hizmetler, diğer baklalardan veya harici olarak internete bağlanacak belirli türleri/grupları açığa çıkarma şeklimizdir. Hizmet, tanımlanacak en basit varlıklardan biridir. Sırlar, şifreler ve yangın anahtarları gibi gizli, gizli olarak tahmin edebileceğiniz bir varlıktır. Kubernetetes’te sırları, /etc /sırlar (herhangi bir şey olabilir) için belirli bir yolun altına yerleştirerek sıraları kullanırız. Ardından DB_SECRET’imiz/etc/Secrets/db_secret içinde bir dize olarak saklanır.
Uç noktaları otomatik olarak yönetilen varlıklardır. Genellikle kendimizi tanımlamamız gerekmez çünkü bir hizmet tanımladığımızda yaparım, ancak Kubernetes tarafından bilinmeyen harici bir sunucuya di -dressed bir hizmet istediğimiz gibi istisnalar vardır. Bu yaklaşımı öğreticimizde kullanacağız (Talimatlar: WP-Content için).
Düğüm, çalıştığım fiziksel bir makine veya sanal sunucudur. Cubellet, düğümün durumu ve diğer tüm varlıklar hakkında ustasıyla iletişim kuran Kubernetes işçilerinin sürecidir. Kazıklarımız aktif ve yürürken, tüm kapsüller işçi düğümünde, usta sadece her şeyi izler ve delegasyon işleri. Patron gibi.
Ingress – adı biraz egzotik olsa da – basit bir alan mide konfigürasyonunun nesnesidir. Onunla birlikte, Google’ın hangi alanın hangi hizmet ve bağlantı noktasına yönlendirilmesi gerektiğini (veya kendiniz ait olduğu) dengelemesini söylüyoruz.
Kafası karışmış? Endişelenme, her şey daha mantıklı olacak!
Google Cloud’u hazırlarız Kubernetes yığınlarımızı hazırlamak için Google Cloud’u kullanacağız, bunun ana nedeni kendi ana düğümümüzle ilgilenmemiz gerekmemesidir – Google bunu bizim için yapıyor. Devam etmek için önce Google Bulut Konsolu’nu girin ve konsol kontrol paneline girmenizi sağlayacak tüm ayrıntıları doldurun: Google Cloud panosuna buradaki, konteyner motoruna gidin ve ilk kap kümenizi oluşturun; Lütfen istediğiniz her şeyi adlandırın ve size en yakın bölgeyi seçin, ancak mikro makine türünü seçtiğinizden ve boyutu 3 düğümde bıraktığınızdan emin olun. Gerçek dünya senaryosunda elbette daha büyük bir kapasite seçeceğiz.
Ayrıca çizim alanına dikkat et, dedi cos. Özellikle kaplar için ve açık kaynak krom işletim sistemi projesine dayanan bir Google Linux olan konteyner optimize edilmiş işletim sistemi anlamına gelir.
Kubernetes kümesini yapmak, kümemizi çevrimiçi hale getirmek için oluşturun ve birkaç dakika bekleyin. Artık motoru hesaplayarak sanal makinemizi kontrol edebilir ve çalıştırabiliriz -> Örnek VM:

Makine örneği küme hazırlığı ile hesaplanır, şimdi geri çekilmemiz ve son yığınımızı biraz düşünmemiz gerekir. Birçok kapta çalışan WordPress ile karşılaştığımız zorluklar, konteyner tarafından ne kadar (ya da daha önemli) ne kadar (veya daha önemli) ve nasıl paylaşılmak istediğimizdir. İlk olarak, her WordPress kurulumu için özel olarak yapılmış WP-Config.php vardır ve sonra WP-Concent vardır. Bence, ilkini doğrudan resme, sonsuza dek dokunmamıza izin vermeyecek şekilde pişirmek mantıklı. Önceki öğreticide gösterdiğim gibi, çevresel değişkenleri okumasını sağlayabiliriz, kodlama değeri oldukça zordur. İkinci kısım önemli ölçüde daha karmaşıktır. Aynı WP-Content’i paylaşmak için tüm kaplarımıza ihtiyacımız var, yani dizinin depolanacağı bir ağ diski hazırlamamız gerekiyor. Neyse ki, Kubernetes tarafından desteklenen Glusterfs adlı bir çözüm var ve düzenleme oldukça önemsiz! Örneğin kaydedilmiş sayfada, örnek oluşturun ve bir kez daha mikro makine türünü seçin ve kap kümenizle aynı bölgeye yerleştirin. İsim Gluster-1’dir.
Glusterfs örnekleri örnekler için ve hazırlanırken, diğerlerini tam olarak aynı ayarlarla yapın, ancak Gluster-2 adını verin.

Evet, iki nedenden dolayı iki Glusterfs örneğine ihtiyacımız var: Birincisi, bu yüzden fazlalık var ve ikincisi, VM örneği ekran eğitiminizin amacı için şimdi şöyle görünecek:

Tüm Bilgi İşlem Makinesi Örneklerimiz Önceki birkaç paragraftan örneklerin oluşturulmasına dikkat ederseniz, her örneğin maliyetinin yaklaşık 4 $/ay olduğunu fark etmiş olabilirsiniz, bu da bu hazırlığın aylık yaklaşık 20 dolara mal olacağı anlamına gelmiş olabilirsiniz. hiç pahalı değil! Gerçekten de, üretim için büyük olasılıkla daha güçlü bir kuruma ihtiyacınız olacak, ancak ayda 100 dolardan tam olarak hazırlayabilmeniz ve çalıştırabilmelisiniz. Evet, bu basit bir blog için bir ayar değil, ama kullanılabilirlik ve performansa ihtiyacınız olduğunda, bu makul bir ücret. Glusterfs hazırlamak şimdi ellerimizi biraz kirli hale getirme zamanı! Devam etmek için önce Google SDK’yı yüklemeniz gerekir, bu da örneklerden birine kabuk üzerinden bağlanmanızı sağlar. Burada düzenlemeyi açıklamayacağım çünkü resmi belgeler doğru çalıştırmak için bir adım -by -adım kılavuzu içeriyor. Ayarlamayı bitirdikten sonra, Örnek Listenizi Shell: $ GCLOUD Compute Örnekleri Listesi üzerinden oluşturabileceğinizden emin olun. Eğer yapamazsan, bu, kabuktan kimlik doğrulamadığınız anlamına gelir, bu yüzden çalıştırın
$ Gcloud auth giriş [e -posta korumalı] ve tarayıcıda oturum açmayı onaylayın. Ardından, geçerli aktif projeyi ayarlayın: $ gcloud yapılandırma projesi projenizi ayarlayın (proje kimliğinizi bulut konsolundaki en iyi navigasyon çubuğundaki ilk projemi tıklayarak bulabilirsiniz). Artık örnek listesi komutunu tekrar çalıştırabilirsiniz ve buna benzer bir şey alacaksınız:

Terminaldeki Örneklerin Listesi Şimdi, kabuğu çalıştırmak için kullandığınız programda iki ayrı sekme açın, çünkü iki glusterfs örneğini aynı anda yapılandıracağız: tarayıcınızda SSH ok simgesini tıklayın ve GCOUD komutunun görünümünü seçin, o zaman mermilerinizden biri olmak için kopyalamanız gerekir, her örnek kendine aittir. Benim için bir tanesi şöyle görünür: $ GCLOUD Compute-Project “Kuş-Current-168511” SSH-ZONE “Europe-West1-B-B “” Gluster-1 “Glusterf’leri hazırlamadan önce, iki düğümün güncellendiğinden ve glusterf’lerin kurulduğundan emin olun. Bu komutu her ikisinde de çalıştırın:
$ sudo -i bir kök hesabına geçecek

$ Apt-Get APT depolarını güncellemek için güncellendi
$ apt-get install -y apt-transport-https
$ wget -o – https://download.gluster.org/pub/gluster/glusterfs/3.11/rsa.pub | Apt -Key ekle – $ wget -o – https://download.gluster.org/pub/gluster/glusterfs/3.11/rsa.pub | Apt -Key Add – Glusterfs Public RSA anahtarını yüklemek için (doğru sürüm için 3.11’i değiştirin)

$ echo debs https://download.gluster.org/pub/gluster/glusterfs/latest/debian/jessie/apt jessie main> /etc/apt/sources.list.d/gluster.list (Dağıtımınızın doğru olduğundan emin olun )
$ apt-get güncellendi
$ apt-get install -y glusterfs-server
$ PS Aux | Grep Gluster
$ mkdir -p /veri /tuğla1
Glusterfs yüklendiğinde, şimdi bunu yapılandırmanın zamanı geldi. Ana düğüm/köle hakkında hiçbir fikir olmadığı belirtilmelidir, tüm sunucular eş olarak adlandırılır, çünkü glusterfs hacmini yükleyen müşteriler bunlardan birine bağlanabilir ve okunabilir/yazabilir.
Bulut konsoluna dönelim ve Glusterfs düğümünün dahili IP adresini kontrol edelim, çünkü birbirimize bağlamamız gerekiyor. Benim durumumda, IP 10.132.0.5 (buna bu düğüm Gluster-1 adını ver) ve 10.132.0.6 (gluster-2). Gluster-1’de, $ gluster peer prob 10.132.0.6’yı çalıştırın ve gluster-2’de, $ gluster peer prob 10.132.0.5’i çalıştırın, birbirlerinin iki örneğini araştırıyoruz, yani şimdi birbirlerini tanıyorlar ama hizmet etmediler Herhangi bir hacim, sonra yapalım. Her iki düğümde, tek bir hacim olarak sunulacak, ancak WP-Concent-Site1 adı verilen çoğaltılmış bir dizin oluşturun (çoğaltılmış, belirli dizinin her iki düğümde her zaman senkronize olduğu anlamına gelir). Biraz daha spesifik bir isim kullanmanızı tavsiye ederim çünkü aynı düğümden glusterfs’den wp-content yükleyen birkaç web sitesine sahip olmak isteyebilirsiniz (şu anda WordPress hakkında endişelenmeyin, bu cildin yüklediğimiz WP’ye yükleyebiliriz tamamen farklı adın altında). Bir dizin oluşturmak için $ MKDIR -P/Data/Brick1/WP-Concent-Site1’i neredeyse kadar çalıştırın! Her iki düğümde de yönetmenleri var, tek yapmamız gereken glusterfs hacmi yapmak. Gluster-1’de aşağıdaki komutu çalıştırın: $ gluster hacmi wp-concent-site1 çoğaltma 2 10.132.0.5:/data/brick1/wp-concent-site1 10.132.0.6:/data/brick1/wp-content1 force1 force
$ Gluster Volume Start wp-concent-site1
$ mkdir -p /mnt /wp-concent site1
$ Mount -t glusterfs 10.132.0.5:/wp-content-tent
$ touch /mnt/wp-content-site1/test.txt
Hadi ne yaptığımızı yapalım. İlk olarak, her iki düğümde de çoğaltılan ve kuvvet parametresini kullanan yeni bir hacim yapıyoruz, aksi takdirde Glusterfs harici disklerde hacimleri tercih ettiğinden şikayet edecek. Daha sonra yapılan yeni hacmi başlattık, yani harici istemciler artık ses seviyesini kendilerine eklemek için iki düğümden birine bağlanabilir. Aslında, 4. adımda bunu yaptık, glusterfs’den düğümün kendisine hacim koyduk. (Not: Kafa karıştırmayın/veri/tuğla/tuğla1/wp-concent-site1 ve/mnt/wp-concent-site1-birincisi, dosya sistemi olarak kullanılan glusterf’lerdir, sadece denemek için son yüklüyken Cilt, bu adımı geçebiliriz). Son olarak, $ LS/Data/Brick1/WP-Concent-Site1 çalıştırırsak, Gluster-1’de Gluster-2’de de kaydedilmesi gereken bir test dosyası oluşturduk. Artık /MNT /WP-Concent-Site1’i kaldırabilirsiniz, ancak olduğu gibi olsun, çünkü bu dizin WP-Content’imiz olarak kullanacağız (Gluster-2-2-You Coth-2’de kabuktan çıkmaktan çekinmeyin kazanç ‘
artık ihtiyacım yok). Kabuk Gluster-1’i kapatmadan önce WordPress ve WP-Content Extract: + $ CD/MNT/WP-CONTON-Site1- $ wget https://wordpress.org/lest.tar.gz-$ Tar -zxf en yeni .tar.gz- $ mv wordpress/wp-content/*. -$ rm -rf wordpress lest.tar.gz -$ chown -r 1000: 1000. Gelecekte, WP-Content’de herhangi bir ayar yapmanız gerekiyorsa, bu bunu yapacağınız dizinin ve değişikliğin her iki düğüme otomatik olarak doğru şekilde dağıtılacağını unutmayın. Ayrıca, UID/GID 1000’e sahip kullanıcılar/gruplar için izin ayarladığımızı unutmayın, çünkü WordPress görüntüsümüz WWW-Data kullanıcıları ve aynı kimliğe ayarlanmış gruplara sahip olduğu için telefonda olası izin sorunlarından kaçındığımız için. Hepsi bu, kabuğu kapatmaktan çekinmeyin, Glusterfs kümemiz artık doğru yapılandırıldı ve Kubernetes Pod’a istediğimiz kadar kurulmaya hazır! MySQL’i neyse ki hazırlarken, Google Cloud, ayarları çok kolay hale getiren, sadece birkaç tıklama ile HUH ile gönderilmiş bir MySQL teklifi ile birlikte gelir. Bulut konsolunda SQL’e gidin (menü görünür değilse, sağ üstteki Hamburger simgesini tıklayın) ve ardından Örnek Oluştur’u seçin. Bir sonraki sayfada MySQL’i seçin ve ardından ikinci nesli seçin. Aşağıdaki ekran şimdi tanıdık olmalıdır:
MySQL örneğinin yapılandırması, diğer tüm hizmetler için yaptığımız gibi aynı türden makineyi seçmekten çekinmeyin: DB-F1-Micro. Arayüz sizi uyarabileceğinden, bu makine SLA Google tarafından kapsanmaz, ancak hala burada yaptığımız test ve geliştirme için iyidir. Ağ gecikmesini en aza indirmek için konteyner kümenizle aynı alan/bölgedeki örneğin konumunu seçin. MySQL Google, yük devretmenin kutunun dışında çoğaltılmasını destekler, yalnızca Replica yük devretme kutusunu kontrol etmeniz gerekir, ancak şimdilik kullanmayacağız – Örnek Master çalışırken her zaman geri dönebilir ve daha sonra yapabiliriz. Son olarak, MySQL’iniz için bir kök şifre yapın (güvenli bir yerde kaydetmeyi unutmayın) ve alttaki oluştur’u tıklayın. Birkaç dakika sonra, örneğiniz hazır olacaktır, bu nedenle örneğin adını tıklayarak (benim durumumda MySQL-0) kontrol etmeye devam edin. Şimdilik burada yapılabilecek hiçbir şey yok, ancak daha sonra kopya eklemek, rezervasyon ve performanslarını kontrol etmek için bu sayfaya geri dönebilirsiniz. Kubernetes’in hazırlanmasına devam etmeden önce, sadece bir şeye daha ihtiyacınız var: bir hizmet hesabı. Bu, insanlar değil, hizmetler tarafından kullanılan ve anahtarlar ve kişisel roller gibi bazı ek ayrıntılarla donatılmış özel bir hesap türüdür. Bir Hizmet Hesabı oluşturmak için Hizmet Hesabı sayfasına (ana navigasyonda IAM & Admin altında) gidin, bir hizmet hesabı oluşturun ve şunları doldurun:
Hizmet hesaplarının yapılandırması (her ikisini de seçtiğinizden emin olun: Cloud SQL istemcisi ve bulut SQL düzenleyicisi) tıkladıktan sonra JSON dosyaları otomatik olarak indirilir;Güvenli bir yerde saklayın ve nerede olduğunu hatırlayın, çünkü hemen ihtiyacınız olacak.WordPress Bu Hizmet Hesabını MySQL örneğimize (güvenliği artırmak için) bağlantı sağlamak için kullanacağız, bu nedenle hizmet hesabına eklenecek SQL kullanıcıları da yapmamız gerekiyor.Bunu yapmak için, önce kabuğunuza örneği kaydedin: $ gcloud beta sql örnekleri listesi ve mysql kullanıcıları için (değeri gerektiği gibi değiştirin): $ gcloud beta sql kullanıcıları wp_user cloudsqlproxy ~%-%örnek-mysql- 0
MySQL kullanıcıları Oluşturma Son terminalde veritabanını oluşturun: $ gcloud beta sql veritabanları Oluştur wp_tutorial innestans = mysql-0 özel izin vermesine gerek yoktur, çünkü belirlediğiniz tüm kullanıcıların aynı örnekteki tüm veritabanlarına erişimi vardır. Bu kötü bir fikir gibi görünse de, bunun bir devam ve sizin tarafınızdan tamamen kontrol edildiğini unutmayın. Güvenliği başka bir şekilde elde ediyoruz, yani ana bilgisayar proxy adını (yani MySQL örneğimize yapılabilecek bir dış bağlantı yoktur) ve bir hizmet hesabını (şifrelerle uğraşmamak anlamına gelir) kullanarak. Şimdi MySQL hazırlamayı bitirdiniz, sonunda WordPress’imizi uygulamanın zamanı geldi! Kubernetes’i hazırlayın çünkü Kubernetes yapılandırmasının çoğunu komut satırından yapacağımız için, önce bir dizi GCOUD araçının bir parçası olan Kubectl komutunu yüklememiz gerekiyor: $ gcloud bileşenleri Kubectl’i yükleyin, ardından Google Cloud’u girin ve genel ayarları ayarlayın (Saat dilimini değiştirin (saat dilimini değiştirin (ayarlarınıza uygun olarak saat dilimi ve proje kimliğini değiştirin) $ gcloud auth uygulama-default giriş, kabuğunuzu yetkilendirmenizi sağlamak için tarayıcınızı açacaktır
$ Gcloud Config Set Project AVIAN-Current-168511 Mevcut etkin projeyi ayarlamak için
$ Gcloud config set compute/bölge Avrupa-west1-b saat dilimini ayarlamak için
$ GCLOUD Konteyner Kümeleri Önceden Temeller Küme-1 Ayarlarınızı yerel dosyalara kaydetmek için
Kubectl’in komutu artık mevcut olmalı ve doğru kümeye bağlanmalıdır. Doğrulamak için, $ Kubectl Get Pods -Ble All Nameitess’i çalıştırın:

Terminaldeki Pod Listesi Daha önce de belirttiğim gibi, bir kapsayıcıya benzer ve burada birçoğunu Google Container motoru tarafından otomatik olarak oluşturulan ve kümeyi doğru şekilde çalıştırmak için gerekli olan Kube-System Adı Odası altında görüyorsunuz. , bu yüzden WordPress’imizin iyi çalışması için gizli olmak isteyebilirsiniz, her şeyden önce bazı sırlar hazırlamamız gerekiyor, en önemli şey MySQL’e kimlik bilgisi erişim.Daha önce oluşturduğumuz hizmet hesabı dosyasını hatırlıyor musunuz (Pro-Project-Name-2345.json gibi)?Şimdi kullanma zamanı;

Proje dizininize kopyalayın, adını kimlik bilgilerine değiştirin. Örnek-krediyeleri. Bu, verilerinizdeki bir anahtarla düzenleyiciyi (vim, büyük olasılıkla), kimlik bilgileri olarak adlandırılır. Bu ilk başta kafa karıştırıcı görünse de, mantıklı. Daha önce de belirttiğim gibi, sır Kubernetes tarafından tüketildiğinde, sır, Kubernetes tarafından otomatik olarak çevrilen ve ne kadar hızlı göreceğiniz sıradan bir dosya olarak dosya sistemine yüklenir. VIM’i basarak kapatın: Q (İkinci Yol, Sonra Q). Az önce yaptığımız sır, Pod Proxy CloudSQL’imiz tarafından kullanılacak (hemen açıklanacak), ancak WordPress’imiz değil, bu yüzden WordPress tarafından çalıştırılamayan diğer sırların bir koleksiyonunu yapmamız gerekiyor. Yani tuz. Proje dizininizde, yeni bir tane oluşturun ve K8S (Kubernetes kısaltması) adlandırın ve aşağıdaki dosyaları yerleştirin, wordpress-secrets.yml adını adlandırın: [inti https://gist.github -WordPress-Secrets-Eml /] Dosya tarafından önerildiği gibi, her bir tuzu ve anahtar wordpress’i dönüştürmeniz gerekir (burada üretilen Base64 tarafından teşvik edilen değer haline gelir, bu da bu komutla yapılan: $ echo ‘-cömertlik. -burada’

| Base64 Tüm değerler belirlendikten sonra gizli dosyayı kullanın: $ Kubectl Create -f WordPress -secrets.yml Şimdi silin, tekrar ihtiyacınız olmayacak ve yanlış anlaşılmak veya iletilmek istemediğiniz hassas veriler içermeyecek Repo git. WordPress kullanmadan önce paylaşılan WP içeriği, daha önce yaptığımız glusterfs hacmine erişmenin bir yoluna ihtiyacımız var. Hizmetlerle ilgili resmi belgelere uygun olarak, seçmenler ve uygun nihai nokta seti olmadan hizmet vermemiz gerekir. K8S dizininizde glusterfs-service.yml ve glusterfs-endpoints.yml adlı iki yeni dosya oluşturun ve aşağıdaki içeriği şöyle girin: [Core https://gist.github.com/tomazzaman/5639efa1cf694f629008345e35a12baf/]] [inti https :// gist.github.com/tomazzaman/5639efa1cf694f629008345e35a12baf#file-glusterfs-service-yml/] Hizmetin doğru bitiş noktasını aldığını doğrulamak için $ kicek. Aşağıdaki ekran görüntüleri gibi doğru bitiş noktası IP’yi görürseniz, bu, kümemizin Glusterfs’e bağlanmaya hazır olduğu anlamına gelir:

Terminalde glusterfs bilgileri almak bağlantı noktası (1) hakkında endişelenmeyin, bu sadece bir yer tutucu bağlantı noktasıdır, çünkü hizmet tanımlamadan var olamaz. WordPress’i aktif ve çalışan tüm bağımlılıklarımızla uygulamak, şimdi WordPress uygulamanın zamanı geldi. Bir kez daha, yeni bir yaml dosyası oluşturun, wordpress-deployment.yml adını adlandırın ve aşağıdaki içeriği girin: [inti https://gist.github.com/tomazzaman/56345e35a12baf #file-wordpress belki de ilk önce biraz scary görünüyor , ne olduğunu bildikten sonra onu bir alışkanlık haline getirmek. Açıklığa kavuşturmak için tartışalım: Satır 4: Bu uygulamanın adı
Satır 6: Bizim durumumuzda bu kazıkta çalıştırmak istediğimiz kaç kopya (aynı tipte pod).
Satır 9: Uygulamanın sorumluluklarından biri, belirlediğimiz bir dizi kopyayı çalıştırmaktır. Etiket, POD durumunu izlemek için Cubetes’e bir yol olarak işlev görür. Bizim durumumuzda, tüm pod etiketli uygulamayı gözlemledi: WordPress.
Satır 10: WordPress’in yeni sürümünü uyguladığımızda, uygulamanın başlatılmasını nasıl istiyoruz? Önce eski kapsülleri yok edebilir, sonra yeni bir tane yapabiliriz veya bir kapsülü silen, yeni bir sürümle yeni bir tane yapan ve eski bir kapsül silmeyi, tekrar yeni bir bölme ile değiştirebiliriz. ve böylece, tüm bölmeler güncellenene kadar. Çoğu zaman, bu tercih edilen bir yoldur, çünkü her zaman internet için kullanılabilir bölmelerimiz vardır, uygulamamız sırasında kesinti süresini önler.
Satır 15: Şablon (ve sonra 19 ve 10. sıradaki spec -> kapsayıcı) uygulamanın en önemli kısmıdır. Bu, yapılan tüm kapsüller için bir plan olarak işlev görür. Ana 21: Pod’umuzdaki ilk kap bir WordPress kabıdır (ancak resmi bir kap değil, kendi kabımı kullanıyorum, sonra resim: kodlanabilir/kubepress: 4.7.5)
Satır 35: Livingprobe, kapsülümüzün düzgün çalışıp çalışmadığını kontrol etmek için Cubetes’in yoludur. Değilse, orada herhangi bir trafik teslimatını önleyecek ve tekrar başlamaya çalışacaktır.

Satır 49: 80 numaralı bağlantı noktasını açık
Satır 52: Daha önce yaptığımız sırları/etc/sırlar ve glusterfs’imizin hacmini/var/www/wordpress/wp-concent adresine yükleyin
Satır 58: Bu kapsüldeki ikinci konteynerimiz CloudSQL’e bağlanmak amacıyla Google tarafından yapılır, bu nedenle bu belgeyi nasıl çalıştığını okumaktan çekinmeyin. Burada dikkat çekici olan, aynı kapsüldeki konteynerin mantıksal localhost’u paylaşmasıdır (Cubellet’i çalıştıran sanal ana bilgisayar makinesiyle karıştırılmayın – bu hala izole bir ortamdır), bu yüzden WordPress’e 127.0.0.0.1:3306’ya bağlanıyoruz. Pod.

Satır 65: Bu bölmeye bağlanmak istediğimiz MySQL örneği. Bunu elde etmek için $ gcloud beta sql örneklerini çalıştırın, ardından $ gcloud beta sql örnekleri mysql-0’ı tanımlayın (mysql-0’ı örnek adınızla değiştirin) ve connectionName arayın.
Hat 78: Burada, baklalarımızdan biri tarafından tüketmek istediğimiz tüm ciltleri tanımlıyoruz. Burada, Glusterfs ve Cloudsql-Anstance-Credtients hacmimizi görebilirsiniz. Her bir cildin adlarının 54, 56 ve 71 satırlarındaki hacimerdeki adların nasıl eşleştiğine dikkat edin? Bu bir tesadüf değil, bu yüzden yazım hatalarına dikkat edin
Pod WordPress ve Porta Savcılığı da dahil olmak üzere, WordPress’imize alan veya IP aracılığıyla erişemedik, çünkü POD’u İnternet’e maruz bırakmadık, ancak yine de deneyebiliriz! $ Kubectl Pod al, bunlardan birini seçin (sorun yok) ve $ kubekpl bağlantı noktası-forward wordpress-pod-name 8080: 80’i çalıştırın. Bu, 80 POD bağlantı noktasını bilgisayarınızdaki 8080 numaralı bağlantı noktasına eşler, böylece tarayıcınızı açabilir, http: // localhost: 8080’e gidebilir ve WordPress’i yükleyebilirsiniz! Hata alın ve günlüğe kaydedildikten sonra, herhangi bir nedenle, düzenledikten sonra uygun olmamalısa, ne olduğunu araştırmak için çok yararlı olabilecek bazı komutlar vardır:
$ Kubectl Günlükleri WordPress-49897938-258SJ Günlük verilen her bir kapsülden görüntüler. Pod yeniden başlat döngüsündeyse, komuta -prevision eklemek isteyebilirsiniz. Veya tarayıcıdan kontrol etmek için Google Günlük sayfasını ziyaret edin
$ Kubectl Exec -ti WordPress-498979938-258SJ Bash, SSH gibi kabuk kapsülüne bağlanacaktır.
$ Kubectl Pod Sil WordPress-498979938-258SJ POD’i siler ve dağıtım kullandığımız için otomatik olarak yeni olanları yapın.
WordPress’i İnternet eğitimine maruz bırakmak, podumuzda bağlantı noktasını ortaya çıkarmak için Loadbalancer türüne sahip hizmetler yapmayı resmen önerdi, ancak bu aslında en iyi uygulama değil, bazı nedenlerden dolayı: Hizmet tarafından hangi IP’nin maruz bırakılacağı üzerinde hiçbir kontrolümüz yok
Kendi SSL feshi ile ilgilenmeliyiz, sürdürmemiz gereken başka bir karmaşıklık katmanı veya imajımıza ek sorumluluklar eklemeliyiz.
Aynı IP’de bazı alan adlarını ortaya çıkaramayız
Günlüğümüz doğru ziyaretçi IP’sini göstermeyecek, ancak dahili IP hizmetimiz
Yani yapmamız gereken, nodeport türüyle bir hizmet yapmak. Bu tür bir hizmet, konteyner bağlantı noktamızı 80, kabın belirli bir düğümde olup olmadığına bakılmaksızın kümedeki tüm düğümlerle haritalar 30000’den yüksek. ve $ KURTL Create -f WordPress -Service.yml çalıştırın. Gereken son noktaya göre yapılan hizmetleri doğrulamak için $ Kubectl Get SVC, EP. Aşağıdaki ekran görüntüleri gibi bir şey görürseniz, trafiği port düğümünden 31586’dan (benim durumumda farklı olabilirsiniz) doğru bir şekilde değiştirme hizmeti 80 POD bağlantı noktasına. Peki şimdi onları nasıl internete maruz bırakıyoruz? Ingress olarak adlandırılan şeyi kullanacağız. Hizmete benzer şekilde, Ingress, Kubertetes’e trafiğin nasıl değiştirileceğini kontrol etmeleri talimatını verdi, temel fark, Ingress’in belirlediğimiz bir dizi kurala dayanarak harici trafiği haritalamadan sorumlu olmasıdır. K8S dizininizde, wordpress -gress.yml adlı yeni bir dosya oluşturun ve aşağıdaki içeriği girin (etki alanını güncelleyin): [Core https://gist.github.com/tomazzaman/563Fa1cf694f629008345e35a12baf #file-wordpress daha önce gerçekten olabilir Alan adını ziyaret edin, WordPress’imizi doğrulamak ve çalıştırmak için iki gotcha’yı düzeltmemiz gerekiyor: DNS ayarlarımızda (etki alanı kaydımızla), Google tarafından ayrılan IP’ye işaret eden bir not almamız gerekiyor. $ Kubectl’i çalıştırın WordPress’i tanımlayın ve adlandırılmış bir alan bulun.
WordPress’i önceki bağlantı noktasına yüklediğimiz için, WordPress büyük olasılıkla bizi çalışmayacak olan 8080 bağlantı noktasına yönlendirmek istedi. Bu nedenle uygulamayı düzenleyin ($ kubectl düzenleme WordPress) ve iki yeni çevresel değişken ekleyin (wordpress-deploy.yml dosyamızda satır 45): wp_siteurl ve wp_home, her ikisi de son etki alanına ayarlanmalıdır (http: // dahil) . Uygulamayı güncellemek için dosyadan kaydedin ve çıkın ve bu yeni ayarla yeni bir bölme seti uygulamak için birkaç saniye cubertetes verin. Tüm yığınlarımız artık doğru yapılandırıldı ve görmek için tarayıcımızdaki alan adını ziyaret edebilmeliyiz. Parlak ve parlak ve yürüyüş olan yeni WordPress kurulumumuz! Oldukça fazla bitirdik, ancak Google Cloud gösterge panelimizi ne olduğunu keşfedelim. Yük dengeleme sayfasını ziyaret edin ve görünüşü genişletmek için oradaki yükü dengeleyen sadece tıklayın. Orada olan birçok şey var:
Trafiği aldığımız IP ve bağlantı noktası olan belirli bir Frontnd var
Belirtilen kurallar var (ki bu bizim girişimizle yapıyoruz)

Belirli bir arka uç var (bizim için Google tarafından)
Yük dengeleme yapılandırmasını düzenlemenizi ve her şeyin birbirine nasıl uygun olduğunu hissetmek için biraz tıklamanızı öneririm – burada ayrıntılı olarak açıklamayacağım çünkü bu öğretici oldukça uzundur ve Google’ın resmi belgeleri iyi bir rehber olabilir. Daha fazla öğrenme kaynakları. Buna ek olarak, Google tarafından Ingress için tahsis edilen yeni bir IP’yi korumak istiyorsanız, harici IP adres sayfasını ziyaret edin ve IP’yi geçiciden statik olarak değiştirin. Bonus: Kube-lego ile LetsSencrypt Şimdi yığınımız tamamen aktif ve çalışıyor, SSL fesih ve sertifikaların kaydedilmesini işleyen uygulamayı ekleyerek sadece birkaç ek sipariş gerektiriyor. Her iki görev için de Kube-Lego’yu kullanacağız çünkü bu yaygın olarak kullanılan bir yaklaşımdır ve Kubernetes kümesindeki sertifikaları işlemek için test edilmiştir. İhtiyacımız olan ilk şey ConfigMap. Kubernetetes’te yapılandırma için yapılandırma için yapılandırma için yapılandırma kullanılır. “Harita” bölümü
Adından, düğme kombinasyonunun kısaltılması ve değeridir. Kube-lego varsayılan olarak bir Stealing LetSencerypt Sunucusu kullandığından, ConfigMap’imizin üretim sunucumuzun URL’sini ve e-posta adresini eklemesi gerekir. [Core https://gist.github.com/tomazzaman/5639efa1cf694f629008345e35a12baf#file-lego-configmap-yml/] dosyaları K8S dizininize kaydedin ve Lego-configmap.yml lego kullanır -f lego-configmap.yml leghe kullanır -f lego-create name kullanır. Varlığı yayın, ancak diğer sistemlerle ilgili tüm varlıkların olduğu Kube-System Adı Odasında kullanmak için daha net hissediyorum) Spottaki konfigürasyonlarla, Kube-Lego’yu yaymanın zamanı geldi: [inti https: // gist. github.com/tomazzaman/5639efa1cf694f629008345e35a12baf#file-lego-deployment-yml/] dosyaları K8S’ye kaydedin ve -f lego-deployment.yml çalıştırın. (Son iki ip sizin için farklı olacaktır). Şimdi son bit için, sertifikayı istediğimiz Kube-Lego alanına daha önce yaptığımız girişi değiştirmemiz gerekiyor. $ Kubectl Düzenleme varsayılan olarak çalıştırın. Bu, seçtiğiniz düzenleyiciyi Google tarafından önemli ölçüde değiştirilen orijinal girişimizle açacaktır (birçok ek ek açıklama olmalıdır). Aşağıdaki çekirdekle karşılaştırın: [çekirdek https://gist.github.com/tomazzaman/5639efa1cf694f629008345e35a12baf#file-wordpress-ungress-ml/] Bazı eksik kısımlar olduğunu göreceksiniz: iki yeni ekleme: iki yeni ekleme: iki yeni ekleme: iki yeni eklem. /İngress.class: gce ve kubernetes.io/tls-acme: “True”
Ana bilgisayarlar (ayrıca dizi) ve Secretname içeren TLS anahtarı (bir dizidir) bir dosya ve çıkış olarak tanımlanır.Kube-Lego Pod’umuz girişimizi otomatik olarak gözlemlediğinden, başka bir şey yapmaya gerek yok, güncellemeyi alacak, letsencrypt’ten gerekli sertifikaları isteyecek ve kendi yükünün dengelenmesini yeniden yapılandıracaktır.Hepsi bu, tüm bu yığınları daha önce eklenen HTTPS ile hazırlamak için kullandığınız URL’yi ziyaret edin ve yeni aldığınız becerilerin tadını çıkarın!(Bu arada, bu makalenin tweet’leri çok değerli olacaktır.)
Bu makale için çok fazla isteğim var ve tüm süreci boşaltacağım web seminerlerini/doğrudan oturumları düzenlemeyi düşünüyorum.Aşağıdaki yorumlara katılmakla ilgilenip ilgilenmediğinizi söyleyin.


admin

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir