WordPress'i Kubernetes Kümesinde Çalıştırma


Bir geliştirici olarak, her gün kullanmayabileceğim ancak işimi dolaylı olarak etkileyebileceği için anlaması önemli olan teknolojilerin ilerlemesini takip etmeye çalışıyorum. Örneğin, geniş ölçekte web uygulamalarını barındırmak için kullanılan Docker tarafından popüler hale getirilen konteynerleştirmenin son zamanlardaki yükselişi. Teknik olarak meraklı biri değilim ama günlük olarak web uygulamaları geliştirdiğim için bu teknolojilerin nasıl ilerlediğini gözlemlemek benim için iyi.

Bu ilerlemeye iyi bir örnek, kapsayıcılı uygulamaları kolayca dağıtmanıza, ölçeklendirmenize ve yönetmenize olanak tanıyan kapsayıcı düzenleme platformlarının hızlı gelişimidir. Şu anda ana oyuncular Kubernetes (Google tarafından), Docker Swarm ve Apache Mesos gibi görünüyor. Bu teknolojilerin her birine ve farklılıklarına iyi bir giriş yapmak istiyorsanız, bu makaleyi okumanızı tavsiye ederim.

Bu yazıda, basit bir şekilde başlayacağız ve Kubernetes platformuna ve yerel makinenizde tek bir düğüm kümesinde bir WordPress sitesini nasıl kurabileceğinize bir göz atacağız.

Kubernetes'i yükleme

Kubernetes belgelerinde bu konuların çoğunu kapsayan harika bir etkileşimli öğretici var, ancak bu makalenin amacı için sadece macOS'ta kurulum ve kullanımdan bahsedeceğim.

Yapmamız gereken ilk şey, yerel makinenize Kubernetes'i kurmak. Test için yerel makinenizde bir Kubernetes kümesi kurmayı kolaylaştırmak için özel olarak tasarlanmış Minikube adlı bir araç kullanacağız.

Minikube belgelerine göre, başlamadan önce birkaç önkoşul var. Bir Hiper Yöneticinin kurulu olduğundan emin olun (Virtualbox kullanacağım). Daha sonra Kubernetes komut satırı aracını ( kubectl olarak bilinir) kurmamız gerekiyor. Homebrew kullanıyorsanız, bu çalıştırmak kadar basittir:

 $ brew install kubectl

Artık Minikube'u gerçekten kurabiliriz:

 $ curl -Lo minikube https://storage.googleapis.com/minikube/releases/v0.21.0/minikube-darwin-amd64 && chmod +x minikube && sudo mv minikube /usr/local/bin/

Son olarak, tek düğümlü Kubernetes kümemiz olarak hareket edecek bir sanal makine oluşturacak olan Minikube'u başlatmak istiyoruz. Bu noktada şunu belirtmeliyim ki, bu yazıda işleri yerel olarak çalıştırıyor olsak da, gerçek sunucularda tam bir Kubernetes kümesi çalıştırırken aşağıdaki kavramların çoğu geçerli olacaktır. Çok düğümlü bir kümede, diğer çalışan düğümlerin (VM'ler veya fiziksel sunucular) yönetiminden bir "ana" düğüm sorumlu olacak ve Kubernetes, küme genelinde uygulama kapsayıcılarının dağıtımını ve zamanlamasını otomatikleştirecektir.

 $ minikube start --vm-driver=virtualbox

Dümen Kurulumu

Bu noktada artık yerel makinemizde çalışan (tek düğümlü) bir Kubernetes kümesine sahip olmalıyız. Artık Kubernetes ile istediğimiz şekilde etkileşime geçebiliriz. Etrafta oynamaya başlamak istiyorsanız, kubernetesbyexample.com'u Kubernetes kavramlarına ve terimlerine iyi bir giriş olarak buldum.

İşleri manuel olarak ayarlayabilmemize rağmen, WordPress uygulamamızı Kubernetes kümemize yüklemek için aslında ayrı bir araç kullanacağız. Helm, "Kubernetes için paket yöneticisi" olarak etiketlenmiştir ve "Grafikler" olarak bilinen önceden oluşturulmuş yazılım paketlerini kümenize kolayca dağıtmanıza olanak tanıyarak çalışır. Bir Grafiği, belirli bir uygulama (WordPress gibi) için tasarlanmış bir grup kapsayıcı tanımları ve yapılandırmaları olarak düşünebilirsiniz. Önce yerel makinemize Helm'i yükleyelim:

 $ brew install kubernetes-helm

Ardından Helm'i kümemize kurmamız gerekiyor. Neyse ki bu koşmak kadar basit:

 $ helm init

WordPress'i Yükleme

Helm artık kümemizde çalıştığına göre, aşağıdakileri çalıştırarak WordPress grafiğini yükleyebiliriz:

 $ helm install --namespace wordpress --name wordpress --set serviceType=NodePort stable/wordpress

WordPress'i bir kapsayıcıya ve MariaDB'yi veritabanı için bir kapsayıcıya yükleyecek ve çalıştıracaktır. Bu, Kubernetes'te “Pod” olarak bilinir. Bir Pod, temel olarak, bir veya daha fazla uygulama kapsayıcı grubunu ve bu kapsayıcılar için bazı paylaşılan kaynakları (örneğin, depolama birimleri, ağ oluşturma vb.) temsil eden bir soyutlamadır.

Her şeyi düzenli tutmak ve bulmayı kolaylaştırmak için sürüme bir ad alanı ve bir ad veriyoruz. Ayrıca NodePort serviceType ayarladık. Bu önemlidir, çünkü varsayılan olarak hizmet türü LoadBalancer olarak ayarlanacaktır ve şu anda kümemiz için bir yük dengeleyicimiz olmadığından, WordPress sitemize kümenin dışından erişemeyeceğiz.

Bu komutun çıktısının son bölümünde, WordPress sitenize nasıl erişeceğinize dair bazı yararlı talimatlar göreceksiniz. WordPress sitemizin harici IP adresini ve bağlantı noktasını almak için bu komutları çalıştırın:

 $ export NODE_PORT=$(kubectl get --namespace wordpress -o jsonpath="{.spec.ports[0].nodePort}" services wordpress-wordpress) $ export NODE_IP=$(kubectl get nodes --namespace wordpress -o jsonpath="{.items[0].status.addresses[0].address}") $ echo http://$NODE_IP:$NODE_PORT/admin

Artık ortaya çıkan URL'yi ziyaret edebilmeli ( /admin bitini yok sayarak) ve WordPress'in kendi Kubernetes kümenizde çalıştığını görebilmelisiniz!

WordPress'i Ölçeklendirme

Kubernetes gibi kapsayıcı düzenleme platformlarıyla ilgili harika şeylerden biri, uygulamanızı ölçeklendirmeyi ve yönetmeyi gerçekten basit hale getirmesidir. Dağıtımlarımızın durumunu kontrol edelim:

 $ kubectl get deployments --namespace=wordpress 

kubectl dağıtımları al

Biri Mariadb veritabanı için diğeri WordPress'in kendisi için olmak üzere 2 dağıtımımız olduğunu görmeliyiz. Şimdi, WordPress sitenizin çok fazla trafik görmeye başladığını ve yükü birden çok örneğe bölmek istediğimizi varsayalım. Basit bir komut çalıştırarak wordpress-wordpress dağıtımımızı ölçeklendirebiliriz:

 $ kubectl scale --replicas 2 deployments wordpress-wordpress --namespace=wordpress

kubectl get deployments komutunu tekrar çalıştırırsak, şimdi şöyle bir şey görmeliyiz:

kubectl dağıtımları al

WordPress sitenizi yeni büyüttünüz! Kolay bezelye, değil mi? Artık trafiğin yük dengelenebileceği birden çok WordPress kapsayıcısı var. Kubernetes ölçeklendirme hakkında daha fazla bilgi için bu eğiticiye göz atın.

Yüksek kullanılabilirlik

Kubernetes gibi platformların bir başka harika özelliği de yalnızca kolayca ölçeklenebilme değil, aynı zamanda kendi kendini iyileştiren bileşenleri uygulayarak yüksek kullanılabilirlik sağlama yeteneğidir. WordPress dağıtımlarınızdan birinin bir nedenden dolayı başarısız olduğunu varsayalım. Kubernetes, dağıtımı anında otomatik olarak değiştirir. WordPress dağıtımımızda çalışan bölmelerden birini silerek bunu simüle edebiliriz.

İlk önce aşağıdakileri çalıştırarak bölmelerin bir listesini alın:

 $ kubectl get pods --namespace=wordpress 

kubectl bölmeleri al

Ardından bölmelerden birini silin:

 $ kubectl delete pod {POD-ID} --namespace=wordpress

kubectl get pods komutunu tekrar çalıştırırsanız, Kubernetes'in yeni bölmeyi hemen çevirdiğini görmelisiniz.

kubectl bölmeleri al

daha ileri gitmek

Kubernetes'in yapabileceklerinin yalnızca yüzeyini gerçekten çizdik. Biraz daha derine inmek istiyorsanız, aşağıdaki özelliklerden bazılarına göz atmanızı tavsiye ederim:

  • yatay ölçekleme
  • kendini iyileştirme
  • Otomatik kullanıma alma ve geri alma
  • Gizli yönetim

WordPress'i hiç bir konteyner platformunda çalıştırdınız mı? Hiç Kubernetes (veya başka bir kapsayıcı düzenleme platformu) kullanıp iyi ipuçları aldınız mı? WordPress sitelerinizi normalde nasıl ölçeklendirirsiniz? Yorumlarda bize bildirin.

Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

Divi's Theme Builder ile Özel Global Başlık Nasıl Oluşturulur

Artık Tema Oluşturucu burada olduğuna göre, web sitenizi A'dan Z'ye kurmanıza yardımcı olacak yeni eğitimlere dalmak için sabırsızlanıyoruz. Buna Divi'nin yerleşik seçeneğini kullanarak özel başlıklar oluşturma da dahildir. Bu eğitimde Divi's Theme Builder'ı kullanarak global bir başlık oluşturmaya odaklanacağız. Bu sayfaya veya gönderiye farklı bir başlık atamadıysanız, web sitenizin her yerinde genel bir başlık görünecektir.

Bir Cevap Yazın

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