1. Giriş
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. GKE size bu olanakların hepsini sunmakla kalmaz, bu işlemleri zahmetsiz hale de getirir. Bu codelab'de, kurgusal bir şirket olan Fancy Store için e-ticaret web sitesi işleten bir geliştirici rolünü üstleneceksiniz. Şirketin karşılaştığı ölçeklendirme sorunları ve kesintiler nedeniyle uygulamanızı GKE'ye dağıtmanız istendi.
Alıştırmalar, bulut geliştiricilerinin sıkça takip ettiği adımlara uygun şekilde sıralanmıştır:
- GKE kümesi oluşturun.
- Docker container'ı oluşturun.
- Container'ı GKE'ye dağıtın.
- Container'ı bir hizmet aracılığıyla kullanıma sunma.
- Container'ı birden fazla replika içerecek şekilde ölçeklendirin.
- Web sitesini değiştirin.
- Kapalı kalma süresi olmadan yeni sürümü kullanıma sunma
Mimari şeması

Neler öğreneceksiniz?
- GKE kümesi oluşturma
- Docker görüntüsü oluşturma
- Docker görüntülerini Kubernetes'e dağıtma
- Kubernetes'te uygulama ölçeklendirme
- Kubernetes'te periyodik güncelleme gerçekleştirme
Ön koşullar
- Proje oluşturmak için yönetim erişimine sahip bir Google Hesabı veya proje sahibi rolüne sahip olduğunuz bir proje
- Docker ve Kubernetes'e dair genel bilgi (Temel bilgilere sahip değilseniz lütfen Docker ve Kubernetes'i inceleyin.)
2. Ortam kurulumu
Yönlendirmesiz ortam kurulumu
Google Hesabınız yoksa hesap oluşturmanız gerekir. Google Cloud Console'da oturum açın ve yeni bir proje oluşturun.


Proje kimliğinin tüm Google Cloud projelerinde benzersiz bir ad olduğunu unutmayın (yukarıdaki ad zaten alınmış olduğundan sizin için çalışmayacaktır). Bu öğe, daha sonra PROJECT_ID olarak adlandırılacaktır.
Ardından, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Google Cloud'un yeni kullanıcıları 300 ABD doları değerinde ücretsiz deneme sürümünden yararlanabilir. Yeni bir kullanıcı değilseniz endişelenmeyin. Bu codelab'in maliyeti birkaç doları geçmez. Ancak daha fazla kaynak kullanırsanız veya kaynakları çalışır durumda bırakırsanız (sonundaki "temizleme" bölümüne bakın) codelab size daha fazla maliyete neden olabilir. Daha fazla bilgi için Fiyatlandırma bölümüne bakın.
Cloud Shell
Dizüstü bilgisayarınızla Google Cloud ve GKE'yi uzaktan çalıştırabilirsiniz ancak bu codelab'de Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız.
Bu Debian tabanlı sanal makine, ihtiyaç duyacağınız tüm geliştirme araçlarını içerir. 5 GB boyutunda kalıcı bir ana dizin bulunur ve Google Cloud'da çalışır. Bu sayede ağ performansı ve kimlik doğrulama önemli ölçüde güçlenir. Bu nedenle, bu codelab için ihtiyacınız olan tek şey bir tarayıcıdır (Chromebook'ta da çalışır).
- Cloud Shell'i Cloud Console'dan etkinleştirmek için Cloud Shell'i etkinleştir 'i
tıklamanız yeterlidir (ortamın sağlanması ve bağlantının kurulması yalnızca birkaç saniye sürer).
Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin, PROJECT_ID'nize ayarlandığını görürsünüz.
gcloud auth list
Komut çıkışı
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Komut çıkışı
[core] project = <PROJECT_ID>
Herhangi bir nedenle proje ayarlanmamışsa şu komutu verin:
gcloud config set project <PROJECT_ID>
PROJECT_ID cihazınızı mı arıyorsunuz? Kurulum adımlarında hangi kimliği kullandığınızı kontrol edin veya Cloud Console kontrol panelinde arayın:
Cloud Shell, gelecekteki komutları çalıştırırken faydalı olabilecek bazı ortam değişkenlerini de varsayılan olarak ayarlar.
echo $GOOGLE_CLOUD_PROJECT
Komut çıkışı
<PROJECT_ID>
- Son olarak, varsayılan alt bölgeyi ve proje yapılandırmasını ayarlayın.
gcloud config set compute/zone us-central1-f
Çeşitli bölgeler arasından seçim yapabilirsiniz. Daha fazla bilgi için Bölgeler ve Alt Bölgeler başlıklı makaleyi inceleyin.
3. GKE kümesi oluşturma
Geliştirme ortamınız çalışır durumda olduğuna göre şimdi, web sitenizi dağıtacağınız bir GKE kümesine ihtiyacınız var. Küme oluşturmadan önce uygun API'lerin etkinleştirildiğinden emin olmanız gerekir. Containers API'yi etkinleştirmek için aşağıdaki komutu çalıştırın:
gcloud services enable container.googleapis.com
Artık kümenizi oluşturabilirsiniz. fancy-cluster adlı ve 3 düğümlü bir küme oluşturmak için aşağıdaki adımları uygulayın:
gcloud container clusters create fancy-cluster --num-nodes 3
Kümenin oluşturulması birkaç dakika sürebilir. Ardından, aşağıdaki komutu çalıştırın ve kümenin üç çalışan sanal makine (VM) örneğini görün:
gcloud compute instances list
Çıkış:
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS gke-fancy-cluster-default-pool-ad92506d-1ng3 us-east4-a n1-standard-1 10.150.0.7 XX.XX.XX.XX RUNNING gke-fancy-cluster-default-pool-ad92506d-4fvq us-east4-a n1-standard-1 10.150.0.5 XX.XX.XX.XX RUNNING gke-fancy-cluster-default-pool-ad92506d-4zs3 us-east4-a n1-standard-1 10.150.0.6 XX.XX.XX.XX RUNNING
Kümenizi ve ilgili bilgileri Cloud Console'da da görüntüleyebilirsiniz. Sol üst köşedeki menü düğmesini tıklayın, Kubernetes Engine'e gidin ve Kümeler'i tıklayın. fancy-cluster adlı kümenizi göreceksiniz.


Tebrikler! İlk kümenizi oluşturdunuz.
4. Kaynak depoyu klonlama
Var olan bir web sitesiyle çalıştığınız için yalnızca depodaki kaynağı klonlamanız yeterlidir. Böylece, Docker görüntüsü oluşturup GKE'ye dağıtım yapmaya odaklanabilirsiniz.
Kaynak depoyu Cloud Shell örneğinize klonlamak ve uygun dizine değiştirmek için aşağıdaki komutları çalıştırın. Dağıtım öncesinde uygulamanızı test edebilmeniz için Node.js bağımlılıklarını da yüklemeniz gerekir.
cd ~ git clone https://github.com/googlecodelabs/monolith-to-microservices.git cd ~/monolith-to-microservices ./setup.sh
Bu komut, depoyu klonlar, dizini değiştirir ve uygulamanızı yerel olarak çalıştırmak için gereken bağımlılıkları yükler. Bu komut dosyasının çalışması birkaç dakika sürebilir.
Gerekli özeni gösterin ve uygulamanızı test edin. Web sunucunuzu başlatmak için aşağıdaki komutu çalıştırın:
cd ~/monolith-to-microservices/monolith npm start
Çıkış:
Monolith listening on port 8080!
Cloud Shell menüsünde web önizlemesi simgesini tıklayıp 8080 numaralı bağlantı noktasında önizle'yi seçerek uygulamanızı önizleyebilirsiniz.

Bu işlemi yaptığınızda Fancy Store'u iş başında görebileceğiniz yeni bir pencere açılır.

Web sitesini görüntüledikten sonra bu pencereyi kapatabilirsiniz. Web sunucusu işlemini durdurmak için terminal penceresinde Control+C (Windows veya Mac) tuşuna basın.
5. 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'ı derlenir ve görüntünün GKE'nin çekebileceği şekilde depolanması için bu container bir kayıt defterine aktarılır. Ancak Docker container'ı oluşturmak ve görüntüyü tek bir komutla Container Registry'ye yerleştirmek için Cloud Build'i kullanarak işinizi kolaylaştırabilirsiniz. (Docker dosyası oluşturma ve aktarma işlemlerinden oluşan manuel süreci görüntülemek için Container Registry Hızlı Başlangıç Kılavuzu'na bakın.)
Cloud Build, dizindeki dosyaları sıkıştırır ve bir Cloud Storage paketine taşır. Ardından, derleme işlemi sırasında paketteki 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 ayarlayıp --tag işaretini belirttiğinizden elde edilen Docker görüntüsü Container Registry'ye aktarılır.
Öncelikle aşağıdaki komutu çalıştırarak Cloud Build API'yi etkinleştirmeniz gerekir:
gcloud services enable cloudbuild.googleapis.com
API etkinleştirildikten sonra derleme işlemini başlatmak için Cloud Shell'de aşağıdaki komutu çalıştırın:
cd ~/monolith-to-microservices/monolith
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 .
Bu işlem birkaç dakika sürer ancak tamamlandıktan sonra terminalde aşağıdaki çıkışı görebilirsiniz:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ID CREATE_TIME DURATION SOURCE IMAGES STATUS 1ae295d9-63cb-482c-959b-bc52e9644d53 2019-08-29T01:56:35+00:00 33S gs://<PROJECT_ID>_cloudbuild/source/1567043793.94-abfd382011724422bf49af1558b894aa.tgz gcr.io/<PROJECT_ID>/monolith:1.0.0 SUCCESS
Derleme geçmişinizi görüntülemek veya işlemi gerçek zamanlı olarak izlemek için Cloud Console'a gidebilirsiniz. Sol üst köşedeki menü düğmesini tıklayın, Ci/CD'ye gidin, Cloud Build'i ve ardından Geçmiş'i tıklayın. Burada, önceki derlemelerinizin listesini görebilirsiniz. Ancak şimdilik yalnızca oluşturduğunuz derleme vardır.

Derleme kimliğini tıklarsanız derlemenin günlük çıkışı da dahil olmak üzere tüm ayrıntılarını görebilirsiniz.
Derleme ayrıntıları sayfasındaki derleme bilgileri bölümünde Görüntü adı'nı tıklayarak oluşturulan container görüntüsünü görebilirsiniz.

6. Container'ı GKE'ye dağıtma
Web sitenizi container mimarisine aldığınıza ve kapsayıcıyı Container Registry'ye aktardığınıza göre artık Kubernetes'e dağıtabilirsiniz.
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, bir container'ı (veya birbirlerine sıkı sıkıya bağlı bir grup container'ı) temsil eden birimler olan Kapsüller şeklinde temsil edilir. Kapsül, Kubernetes'teki en küçük dağıtılabilir birimdir. Burada her kapsülde yalnızca monolit container'ınız yer almaktadır.
Uygulamanızı dağıtmak için bir Dağıtım oluşturmanız gerekir. 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 durumda, 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.
kubectl create deployment komutu, Kubernetes'in kümenizde 1 replikaya sahip monolith adlı bir Dağıtım oluşturmasına neden olur.
Uygulamanızı dağıtmak için aşağıdaki komutu çalıştırın:
kubectl create deployment monolith --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0
Dağıtımı doğrulama
Dağıtımın başarıyla oluşturulduğunu doğrulamak için aşağıdaki komutu çalıştırın (Kapsül durumunun "Çalışıyor" olması birkaç dakika sürebilir):
kubectl get all
Çı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 <none> 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. Geçerli dağıtımınızı, istenen kapsül sayısı bir olan ReplicaSet'inizi ve çalışmakta olan kapsülünüzü görebilirsiniz. Her şeyi başarıyla oluşturmuşsunuz.
Kaynaklarınızı ayrı ayrı görüntülemek için aşağıdaki komutları çalıştırabilirsiniz:
# Show pods kubectl get pods # Show deployments kubectl get deployments # Show replica sets kubectl get rs #You can also combine them kubectl get pods,deployments
Kubernetes'in tüm avantajlarını görmek için sunucu kilitlenmesi simülasyonu yapabilir, kapsülü silebilir ve neler olacağını görebilirsiniz.
Önceki komuttan kapsül adınızı kopyalayın ve aşağıdaki komutu çalıştırarak silin:
kubectl delete pod/<POD_NAME>
Yeterince hızlı hareket ederseniz önceki komutu yeniden çalıştırarak her şeyi tekrar görebilirsiniz. Biri sonlandırılan ve diğeri oluşturulan veya çalıştırılan iki kapsül görmeniz gerekir:
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 <none> 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
Bu neden 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.
7. GKE dağıtımını kullanıma sunma
Uygulamanızı GKE'ye dağıttınız ancak uygulamaya küme dışından erişemiyorsunuz. 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 yük dengeleyici (faturalandırmaya tabidir) 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
Çıkış:
service/monolith exposed
Hizmete erişme
GKE, harici IP adresini Dağıtım'a değil Hizmet kaynağına atar. 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
Uygulamanızın harici IP adresini belirledikten sonra kopyalayın. Uygulamanızın erişilebilir olup olmadığını kontrol etmek için tarayıcınızı bu URL'ye (örneğin http://203.0.113.0) yönlendirin.

Daha önce test ettiğiniz web sitesini göreceksiniz. Tebrikler! Web siteniz artık Kubernetes'te tam olarak çalışıyor.
8. GKE dağıtımını ölçeklendirme
Artık uygulamanızın GKE'de çalışan bir örneği olduğuna ve internet üzerinden kullanıma açık olduğuna göre web siteniz çok popülerleşti. Trafiği yönetebilmek için uygulamanızın ölçeğini birden fazla örneğin kullanılacağı şekilde artıracak bir yöntem gereklidir. Uygulamanızı üç kopyaya kadar ölçeklendirmeyi öğrenin.
Dağıtımınızın ölçeğini üç replikaya kadar artırmak için aşağıdaki komutu çalıştırın:
kubectl scale deployment monolith --replicas=3
Çıkış:
deployment.apps/monolith scaled
Ölçeklendirilmiş dağıtımı doğrulama
Dağıtımın başarıyla ölçeklendirildiğini doğrulamak için aşağıdaki komutu çalıştırı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 <none> 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
Kapsülünüzün çalıştırıldığı üç örnek görmeniz gerekir. Ayrıca, dağıtımınızın ve ReplicaSet'inizin artık istenen üç sayıya sahip olduğunu unutmayın.
9. Web sitesinde değişiklik yapma
Pazarlama ekibiniz sizden web sitenizin ana sayfasını değiştirmenizi istedi. Bu sayfanın, şirketinizin ne olduğu ve aslında nelerin satışını yaptığı konusunda daha bilgilendirici olması gerektiğini düşünüyorlar. Bu bölümde, pazarlama ekibini memnun etmek için ana sayfaya bazı metinler ekleyeceksiniz. Geliştiricilerimizden biri, istenen değişiklikleri index.js.new adlı bir dosyada hazırlamış. Dosyayı index.js konumuna kopyalarsanız değişiklikleriniz sayfaya yansıtılacaktır. Uygun değişiklikleri yapmak için aşağıdaki talimatları uygulayın.
Aşağıdaki komutları çalıştırın, güncellenen dosyayı doğru dosya adına kopyalayın ve değişiklikleri doğrulamak için dosya içeriğini yazdırın:
cd ~/monolith-to-microservices/react-app/src/pages/Home mv index.js.new index.js 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 (
<div className={classes.root}>
<Paper className={classes.paper}>
<Typography variant="h5">
Fancy Fashion & Style Online
</Typography>
<br />
<Typography variant="body1">
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!
</Typography>
</Paper>
</div>
);
}
React bileşenlerini güncellediniz ancak statik dosyaları oluşturmak için React uygulamasını derlemeniz gerekiyor. 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
Kodunuz güncellendiğine göre Docker container'ınızı yeniden derleyip Container Registry'de yayınlamanız gerekiyor. Önceki komutu tekrar kullanabilirsiniz ancak bu kez sürüm etiketini güncelleyin.
Güncellenmiş 2.0.0 görüntü sürümüyle yeni bir Cloud Build tetiklemek için aşağıdaki komutu çalıştırın:
cd ~/monolith-to-microservices/monolith
#Feel free to test your application
npm start
gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 .
Web sunucusu işlemini durdurmak için terminal penceresinde Control+C (Windows veya Mac) tuşuna basın.
Sonraki bölümde, kapalı kalma süresi olmadan uygulamanızı güncellemek için bu görüntüyü kullanacaksınız.
10. 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ıra, kullanıcıların işlerini kesintiye uğratmadan web sitesini güncellemeye geldi. Web sitenizi güncellemek için aşağıdaki talimatları izleyin.
GKE'nin periyodik güncellemeleri, 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.
Komut satırından, aşağıdaki komutu kullanarak dağıtımınızın görüntüsünü yeni bir sürüme güncellemek istediğinizi Kubernetes'e bildirebilirsiniz:
kubectl set image deployment/monolith monolith=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0
Çıkış:
deployment.apps/monolith image updated
Dağıtımı doğrulama
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
Üç yeni kapsülün oluşturulduğunu ve eski kapsüllerinizin kapatıldığını görürsünüz. Yaşlarına bakarak yeni ve eski kapsülleri ayırt edebilirsiniz. En sonunda, yine yalnızca üç kapsül gösterilir. Bunlar, güncellenmiş üç kapsülünüzdür.
Değişikliklerinizi doğrulamak için yük dengeleyicinin harici IP'sine tekrar gidin ve uygulamanızın güncellendiğini görün.
Hizmetleri listelemek ve IP adresini görüntülemek için (unuttuysanız) aşağıdaki komutu çalıştırın:
kubectl get svc
Ana sayfa bileşenine eklediğiniz metin artık web sitenizde gösterilir.

11. Temizleme
Git deposunu silme
cd ~ rm -rf monolith-to-microservices
Container Registry görüntülerini silme
NOT: Başka sürümler oluşturduysanız bu resimleri de silmek için aynı söz dizimini kullanabilirsiniz. Bu codelab'de yalnızca iki etiketiniz olduğu varsayılır.
# Delete the container image for version 1.0.0 of our monolith
gcloud container images delete gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 --quiet
# Delete the container image for version 2.0.0 of our monolith
gcloud container images delete gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0 --quiet
Cloud Storage'daki Cloud Build yapılarını silme
NOT: Bu codelab dışındaki yapılar için Cloud Build'ü kullandıysanız kaynağınızı Cloud Storage paketinden gs://<PROJECT_ID>_cloudbuild/source manuel olarak silmeniz gerekir.
# The following command will take all source archives from all builds and delete them from cloud storage
# Run this command to print all sources:
# gcloud builds list | awk 'NR > 1 {print $4}'
gcloud builds list | awk 'NR > 1 {print $4}' | while read line; do gsutil rm $line; done
GKE hizmetini silme
kubectl delete service monolith kubectl delete deployment monolith
GKE kümesini silme
gcloud container clusters delete fancy-cluster
NOT: Bu komutun çalıştırılması biraz zaman alabilir.
12. Tebrikler!
Web sitenizi GKE'de dağıttınız, ölçeklendirdiniz ve güncellediniz. Artık Docker ve Kubernetes konularında deneyimli bir kullanıcısınız.