arrow_back

Web Sitenizi Google Kubernetes Engine'de Dağıtma, Ölçeklendirme ve Güncelleme

Join Sign in
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

Web Sitenizi Google Kubernetes Engine'de Dağıtma, Ölçeklendirme ve Güncelleme

Lab 1 hour 30 minutes universal_currency_alt 1 Credit show_chart Introductory
Test and share your knowledge with our community!
done
Get access to over 700 hands-on labs, skill badges, and courses

GSP663

Google Cloud Rehbersiz Laboratuvarları

Genel Bakış

Web sitesi veya uygulama işletmek zor bir iştir. En olmayacak zamanlarda sorunlar yaşanır, sunucular çöker veya talep artışları daha fazla kaynak kullanılmasına yol açar. Üstelik, sisteme kapalı kalma süresi tanımadan değişiklik yapmak karmaşık ve streslidir. Gerekli işlemleri yapmanızı, hatta otomatik hale getirmenizi sağlayan bir aracın var olduğunu düşünün. Kubernetes size bu olanakların hepsini sunmakla kalmaz, bu işlemleri zahmetsiz hale de getirir.

Bu laboratuvarda, e-ticaret web sitesi işleten Fancy Store adlı kurgusal şirkette çalışan bir geliştirici rolünü oynayacaksınız. Şirketin karşılaştığı ölçeklendirme sorunları ve kesintiler nedeniyle uygulamanızı Google Kubernetes Engine'e (GKE) dağıtmanız istendi.

Bu laboratuvardaki alıştırmalar, bulut geliştiricilerinin sıkça takip ettiği adımlara uygun şekilde sıralanmıştır:

  1. GKE kümesi oluşturma
  2. Docker container'ı oluşturma
  3. Container'ı GKE'ye dağıtma
  4. Container'ı bir hizmet aracılığıyla kullanıma sunma
  5. Container'ı birden fazla replika içerecek şekilde ölçeklendirme
  6. Web sitesini değiştirme
  7. Kapalı kalma süresi olmadan yeni sürümü kullanıma sunma

Mimari şeması

Mimari şeması

Ön koşullar

  • Konuyu daha iyi anlayabilmeniz için Docker ve Kubernetes ile ilgili temel bilgileri incelemenizi öneririz.

Kurulum ve şartlar

Laboratuvarı Başlat düğmesini tıklamadan önce

Buradaki talimatları okuyun. Laboratuvarlar süreli olduğundan duraklatılamaz. Laboratuvarı Başlat'ı tıkladığınızda başlayan zamanlayıcı, Google Cloud kaynaklarının ne süreyle kullanımınıza açık durumda kalacağını gösterir.

Bu uygulamalı laboratuvarı kullanarak, laboratuvar etkinliklerini gerçek bir bulut ortamında (Simülasyon veya demo ortamında değil.) gerçekleştirebilirsiniz. Bu olanağın sunulabilmesi için size yeni, geçici kimlik bilgileri verilir. Bu kimlik bilgilerini laboratuvar süresince Google Cloud'da oturum açmak ve Google Cloud'a erişmek için kullanırsınız.

Bu laboratuvarı tamamlamak için şunlar gerekir:

  • Standart bir internet tarayıcısına erişim (Chrome Tarayıcı önerilir).
Not: Bu laboratuvarı çalıştırmak için tarayıcıyı gizli pencerede açın. Aksi takdirde, kişisel hesabınızla öğrenci hesabınız arasında oluşabilecek çakışmalar nedeniyle kişisel hesabınızdan ek ücret alınabilir.
  • Laboratuvarı tamamlamak için yeterli süre. (Laboratuvarlar, başlatıldıktan sonra duraklatılamaz)
Not: Kişisel bir Google Cloud hesabınız veya projeniz varsa bu laboratuvarda kullanmayın. Aksi takdirde hesabınızdan ek ücret alınabilir.

Laboratuvarınızı başlatma ve Google Cloud Console'da oturum açma

  1. Laboratuvarı Başlat düğmesini tıklayın. Laboratuvar için ödeme yapmanız gerekiyorsa ödeme yöntemini seçebileceğiniz bir pop-up açılır. Soldaki Laboratuvar Ayrıntıları panelinde şunlar yer alır:

    • Google Console'u Aç düğmesi
    • Kalan süre
    • Bu laboratuvarda kullanmanız gereken geçici kimlik bilgileri
    • Bu laboratuvarda ilerlemek için gerekebilecek diğer bilgiler
  2. Google Console'u Aç'ı tıklayın. Laboratuvar, kaynakları çalıştırır ve sonra Oturum aç sayfasını gösteren başka bir sekme açar.

    İpucu: Sekmeleri ayrı pencerelerde, yan yana açın.

    Not: Hesap seçin iletişim kutusunu görürseniz Başka Bir Hesap Kullan'ı tıklayın.
  3. Gerekirse Laboratuvar Ayrıntıları panelinden Kullanıcı adı'nı kopyalayın ve Oturum aç iletişim kutusuna yapıştırın. Sonraki'ni tıklayın.

  4. Laboratuvar Ayrıntıları panelinden Şifre'yi kopyalayın ve Hoş geldiniz iletişim penceresine yapıştırın. Sonraki'ni tıklayın.

    Önemli: Sol paneldeki kimlik bilgilerini kullanmanız gerekir. Google Cloud Öğrenim Merkezi kimlik bilgilerinizi kullanmayın. Not: Bu laboratuvarda kendi Google Cloud hesabınızı kullanabilmek için ek ücret ödemeniz gerekebilir.
  5. Sonraki sayfalarda ilgili düğmeleri tıklayarak ilerleyin:

    • Şartları ve koşulları kabul edin.
    • Geçici bir hesap kullandığınızdan kurtarma seçenekleri veya iki faktörlü kimlik doğrulama eklemeyin.
    • Ücretsiz denemelere kaydolmayın.

Birkaç saniye sonra Cloud Console bu sekmede açılır.

Not: Soldaki Gezinme menüsü'nü tıklayarak Google Cloud ürün ve hizmetlerinin listelendiği menüyü görüntüleyebilirsiniz. Gezinme menüsü simgesi

Cloud Shell'i etkinleştirme

Cloud Shell, çok sayıda geliştirme aracı içeren bir sanal makinedir. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud üzerinde çalışır. Cloud Shell, Google Cloud kaynaklarınıza komut satırı erişimi sağlar.

  1. Google Cloud Console'un üst kısmından Cloud Shell'i etkinleştir Cloud Shell'i etkinleştir simgesi simgesini tıklayın.

Bağlandığınızda, kimliğiniz doğrulanmış olur. Proje ise PROJECT_ID'nize göre ayarlanmıştır. Çıkış, bu oturum için PROJECT_ID'yi tanımlayan bir satır içerir:

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud, Google Cloud'un komut satırı aracıdır. Cloud Shell'e önceden yüklenmiştir ve sekmeyle tamamlamayı destekler.

  1. (İsteğe bağlı) Etkin hesap adını şu komutla listeleyebilirsiniz:
gcloud auth list
  1. Yetkilendir'i tıklayın.

  2. Çıkışınız aşağıdaki gibi görünecektir:

Çıkış:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (İsteğe bağlı) Proje kimliğini şu komutla listeleyebilirsiniz:
gcloud config list project

Çıkış:

[core] project = <project_ID>

Örnek çıkış:

[core] project = qwiklabs-gcp-44776a13dea667a6 Not: gcloud ile ilgili tüm belgeleri, Google Cloud'daki gcloud CLI'ya genel bakış rehberinde bulabilirsiniz.

Alt bölgeyi ayarlama

  • Varsayılan alt bölgeyi ve proje yapılandırmasını ayarlayın:
gcloud config set compute/zone {{{project_0.default_zone|lab zone}}}

Bölgeler ve Alt Bölgeler belgelerinden daha fazla bilgi edinebilirsiniz.

1. görev: GKE kümesi oluşturma

Web sitenizi dağıtacağınız bir Kubernetes kümesine ihtiyacınız var. Öncelikle, uygun API'lerin etkinleştirildiğinden emin olun.

  1. Container Registry API'yi etkinleştirmek için aşağıdaki komutu çalıştırın:
gcloud services enable container.googleapis.com

Artık küme oluşturmaya hazırsınız.

  1. fancy-cluster adlı ve 3 düğümlü bir GKE kümesi oluşturmak için şu komutu çalıştırın:
gcloud container clusters create fancy-cluster --num-nodes 3 Not: Bölgenin veya alt bölgenin belirtilmediğini açıklayan bir hata mesajı alırsanız lütfen Ortam Kurulumu bölümüne göz atarak varsayılan işlem alt bölgesini ayarladığınızdan emin olun.

Kümenin oluşturulması birkaç dakika sürer.

  1. Şu komut yardımıyla kümedeki üç çalışan sanal makine örneğini görüntüleyin:
gcloud compute instances list

Çıkış:

NAME: gke-fancy-cluster-default-pool-fb932da6-4sk6 ZONE: us-central1-f MACHINE_TYPE: e2-medium PREEMPTIBLE: INTERNAL_IP: 10.128.0.3 EXTERNAL_IP: 34.172.106.173 STATUS: RUNNING NAME: gke-fancy-cluster-default-pool-fb932da6-d6qc ZONE: us-central1-f MACHINE_TYPE: e2-medium PREEMPTIBLE: INTERNAL_IP: 10.128.0.4 EXTERNAL_IP: 34.133.99.176 STATUS: RUNNING NAME: gke-fancy-cluster-default-pool-fb932da6-ztnh ZONE: us-central1-f MACHINE_TYPE: e2-medium PREEMPTIBLE: INTERNAL_IP: 10.128.0.5 EXTERNAL_IP: 34.136.180.45 STATUS: RUNNING
  1. Google Cloud Console'da Kubernetes kümenizi ve ilgili bilgileri bulun.

  2. Gezinme menüsü (Gezinme menüsü simgesi) > Kubernetes Engine > Kümeler'i tıklayın.

Burada fancy-cluster adlı kümenizi göreceksiniz.

Tebrikler! İlk Kubernetes kümenizi oluşturdunuz.

Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın. GKE kümesi oluşturma

2. görev: Kaynak depoyu klonlama

Var olan bir web sitesiyle çalıştığınız için kaynağı klonlamanız yeterlidir. Böylece, Docker görüntüsü oluşturup GKE'ye dağıtım yapmaya odaklanabilirsiniz.

  1. Git deposunu Cloud Shell örneğinize klonlamak için şu komutları çalıştırın:
cd ~ git clone https://github.com/googlecodelabs/monolith-to-microservices.git
  1. Uygun dizine geçin.

  2. Dağıtım öncesinde uygulamanızı test edebilmeniz için NodeJS bağımlılıklarını yüklemeniz gerekir:

cd ~/monolith-to-microservices ./setup.sh

Bu komut dosyasının çalışması tamamlanana dek birkaç dakika bekleyin.

  1. Cloud Shell'i npm'nin güncel sürümüyle çalıştırdığınızdan emin olun:
nvm install --lts
  1. Uygun dizine geçin ve aşağıdaki komutu çalıştırıp web sunucusunu başlatarak uygulamayı test edin:
cd ~/monolith-to-microservices/monolith npm start

Çıkış:

Monolith listening on port 8080!
  1. Uygulamanızı önizlemek için web önizlemesi simgesini tıklayın ve 8080 bağlantı noktasında önizle'yi seçin:

8080 bağlantı noktasında vurgulanan &quot;Önizle&quot; seçeneği

Bu işlemi yaptığınızda, Fancy Store'u iş başında görebilirsiniz.

Fancy Store karşılama sayfası

Laboratuvarın ilerleyen bölümlerinde tekrar ziyaret edeceğiniz bu sekmeyi açık bırakın.

  1. Web sunucusu işlemini durdurmak için Cloud Shell'de CTRL+C tuşlarına basın.

3. görev: Cloud Build ile Docker container'ı oluşturma

Kaynak dosyalarınız artık hazır olduğuna göre sıra, uygulamanızı Docker'a uygun hale getirmeye geldi.

Normalde bu süreç iki adımda tamamlanır. Bir Docker container'ı oluşturulur ve GKE'nin pull edebileceği şekilde görüntünün depolanması için bu container bir kayıt defterine push edilir. İşinizin kolaylaşması için Docker container'ı Cloud Build yardımıyla oluşturun ve görüntüyü tek bir komutla Container Registry'ye yerleştirin. Tek bir komutla görüntüyü derleyip Container Registry'ye taşıyabilirsiniz. Docker dosyası oluşturma ve aktarma işlemlerinden oluşan manuel süreç hakkında daha fazla bilgiye Container Registry Hızlı Başlangıç Kılavuzu'ndan ulaşabilirsiniz.

Google Cloud Build, dizindeki dosyaları sıkıştırır ve bir Google Cloud Storage paketine taşır. Ardından, derleme işlemi sırasında paketteki tüm dosyalar alınır ve Dockerfile üzerinden Docker derleme işlemi çalıştırılır. Docker görüntüsü için ana makineyi gcr.io olarak ayarladığınız ve --tag işaretini belirttiğinizden, elde edilen Docker görüntüsü Google Cloud Container Registry'ye push edilir.

  1. Öncelikle, Cloud Build API'nin etkinleştiğinden emin olmak için şu komutu çalıştırın:
gcloud services enable cloudbuild.googleapis.com
  1. Derleme işlemini başlatmak için şu komutu çalıştırın:
cd ~/monolith-to-microservices/monolith gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 .
  1. Bu işlem birkaç dakika sürer.

Terminalde şuna benzer bir çıktı alınır:

ID CREATE_TIME DURATION SOURCE IMAGES STATUS 1ae295d9-63cb-482c-959b-bc52e9644d53 2019-08-29T01:56:35+00:00 33S gs://_cloudbuild/source/1567043793.94-abfd382011724422bf49af1558b894aa.tgz gcr.io//monolith:1.0.0 SUCCESS
  1. Derleme geçmişinizi görüntülemek veya işlemi gerçek zamanlı olarak izlemek için Gezinme menüsünü tıklayın, Araçlar bölümüne gidin ve Cloud Build > Geçmiş'i tıklayın. Burada önceki tüm derlemelerinizin listesini görebilirsiniz.

  2. Bir derlemeyle ilgili olarak günlük çıkışı dahil tüm ayrıntıları görmek için derlemenin adını tıklayın.

İsteğe bağlı: Derleme ayrıntıları sayfasından, derleme bilgileri bölümündeki Derleme özeti > Yürütme ayrıntıları > Görüntü adı'na giderek container görüntüsünü inceleyebilirsiniz:

Sekmelere ayrılmış Yürütme Ayrıntıları sayfasında vurgulanan &quot;Görüntü adı&quot; seçeneği

Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın. Cloud Build ile Docker container'ı oluşturma

4. görev: Container'ı GKE'ye dağıtma

Web sitenizi container mimarisine aldığınıza ve container'ınızı Google Container Registry'ye aktardığınıza göre sıra Kubernetes'e dağıtım yapmaya geldi.

Uygulamaları bir GKE kümesinde dağıtıp yönetmek için Kubernetes küme yönetimi sistemiyle iletişim kurmanız gerekir. Bunun için genellikle kubectl komut satırı aracı kullanılır.

Kubernetes'te uygulamalar Kapsüller şeklinde temsil edilir. Kapsüller, bir container'ı (veya birbirlerine sıkı sıkıya bağlı bir grup container'ı) temsil eden birimlerdir. Kapsül, Kubernetes'teki en küçük dağıtılabilir birimdir. Bu laboratuvardaki her kapsülde yalnızca monolit container'ınız yer almaktadır.

Uygulamanızı dağıtmak için bir Dağıtım kaynağı oluşturun. Dağıtım, uygulamanızın replika adı verilen birden fazla kopyasını yönetir ve bu kopyaların her birinin kümenizdeki ayrı birer düğümde çalıştırılmasını planlar. Bu laboratuvarda, Dağıtım tarafından uygulamanızın yalnızca bir kapsülü çalıştırılacaktır. Dağıtımlar bunun için bir ReplicaSet oluşturur. ReplicaSet, belirtilen sayıda replikanın her zaman çalışmasını sağlamaktan sorumludur.

Şimdi kullanacağınız kubectl create deployment komutu, Kubernetes'in kümenizde monolith adlı ve 1 replikalı bir Dağıtım oluşturmasını sağlar.

  • Uygulamanızı dağıtmak için şu komutu çalıştırın:
kubectl create deployment monolith --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 Not: En iyi uygulama olarak, bu değişiklikleri depolamak için YAML dosyası ve GitHub veya Cloud Source Repositories gibi bir kaynak denetim sistemi kullanmanızı öneririz. Bu kaynaklar hakkında daha fazla bilgiye Dağıtım belgelerinden ulaşabilirsiniz.

Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın. Container'ı GKE'ye dağıtma

Dağıtımı doğrulama

  1. Dağıtımın başarıyla oluşturulduğunu doğrulayın:
kubectl get all

Kapsül durumu Çalışıyor olana dek komutu yeniden çalıştırın.

Çıkış:

NAME READY STATUS RESTARTS AGE pod/monolith-7d8bc7bf68-htm7z 1/1 Running 0 6m21s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.27.240.1 443/TCP 24h NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deployment.apps/monolith 1 1 1 1 20m NAME DESIRED CURRENT READY AGE replicaset.apps/monolith-7d8bc7bf68 1 1 1 20m

Bu çıkışta çeşitli bilgiler sunulmaktadır:

  • Dağıtım (güncel)
  • ReplicaSet (kapsül sayısı, istendiği gibi 1)
  • Kapsül (çalışıyor)

Bu durumda tüm öğeler başarıyla oluşturulmuş demektir.

Not: Kubernetes dağıtımlarınızı Gezinme menüsü > Kubernetes Engine > İş Yükleri'ni açarak Konsol üzerinden de görüntüleyebilirsiniz. Not: Herhangi bir hata veya beklenmedik durumla karşılaşırsanız kaynaklarınızla ilgili ayrıntılı bilgileri görüntülemek için aşağıdaki komutları kullanarak kaynaklarınızdaki hataları ayıklayabilirsiniz:

kubectl describe pod monolith

kubectl describe pod/monolith-7d8bc7bf68-2bxts

kubectl describe deployment monolith

kubectl describe deployment.apps/monolith

Çıkışın sonunda, hata oluşturan etkinliklerin listesi ve kaynaklarınız hakkında ayrıntılı bilgiler gösterilir.

İsteğe bağlı: Her bir komutu dağıtımlarınız için ayrı ayrı da çalıştırabilirsiniz:

# Kapsülleri gösterme kubectl get pods # Dağıtımları gösterme kubectl get deployments # Replika kümelerini gösterme kubectl get rs #Dilerseniz bunları birleştirebilirsiniz kubectl get pods,deployments

Kubernetes'in tüm avantajlarını görmek için bir kapsülü silerek sunucu çöküşü simülasyonu yapın ve neler olacağını öğrenin.

  1. Önceki komuttan bir kapsül adı kopyalayın ve bu adı, aşağıdaki komutun ilgili yerinde kullanın. Komut yardımıyla kapsülü silin:
kubectl delete pod/<KAPSÜL_ADI>

Silme işlemini İş Yükleri sayfasından izleyebilirsiniz.

  1. İş yükü adını tıklayın (hızla gerçekleşir).

  2. Yeterince hızlı hareket ederseniz get all komutunu yeniden çalıştırarak biri sonlandırılan ve diğeri oluşturulan veya çalıştırılan iki kapsül görebilirsiniz:

kubectl get all

Çıkış:

NAME READY STATUS RESTARTS AGE pod/monolith-7d8bc7bf68-2bxts 1/1 Running 0 4s pod/monolith-7d8bc7bf68-htm7z 1/1 Terminating 0 9m35s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.27.240.1 443/TCP 24h NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deployment.apps/monolith 1 1 1 1 24m NAME DESIRED CURRENT READY AGE replicaset.apps/monolith-7d8bc7bf68 1 1 1 24m

Neden böyle oldu? ReplicaSet, kapsülün sonlandırıldığını gördü ve istenen replika sayısını korumak için yeni bir kapsül oluşumunu tetikledi. Sonraki bölümlerde, birden fazla örneğin çalışacağı şekilde ölçeğin nasıl genişletildiğini göreceksiniz. Bu durumda örneklerden birinin çökmesi, kullanıcılara sitenin veya uygulamanın kapalı kaldığı süre olarak yansımaz.

5. görev: GKE dağıtımını kullanıma sunma

Uygulamanızı GKE'de dağıttınız ancak uygulamaya küme dışından erişilemiyor. Varsayılan olarak, GKE'de çalıştırılan container'ların harici bir IP adresi bulunmadığından bu container'lara internet üzerinden erişilemez. İnternet trafiği alabilmesi için uygulamanızı bir Hizmet kaynağı üzerinden açıkça kullanıma sunmanız gerekir. Hizmetler, uygulamanızın kapsüllerine ağ ve IP desteği sağlar. GKE, uygulamanız için harici bir IP adresi ve bir yük dengeleyici oluşturur.

  • Web sitenizi internet üzerinden kullanıma sunmak için aşağıdaki komutu çalıştırın:
kubectl expose deployment monolith --type=LoadBalancer --port 80 --target-port 8080

Hizmete erişme

GKE, harici IP adresini Dağıtım'a değil Hizmet kaynağına atar.

  1. GKE tarafından uygulamanıza sağlanan harici IP adresini öğrenmek istiyorsanız hizmeti incelemek için kubectl get service komutunu kullanabilirsiniz:
kubectl get service

Çıkış:

NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE monolith 10.3.251.122 203.0.113.0 80:30877/TCP 3d

Hizmetiniz için harici bir IP adresi görene dek komutu yeniden çalıştırın.

  1. Uygulamanızın harici IP adresini gördüğünüzde kopyalayın. Ardından, tarayıcınızı bu URL'ye (örneğin "http://203.0.113.0") yönlendirerek uygulamanızın erişilebilir olup olmadığını kontrol edin.

Daha önce test ettiğiniz web sitesini göreceksiniz. Web siteniz artık Kubernetes'te tam olarak çalışıyor.

Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın. GKE dağıtımını kullanıma sunma

6. görev: GKE dağıtımını ölçeklendirme

Artık uygulamanız GKE'de çalışıyor ve internet üzerinden kullanıma açık. Web sitenizin çok popülerleştiğini hayal edin. Uygulamanızın tüm bu trafikle başa çıkabilmesi için uygulama ölçeğini birden fazla örneğin kullanılacağı şekilde artıracak bir yöntem gereklidir. Şimdi de uygulamanın ölçeğini 3 replikaya kadar nasıl artırabileceğinizi öğreneceksiniz.

  1. Dağıtımınızın ölçeğini 3 replikaya kadar artırmak için Cloud Shell'de aşağıdaki komutu çalıştırın:
kubectl scale deployment monolith --replicas=3
  1. Dağıtımın başarıyla ölçeklendirildiğini doğrulayın:
kubectl get all

Çıkış:

NAME READY STATUS RESTARTS AGE pod/monolith-7d8bc7bf68-2bxts 1/1 Running 0 36m pod/monolith-7d8bc7bf68-7ds7q 1/1 Running 0 45s pod/monolith-7d8bc7bf68-c5kxk 1/1 Running 0 45s NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/kubernetes ClusterIP 10.27.240.1 443/TCP 25h service/monolith LoadBalancer 10.27.253.64 XX.XX.XX.XX 80:32050/TCP 6m7s NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE deployment.apps/monolith 3 3 3 3 61m NAME DESIRED CURRENT READY AGE replicaset.apps/monolith-7d8bc7bf68 3 3 3 61m

Artık kapsülünüzün çalıştırıldığı 3 örnek görmeniz gerekir. Dağıtım ve replika kümesi sayısının da artık istendiği gibi 3 olduğunu fark edeceksiniz.

Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın. GKE dağıtımını ölçeklendirme

7. görev: Web sitesinde değişiklik yapma

Senaryo: Pazarlama ekibiniz sizden sitenizin ana sayfasını değiştirmenizi istedi. Bu sayfanın şirketinizin kimliği ve aslında nelerin satışını yaptığı konusunda daha bilgilendirici olması gerektiğini düşünüyorlar.

Görev: Pazarlama ekibini memnun etmek için ana sayfaya bazı metinler ekleyeceksiniz. Geliştiricilerden biri istenen değişiklikleri index.js.new adlı bir dosyada zaten hazırlamış. Bu dosyayı index.js dosyasına kopyalarsanız değişiklikler sayfaya yansıtılacaktır. Uygun değişiklikleri yapmak için aşağıdaki talimatları uygulayın.

  1. Şu komutları çalıştırarak güncellenmiş dosyayı taşıyın ve dosya adının doğru olmasını sağlayın:
cd ~/monolith-to-microservices/react-app/src/pages/Home mv index.js.new index.js
  1. Dosyanın içeriğini yazdırarak değişiklikleri doğrulayın:
cat ~/monolith-to-microservices/react-app/src/pages/Home/index.js

Bu işlem sonucunda elde edilen kod aşağıdaki gibi görünmelidir:

/* Copyright 2019 Google LLC Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at https://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. \*/ import React from "react"; import { makeStyles } from "@material-ui/core/styles"; import Paper from "@material-ui/core/Paper"; import Typography from "@material-ui/core/Typography"; const useStyles = makeStyles(theme => ({ root: { flexGrow: 1 }, paper: { width: "800px", margin: "0 auto", padding: theme.spacing(3, 2) } })); export default function Home() { const classes = useStyles(); return (
Fancy Fashion & Style Online
Tired of mainstream fashion ideas, popular trends and societal norms? This line of lifestyle products will help you catch up with the Fancy trend and express your personal style. Start shopping Fancy items now!
); }

React bileşenleri güncellendi ancak statik dosyaların oluşturulması için React uygulamasının derlenmesi gerekiyor.

  1. React uygulamasını derlemek için aşağıdaki komutu çalıştırın ve monolitin herkese açık dizinine kopyalayın:
cd ~/monolith-to-microservices/react-app npm run build:monolith

Artık kod güncellendiğine göre Docker container'ını yeniden oluşturup Google Cloud Container Registry'de yayınlamanız gerekiyor. Önceki komutu tekrar kullanın ancak bu kez sürüm etiketini güncelleyin.

  1. Güncellenmiş 2.0.0 görüntü sürümüyle yeni bir bulut derlemesi tetiklemek için aşağıdaki komutu çalıştırın:
cd ~/monolith-to-microservices/monolith gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 .

Sonraki bölümde, kapalı kalma süresi olmadan uygulamanızı güncellemek için bu görüntüyü kullanacaksınız.

Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın. Web sitesinde değişiklik yapma

8. görev: Kapalı kalma süresi olmadan web sitesini güncelleme

Değişiklikler tamamlandı ve pazarlama ekibi yaptığınız güncellemelerden memnun kaldı. Şimdi sırada kullanıcıların işlerini kesintiye uğratmadan web sitesini güncellemek var.

GKE'nin periyodik güncelleme mekanizması, eski container görüntünüzün örnekleri çalışan tüm replikalarda sistem tarafından yeni container görüntünüzle değiştirilirken bile uygulamanızın çalışır ve kullanılabilir durumda kalmasını sağlar.

  • Dağıtımınıza ait görüntüyü yeni bir sürüme güncellemek istediğinizi Kubernetes'e bildirmek için aşağıdaki komutu kullanın:
kubectl set image deployment/monolith monolith=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0

Dağıtımı doğrulama

  1. Dağıtım güncellemenizi doğrulamak için şu komutu çalıştırın:
kubectl get pods

Çıkış:

NAME READY STATUS RESTARTS AGE monolith-584fbc994b-4hj68 1/1 Terminating 0 60m monolith-584fbc994b-fpwdw 1/1 Running 0 60m monolith-584fbc994b-xsk8s 1/1 Terminating 0 60m monolith-75f4cf58d5-24cq8 1/1 Running 0 3s monolith-75f4cf58d5-rfj8r 1/1 Running 0 5s monolith-75f4cf58d5-xm44v 0/1 ContainerCreating 0 1s

Burada 3 yeni kapsül oluşturulduğunu ve eski kapsüllerinizin sonlandırıldığını göreceksiniz. Yaşlarına bakarak yeni ve eski kapsülleri ayırt edebilirsiniz. En sonunda, yine yalnızca 3 kapsül gösterilir. Bunlar, güncellenmiş 3 kapsülünüzdür.

  1. Web sunucusunu başlatmak için aşağıdaki komutu çalıştırarak uygulamayı test edin:
npm start
  1. Değişikliklerinizi doğrulamak için uygulama web sayfası sekmesine dönüp sayfayı yenileyin. Uygulamanızın güncellendiğini fark edeceksiniz.

Az önce ana sayfa bileşenine eklemiş olduğunuz metin artık web sitenizde gösterilir.

Fancy Store ana sayfası

  1. Web sunucusu işlemini durdurmak için Cloud Shell'de CTRL+C tuşlarına basın.

Hedefi doğrulamak için İlerleme durumumu kontrol et'i tıklayın. Kapalı kalma süresi olmadan web sitesini güncelleme

9. görev: Temizleme

Bu laboratuvarı tamamladığınızda tüm kaynaklar silinir. Yine de, artık ihtiyaç duymadığınız kaynakları kendi ortamınızdan kaldırmanız önerilir.

  1. Git deposunu silin:
cd ~ rm -rf monolith-to-microservices
  1. Google Container Registry görüntülerini silin:
# Monolitin 1.0.0 sürümüne ait container görüntüsünü silme gcloud container images delete gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 --quiet # Monolitin 2.0.0 sürümüne ait container görüntüsünü silme gcloud container images delete gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 --quiet
  1. Google Cloud Storage'daki Google Cloud Build yapılarını silin:
# Aşağıdaki komut tüm derlemelere ait kaynak arşivlerinin tümünü alarak Cloud Storage'dan siler # Tüm kaynakları yazdırmak için şu komutu çalıştırın: # gcloud builds list | awk 'NR > 1 {print $4}' gcloud builds list | grep 'SOURCE' | cut -d ' ' -f2 | while read line; do gsutil rm $line; done
  1. GKE hizmetini silin:
kubectl delete service monolith kubectl delete deployment monolith
  1. GKE kümesini silin:
gcloud container clusters delete fancy-cluster {{{project_0.default_region | lab region}}}
  1. Y yazarak işlemi onaylayın. Bu komutun çalıştırılması biraz zaman alabilir.

Tebrikler!

Web sitenizi GKE'de başarıyla dağıttınız, ölçeklendirdiniz ve güncellediniz. Artık Docker ve Kubernetes konularında deneyimli bir kullanıcısınız!

Görevinizi tamamlayın

Bu yönlendirmesiz öğrenim laboratuvarı, Website on Google Cloud (Google Cloud'da Web Sitesi) görevinin bir parçasıdır. Görevler, bir öğrenme rotasını oluşturan birbiriyle bağlantılı laboratuvar dizilerini ifade eder. Bu laboratuvara katıldıysanız bu göreve kaydolun ve hemen bir tamamlama kredisi kazanın. Katılabileceğiniz diğer görevlere göz atın.

Becerilerinizi gösterip bilgilerinizi doğrulamak için uygulamalı bir yarışma laboratuvarına katılmak ister misiniz? Söz konusu görevi bitirdikten sonra bu ek yarışma laboratuvarını tamamlayarak özel bir Google Cloud dijital rozeti kazanın.

Sonraki laboratuvarınıza katılın

Google Kubernetes Engine'de Monolitik Bir Web Sitesini Mikro Hizmetlere Taşıma laboratuvarına katılarak öğrenmeye devam edin veya aşağıdaki önerilere göz atın:

Sonraki adımlar / Daha fazla bilgi

Kılavuzun Son Güncellenme Tarihi: 13 Eylül 2023

Laboratuvarın Son Test Edilme Tarihi: 13 Eylül 2023

Telif Hakkı 2024 Google LLC Tüm hakları saklıdır. Google ve Google logosu, Google LLC şirketinin ticari markalarıdır. Diğer tüm şirket ve ürün adları ilişkili oldukları şirketlerin ticari markaları olabilir.