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.
Tüm bunları yapmanıza ve hatta otomatik hale getirmenize yardımcı olabilecek bir araç düşünün! GKE ile tüm bunları yapmakla kalmayıp bu işlemleri kolaylaştırabilirsiniz. Bu codelab'de, kurgusal bir şirket olan Fancy Store için e-ticaret web sitesi işleten bir geliştiricinin rolünü oynayacaksınız. Ölçeklendirme ve kesintilerle ilgili sorunlar nedeniyle uygulamanızı GKE'ye dağıtmakla görevlendirildiniz.
Alıştırmalar, yaygın bir bulut geliştiricisinin deneyimini yansıtacak şekilde sıralanmıştır:
- GKE kümesi oluşturun.
- Docker container'ı oluşturun.
- Container'ı GKE'ye dağıtın.
- Kapsayıcıyı bir hizmet aracılığıyla kullanıma sunun.
- Container'ı birden fazla replika içerecek şekilde ölçeklendirin.
- Web sitesinde değişiklik yapın.
- 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ünde bir proje
- Docker ve Kubernetes hakkında temel düzeyde bilgi (Temel bilgi sahibi değilseniz lütfen hemen Docker ve Kubernetes'i inceleyin.)
2. Ortam kurulumu
Kendi hızınızda ortam kurulumu
Google Hesabınız yoksa bir 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 projeleri için benzersiz bir ad olduğunu unutmayın (yukarıdaki ad daha önce alınmış ve bu ad sizin için uygun olmayacaktır!). Daha sonra PROJECT_ID
olarak adlandırılacaktır.
Sonraki adımda, Google Cloud kaynaklarını kullanmak için Cloud Console'da faturalandırmayı etkinleştirmeniz gerekir. Yeni Google Cloud kullanıcıları 300 ABD doları değerinde ücretsiz denemeden yararlanabilir. Yeni bir kullanıcı değilseniz endişelenmeyin. codelab'in maliyeti birkaç dolardan fazla olmayacaktır. Ancak daha fazla kaynak kullanırsanız veya bu kaynakları çalışır durumda bırakırsanız codelab'in maliyeti daha yüksek olabilir (Sondaki "temizlik" bölümüne bakın). Daha fazla bilgi için Fiyatlandırma'ya bakın.
Cloud Shell
Google Cloud ve GKE'yi dizüstü bilgisayarınızla uzaktan çalıştırabilirsiniz. Codelab için ise Cloud'da çalışan bir komut satırı ortamı olan Cloud Shell'i kullanacaksınız.
Bu Debian tabanlı sanal makine, ihtiyacınız olan tüm geliştirme araçlarıyla yüklüdür. 5 GB boyutunda kalıcı bir ana dizin sunar ve Google Cloud'da çalışarak ağ performansını ve kimlik doğrulamasını büyük ölçüde iyileştirir. Yani bu codelab'de ihtiyacınız olan tek şey bir tarayıcıdır (Evet, Chromebook'ta çalışır).
- Cloud Shell'i Cloud Console'dan etkinleştirmek için Cloud Shell'i etkinleştir simgesini tıklamanız yeterlidir (sağlanması ve ortama bağlanması yalnızca birkaç dakika sürer).
Cloud Shell'e bağlandıktan sonra kimliğinizin doğrulandığını ve projenin PROJECT_ID
olarak ayarlanmış olduğunu göreceksiniz.
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 vermeniz yeterlidir:
gcloud config set project <PROJECT_ID>
PROJECT_ID
cihazınızı mı arıyorsunuz? Kurulum adımlarında kullandığınız kimliği kontrol edin veya Cloud Console kontrol panelinden arayın:
Cloud Shell bazı ortam değişkenlerini de varsayılan olarak ayarlar. Bu değişkenler, gelecekte komut çalıştırdığınızda işinize yarayabilir.
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 farklı alt bölgeler seçebilirsiniz. Daha fazla bilgi için Bölgeler ve Bölgeler.
3. GKE kümesi oluşturma
Geliştirme ortamınız çalışır durumda olduğuna göre artık 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. Container'lar API'sini 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 adında 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ırarak kümenin üç çalışan sanal makine örneğini görüntüleyin:
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 ilerleyin ve Kümeler'i tıklayın. fancy-cluster adlı kümenizi göreceksiniz.
Tebrikler! İlk kümenizi oluşturdunuz.
4. Kaynak depoyu klonlama
Bu mevcut bir web sitesi olduğundan, sadece depodan kaynağı klonlamanız yeterlidir. Böylece Docker görüntüleri oluşturup GKE'ye dağıtmaya odaklanabilirsiniz.
Kaynak depoyu Cloud Shell örneğinize klonlamak için aşağıdaki komutları çalıştırın ve uygun dizin değişikliğini yapın. Uygulamanızı dağıtmadan önce test edebilmeniz için Node.js bağımlılıklarını yüklemeniz gerekir.
cd ~ git clone https://github.com/googlecodelabs/monolith-to-microservices.git cd ~/monolith-to-microservices ./setup.sh
Bu işlem kod deposunu klonlar, dizini değiştirir ve uygulamanızı yerel olarak çalıştırmak için gereken bağımlılıkları yükler. Söz konusu komut dosyasının çalışması birkaç dakika sürebilir.
Gerekli özeni gösterin ve başvurunuzu 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!
Uygulamanızı önizlemek için Cloud Shell menüsündeki web önizlemesi simgesini tıklayın ve 8080 bağlantı noktasında Önizleme'yi seçin.
Bunu yaptığınızda Fancy Store'u iş başında görebilirsiniz.
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 kullanıma 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 GKE'nin aldığı görüntünün depolanması için bu container bir kayıt defterine aktarılır. Ancak Docker container'ı Cloud Build yardımıyla oluşturup görüntüyü tek bir komutla Container Registry'ye yerleştirebilirsiniz. (Docker dosyası oluşturma ve aktarma işlemlerinden oluşan manuel işlemi görüntülemek için Container Registry hızlı başlangıç kılavuzu sayfasına göz atı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 dosyalar paketten 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 içeren --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 Cloud Shell'de aşağıdaki komutu çalıştırarak derleme işlemini başlatı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 ilerleyin, ardından Cloud Build'i ve son olarak Geçmiş'i tıklayın. Burada, önceki derlemelerinizin listesini görebilirsiniz ancak yalnızca sizin oluşturduğunuz derleme bulunur.
Build ID'yi (Derleme kimliği) 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ında, 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 container'ı 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önetim 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. Burada her kapsülde yalnızca monolit container'ınız yer alı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 bu iş 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ını sağlar.
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. Dağıtımınızı (güncel) görebilirsiniz. ReplicaSet'iniz, istenilen Kapsül sayısı bir; çalışan Kapsülünüz gösterilir. Tüm öğeleri başarıyla oluşturduğunuz anlaşılıyor.
Kaynaklarınızı tek tek 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 kilitlenmesini simüle edebilir, Kapsülü silebilir ve neler olacağını görebilirsiniz.
Önceki komuttan kapsül adınızı kopyalayın ve kapsülü silmek için aşağıdaki komutu çalıştırın:
kubectl delete pod/<POD_NAME>
Yeterince hızlı hareket ederseniz önceki komutu çalıştırarak tümünü tekrar görebilirsiniz. Biri sonlandırılan, diğeri oluşturulan veya çalıştırılan iki Kapsül görürsünüz:
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ğinizin çalışacağından emin olmak için nasıl ölçeklendirme yapacağınızı göreceksiniz. Bu sayede, örneklerden birinin çökmesi durumunda kullanıcılarınız hiç kesinti yaşamaz.
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ülleri için ağ ve IP desteği sağlar. GKE, uygulamanız için harici bir IP adresi ve bir 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'nin uygulamanıza sağladığı harici IP adresini bulmak 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 Kubernetes'te tamamen çalışıyor.
8. GKE dağıtımını ölçeklendirme
Artık GKE'de uygulamanızın çalışan bir örneğiniz olduğuna ve bunu internete sunduğunuza göre web siteniz son derece popüler hale geldi. Trafiği yönetebilmek için uygulamanızın ölçeğini birden fazla örneğin kullanılacağı şekilde artıracak bir yönteme ihtiyacınız var. Uygulamanızı üç replikaya kadar ölçeklendirmeyi öğrenin.
Dağıtımınızı üç replikaya kadar ölçeklendirmek 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 Deployment ve ReplicaSet'inizin artık istediğiniz sayıda olduğunu unutmayın.
9. Web sitesinde değişiklik yapma
Pazarlama ekibiniz, web sitenizin ana sayfasını değiştirmenizi istedi. Bu sayfanın şirketinizin ne olduğunu ve aslında ne sattığınızı açıklayarak daha bilgilendirici olması gerektiğini düşünüyorlar. Bu bölümde pazarlama ekibini mutlu etmek için ana sayfaya bazı metinler ekleyeceksiniz. Geliştiricilerimizden biri, istenen değişiklikleri index.js.new
adında hazırlamış. Dosyayı index.js
hedefine 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 dosyanın 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
Artık kodunuz güncellendiğine göre Docker container'ınızı yeniden oluşturup Container Registry'de yayınlamanız gerekiyor. Aynı komutu öncekiyle aynı şekilde kullanabilirsiniz ancak bu kez sürüm etiketini güncelleyeceksiniz.
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ı. Sırada, kullanıcıların işlerini kesintiye uğratmadan web sitesini güncellemek var. 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üzün örnekleriyle değiştirilse bile uygulamanızın çalışır ve kullanılabilir durumda kalmasını sağlar.
Komut satırından, aşağıdaki komutla Kubernetes'e Dağıtımınıza ait görüntüyü yeni bir sürüme güncellemek istediğinizi belirtebilirsiniz:
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 oluşturulduğunu ve eski kapsüllerinizin sonlandırıldığını görüyorsunuz. Yaşlara bakarak yeni ve eski kapsülleri ayırt edebilirsiniz. En sonunda yine yalnızca üç kapsül göreceksiniz. Bunlar, güncellenmiş üç kapsülünüz olacak.
Değişikliklerinizi doğrulamak için tekrar yük dengeleyicinin harici IP'sine gidin ve uygulamanızın güncellendiğine dikkat edin.
Hizmetleri listelemek ve unutursanız IP adresini görüntülemek için aşağıdaki komutu çalıştırın:
kubectl get svc
Web sitenizde, ana sayfa bileşenine eklediğiniz metin gösterilecektir.
11. Temizleme
Git deposunu sil
cd ~ rm -rf monolith-to-microservices
Container Registry görüntülerini silin
NOT: Başka sürümler oluşturduysanız bu resimleri silmek için de aynı söz dizimini kullanabilirsiniz. Bu codelab'de yalnızca iki etiketinizin 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ı gs://<PROJECT_ID>_cloudbuild/source
Cloud Storage paketinden 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 sil
kubectl delete service monolith kubectl delete deployment monolith
GKE kümesini silin
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!