1. مقدمه
اجرای وب سایت ها و برنامه ها سخت است.
همه چیز در حالی که نباید اشتباه می شود، خرابی سرورها، افزایش تقاضا باعث استفاده بیشتر از منابع می شود، و ایجاد تغییرات بدون خرابی پیچیده و استرس زا است.
ابزاری را تصور کنید که می تواند به شما در انجام همه این کارها کمک کند و حتی به شما امکان می دهد آن را خودکار کنید! با GKE، همه اینها نه تنها ممکن است، بلکه آسان است! در این لبه کد، شما نقش یک توسعه دهنده را بر عهده می گیرید که یک وب سایت تجارت الکترونیک را برای یک شرکت خیالی - Fancy Store- اجرا می کند. به دلیل مشکلات مربوط به مقیاس بندی و قطع، شما وظیفه دارید برنامه خود را در GKE پیاده سازی کنید!
تمرینها برای منعکسکننده تجربه مشترک توسعهدهنده ابری سفارش داده شدهاند:
- یک خوشه GKE ایجاد کنید.
- یک ظرف Docker ایجاد کنید.
- کانتینر را در GKE مستقر کنید.
- ظرف را از طریق سرویس در معرض دید قرار دهید.
- ظرف را به چند کپی تبدیل کنید.
- وب سایت را اصلاح کنید.
- یک نسخه جدید با زمان توقف صفر عرضه کنید.
نمودار معماری
چیزی که یاد خواهید گرفت
- نحوه ایجاد یک خوشه GKE
- نحوه ایجاد یک تصویر داکر
- نحوه استقرار تصاویر Docker در Kubernetes
- چگونه یک برنامه را در Kubernetes مقیاس کنیم
- نحوه انجام یک به روز رسانی چرخشی در Kubernetes
پیش نیازها
- یک حساب Google با دسترسی مدیریتی برای ایجاد پروژه ها یا پروژه ای با نقش مالک پروژه
- درک اولیه از Docker و Kubernetes (اگر درک اولیه ندارید، لطفاً اکنون Docker و Kubernetes را مرور کنید.)
2. تنظیم محیط
تنظیم محیط خود به خود
اگر قبلاً یک حساب Google ندارید، باید یک حساب ایجاد کنید . وارد Google Cloud Console شوید و یک پروژه جدید ایجاد کنید.
به یاد داشته باشید، شناسه پروژه یک نام منحصر به فرد در تمام پروژه های Google Cloud است (نام فوق قبلاً گرفته شده است و برای شما کار نخواهد کرد، متأسفیم!). بعداً به عنوان PROJECT_ID
نامیده خواهد شد.
در مرحله بعد، برای استفاده از منابع Google Cloud باید صورتحساب را در کنسول Cloud فعال کنید . کاربران جدید Google Cloud واجد شرایط استفاده آزمایشی رایگان 300 دلاری هستند. اگر کاربر جدیدی نیستید، پس نگران نباشید زیرا نرم افزار Codelab نباید بیش از چند دلار هزینه داشته باشد. با این حال، اگر از منابع بیشتری استفاده کنید یا آنها را در حال اجرا رها کنید، میتواند برای شما هزینه بیشتری داشته باشد (به بخش «پاک کردن» در پایان مراجعه کنید). برای اطلاعات بیشتر، قیمت را ببینید.
پوسته ابری
در حالی که میتوانید از راه دور Google Cloud و GKE را با لپتاپ خود کار کنید، از Cloud Shell -یک محیط خط فرمان که در Cloud اجرا میشود- برای آزمایشگاه کد استفاده خواهید کرد.
این ماشین مجازی مبتنی بر دبیان با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این دایرکتوری اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد شبکه و احراز هویت را بسیار افزایش می دهد. این بدان معنی است که تمام چیزی که برای این کد لبه نیاز دارید یک مرورگر است (بله، روی کروم بوک کار می کند).
- برای فعال کردن Cloud Shell از Cloud Console، کافی است روی Activate Cloud Shell کلیک کنید. (تهیه و اتصال به محیط فقط چند لحظه طول می کشد).
پس از اتصال به Cloud Shell، باید ببینید که قبلاً احراز هویت شده اید و پروژه قبلاً روی PROJECT_ID
شما تنظیم شده است.
gcloud auth list
خروجی فرمان
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
خروجی فرمان
[core] project = <PROJECT_ID>
اگر به دلایلی پروژه تنظیم نشد، به سادگی دستور زیر را صادر کنید:
gcloud config set project <PROJECT_ID>
به دنبال PROJECT_ID
خود هستید؟ بررسی کنید از چه شناسه ای در مراحل راه اندازی استفاده کرده اید یا آن را در داشبورد Cloud Console جستجو کنید:
Cloud Shell همچنین برخی از متغیرهای محیطی را به صورت پیشفرض تنظیم میکند که ممکن است هنگام اجرای دستورات آینده مفید باشند.
echo $GOOGLE_CLOUD_PROJECT
خروجی فرمان
<PROJECT_ID>
- در نهایت، منطقه پیش فرض و پیکربندی پروژه را تنظیم کنید.
gcloud config set compute/zone us-central1-f
شما می توانید مناطق مختلفی را انتخاب کنید. برای اطلاعات بیشتر، به مناطق و مناطق مراجعه کنید.
3. یک خوشه GKE ایجاد کنید
اکنون که محیط توسعه دهنده کار خود را دارید، به یک کلاستر GKE برای استقرار وب سایت خود نیاز دارید! قبل از ایجاد یک کلاستر، باید مطمئن شوید که APIهای مناسب فعال هستند. برای فعال کردن Containers API دستور زیر را اجرا کنید:
gcloud services enable container.googleapis.com
اکنون، می توانید خوشه خود را ایجاد کنید! مراحل زیر را برای ایجاد یک خوشه به نام fancy-cluster با 3 گره دنبال کنید:
gcloud container clusters create fancy-cluster --num-nodes 3
ممکن است چند دقیقه طول بکشد تا خوشه ایجاد شود. پس از آن، دستور زیر را اجرا کنید و نمونه های سه ماشین مجازی کارگر (VM) خوشه را ببینید:
gcloud compute instances list
خروجی:
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
همچنین میتوانید کلاستر و اطلاعات مربوط به آن را در Cloud Console مشاهده کنید. روی دکمه منو در گوشه سمت چپ بالا کلیک کنید، به موتور Kubernetes بروید و روی Clusters کلیک کنید. باید خوشه خود را با نام fancy-cluster ببینید.
تبریک می گویم! شما اولین خوشه خود را ایجاد کردید!
4. کلون کردن مخزن منبع
از آنجایی که این یک وب سایت موجود است، فقط باید منبع را از مخزن کلون کنید تا بتوانید روی ایجاد تصاویر Docker و استقرار در GKE تمرکز کنید.
دستورات زیر را اجرا کنید تا مخزن منبع را به نمونه Cloud Shell خود شبیه سازی کنید و آن را به دایرکتوری مناسب تغییر دهید. همچنین وابستگی های Node.js را نصب خواهید کرد تا بتوانید برنامه خود را قبل از استقرار آزمایش کنید.
cd ~ git clone https://github.com/googlecodelabs/monolith-to-microservices.git cd ~/monolith-to-microservices ./setup.sh
که مخزن را شبیه سازی می کند، دایرکتوری را تغییر می دهد و وابستگی های مورد نیاز برای اجرای محلی برنامه شما را نصب می کند. ممکن است چند دقیقه طول بکشد تا آن اسکریپت اجرا شود.
دقت خود را انجام دهید و درخواست خود را آزمایش کنید. دستور زیر را برای راه اندازی وب سرور خود اجرا کنید:
cd ~/monolith-to-microservices/monolith npm start
خروجی:
Monolith listening on port 8080!
با کلیک بر روی نماد پیشنمایش وب در منوی Cloud Shell و انتخاب پیشنمایش در پورت 8080، میتوانید برنامه خود را پیشنمایش کنید.
این باید یک پنجره جدید باز کند که در آن می توانید فروشگاه فانتزی خود را در عمل ببینید!
پس از مشاهده وب سایت می توانید آن پنجره را ببندید. برای توقف فرآیند وب سرور Control+C
(ویندوز یا مک) را در پنجره ترمینال فشار دهید.
5. ظرف Docker را با Cloud Build ایجاد کنید
اکنون که فایل های منبع شما آماده است، زمان آن رسیده است که برنامه خود را Dockerize کنید!
به طور معمول، شما باید یک رویکرد دو مرحله ای داشته باشید که مستلزم ساخت یک ظرف Docker و فشار دادن آن به یک رجیستری برای ذخیره تصویری است که GKE از آن بیرون می کشد. با این حال، می توانید با استفاده از Cloud Build برای ایجاد کانتینر Docker و قرار دادن تصویر در رجیستری کانتینر با یک دستور، زندگی را آسان تر کنید! (برای مشاهده فرآیند دستی ایجاد یک فایل docker و فشار دادن آن، به Quickstart for Container Registry مراجعه کنید.)
Cloud Build فایل ها را از دایرکتوری فشرده می کند و آنها را به یک سطل Cloud Storage منتقل می کند. سپس فرآیند ساخت فایلها را از سطل میگیرد و از Dockerfile برای اجرای فرآیند ساخت Docker استفاده میکند. از آنجا که شما پرچم --tag
با میزبان به عنوان gcr.io
برای تصویر Docker مشخص کرده اید، تصویر Docker به دست آمده به رجیستری Container منتقل می شود.
ابتدا باید با اجرای دستور زیر، Cloud Build API را فعال کنید:
gcloud services enable cloudbuild.googleapis.com
پس از فعال شدن API، دستور زیر را در Cloud Shell اجرا کنید تا فرآیند ساخت شروع شود:
cd ~/monolith-to-microservices/monolith gcloud builds submit --tag gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0 .
این فرآیند چند دقیقه طول می کشد، اما پس از تکمیل، می توانید خروجی زیر را در ترمینال ببینید:
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 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
برای مشاهده تاریخچه ساخت خود یا تماشای فرآیند در زمان واقعی، می توانید به کنسول Cloud بروید. روی دکمه منو در گوشه سمت چپ بالا کلیک کنید، به سمت Ci/CD بروید، سپس روی Cloud Build کلیک کنید و در نهایت روی History کلیک کنید. در آنجا میتوانید فهرستی از بیلدهای قبلی خود را ببینید، اما فقط باید چیزی باشد که ایجاد کردهاید.
اگر روی Build id کلیک کنید، می توانید تمام جزئیات مربوط به آن ساخت، از جمله خروجی گزارش را ببینید.
در صفحه جزئیات ساخت، می توانید تصویر کانتینری را که با کلیک بر روی نام Image در قسمت اطلاعات ساخت، ایجاد شده است، مشاهده کنید.
6. کانتینر را در GKE مستقر کنید
اکنون که وب سایت خود را کانتینر کرده اید و کانتینر را به رجیستری کانتینر منتقل کرده اید، می توانید آن را در Kubernetes مستقر کنید!
برای استقرار و مدیریت برنامه ها در یک خوشه GKE، باید با سیستم مدیریت خوشه Kubernetes ارتباط برقرار کنید. شما معمولاً این کار را با استفاده از ابزار خط فرمان kubectl انجام می دهید.
Kubernetes برنامهها را بهعنوان Pods نشان میدهد، که واحدهایی هستند که یک ظرف (یا گروهی از کانتینرهای محکم جفت شده) را نشان میدهند. Pod کوچکترین واحد قابل استقرار در Kubernetes است. در اینجا، هر Pod فقط حاوی ظرف یکپارچه شماست.
برای استقرار برنامه خود، باید یک Deployment ایجاد کنید. یک Deployment چندین نسخه از برنامه شما را مدیریت می کند - که replica نامیده می شود - و آنها را برای اجرا بر روی گره های جداگانه در خوشه شما برنامه ریزی می کند. در این حالت، Deployment تنها یک پاد از برنامه شما را اجرا خواهد کرد. استقرارها با ایجاد ReplicaSet اطمینان حاصل می کنند. ReplicaSet وظیفه دارد اطمینان حاصل کند که تعداد کپی های مشخص شده همیشه در حال اجرا هستند.
دستور kubectl create deployment
باعث می شود Kubernetes یک Deployment به نام monolith را با 1 replica در خوشه شما ایجاد کند.
دستور زیر را برای استقرار برنامه خود اجرا کنید:
kubectl create deployment monolith --image=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:1.0.0
تأیید استقرار
برای تأیید اینکه Deployment با موفقیت ایجاد شده است، دستور زیر را اجرا کنید (ممکن است چند لحظه طول بکشد تا وضعیت Pod "Running" شود):
kubectl get all
خروجی:
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
آن خروجی چندین چیز را به شما نشان می دهد. شما می توانید استقرار خود را مشاهده کنید که در حال حاضر است. ReplicaSet شما، با تعداد پاد دلخواه یک. و Pod شما که در حال اجراست. به نظر می رسد همه چیز را با موفقیت ایجاد کرده اید!
برای مشاهده جداگانه منابع خود، می توانید دستورات زیر را اجرا کنید:
# 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، می توانید خرابی سرور را شبیه سازی کنید، Pod را حذف کنید و ببینید چه اتفاقی می افتد!
نام پاد خود را از دستور قبلی کپی کرده و دستور زیر را برای حذف آن اجرا کنید:
kubectl delete pod/<POD_NAME>
اگر به اندازه کافی سریع هستید، می توانید دستور قبلی را اجرا کنید تا دوباره همه را ببینید و باید دو Pod را مشاهده کنید که یکی پایان می یابد و دیگری ایجاد یا اجرا می شود:
kubectl get all
خروجی:
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
چرا چنین شد؟ ReplicaSet دید که غلاف در حال خاتمه است و یک غلاف جدید را راه اندازی کرد تا تعداد ماکت های مورد نظر را حفظ کند. بعداً، میبینید که چگونه مقیاسبندی کنید تا مطمئن شوید که چندین نمونه در حال اجرا هستید، به طوری که اگر یکی از آنها پایین بیاید، کاربران شما هیچ زمان خرابی را نبینند!
7. استقرار GKE را افشا کنید
شما برنامه خود را در GKE مستقر کرده اید، اما راهی برای دسترسی به آن در خارج از خوشه ندارید. بهطور پیشفرض، کانتینرهایی که در GKE اجرا میکنید، از طریق اینترنت قابل دسترسی نیستند، زیرا آدرسهای IP خارجی ندارند. شما باید به صراحت برنامه خود را از طریق یک منبع سرویس در معرض ترافیک اینترنت قرار دهید. A Service پشتیبانی شبکه و IP را برای Pods برنامه شما فراهم می کند. GKE یک IP خارجی و یک متعادل کننده بار ( مطابق با صورتحساب ) برای برنامه شما ایجاد می کند.
دستور زیر را اجرا کنید تا وب سایت خود را در معرض اینترنت قرار دهید:
kubectl expose deployment monolith --type=LoadBalancer --port 80 --target-port 8080
خروجی:
service/monolith exposed
دسترسی به سرویس
GKE آدرس IP خارجی را به منبع Service اختصاص می دهد نه Deployment. اگر می خواهید IP خارجی را که GKE برای برنامه شما ارائه کرده است پیدا کنید، می توانید سرویس را با دستور kubectl get service بررسی کنید:
kubectl get service
خروجی:
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE monolith 10.3.251.122 203.0.113.0 80:30877/TCP 3d
پس از تعیین آدرس IP خارجی برنامه خود، آن را کپی کنید. مرورگر خود را به آن URL (مانند http://203.0.113.0) نشان دهید تا بررسی کنید که آیا برنامه شما در دسترس است یا خیر.
شما باید همان وب سایتی را ببینید که قبلاً تست کرده اید! تبریک می گویم! وب سایت شما به طور کامل بر روی Kubernetes اجرا می شود!
8. مقیاس استقرار GKE
اکنون که یک نمونه در حال اجرا از برنامه خود در GKE دارید و آن را در معرض اینترنت قرار داده اید، وب سایت شما بسیار محبوب شده است! شما به راهی نیاز دارید تا برنامه خود را به چند نمونه مقیاس کنید تا بتوانید ترافیک را مدیریت کنید. بیاموزید که برنامه خود را تا سه کپی مقیاس کنید.
دستور زیر را اجرا کنید تا استقرار خود را تا سه تکرار افزایش دهید:
kubectl scale deployment monolith --replicas=3
خروجی:
deployment.apps/monolith scaled
بررسی استقرار مقیاس شده
برای اطمینان از اینکه Deployment با موفقیت مقیاس بندی شده است، دستور زیر را اجرا کنید:
kubectl get all
خروجی:
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
شما باید سه نمونه از اجرای Pod خود را ببینید. همچنین توجه داشته باشید که Deployment و ReplicaSet شما اکنون تعداد دلخواه 3 را دارند.
9. تغییراتی در وب سایت ایجاد کنید
تیم بازاریابی شما از شما خواسته است که صفحه اصلی وب سایت خود را تغییر دهید. آنها فکر می کنند که با توضیح اینکه شرکت شما چیست و در واقع چه چیزی می فروشید، باید آموزنده تر باشد. در این بخش، متنی را به صفحه اصلی اضافه می کنید تا تیم بازاریابی را خوشحال کنید! به نظر می رسد یکی از توسعه دهندگان ما قبلاً تغییرات را با نام فایل index.js.new
ایجاد کرده است. می توانید فایل را در index.js
کپی کنید و تغییرات شما باید منعکس شود. دستورالعمل های زیر را برای ایجاد تغییرات مناسب دنبال کنید.
دستورات زیر را اجرا کنید، فایل به روز شده را به نام فایل صحیح کپی کنید و محتوای آن را چاپ کنید تا تغییرات را تأیید کنید:
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
کد حاصل باید به شکل زیر باشد:
/* 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 را بهروزرسانی کردید، اما برای تولید فایلهای استاتیک باید برنامه React را بسازید. دستور زیر را برای ساخت برنامه React اجرا کنید و آن را در فهرست عمومی monolith کپی کنید:
cd ~/monolith-to-microservices/react-app npm run build:monolith
اکنون که کد شما به روز شده است، باید کانتینر Docker خود را دوباره بسازید و آن را در Container Registry منتشر کنید. می توانید از همان دستور قبلی استفاده کنید، با این تفاوت که این بار، برچسب نسخه را به روز می کنید!
دستور زیر را برای راه اندازی یک Cloud Build جدید با نسخه تصویر به روز شده 2.0.0 اجرا کنید:
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 .
برای توقف فرآیند وب سرور Control+C
(ویندوز یا مک) را در پنجره ترمینال فشار دهید.
در بخش بعدی، از آن تصویر برای به روز رسانی برنامه خود با زمان توقف صفر استفاده خواهید کرد.
10. وب سایت را با زمان خاموشی صفر به روز کنید
تغییرات تکمیل شد و تیم بازاریابی از به روز رسانی های شما راضی است! زمان آن رسیده است که وب سایت را بدون وقفه برای کاربران به روز کنید. دستورالعمل های زیر را برای به روز رسانی وب سایت خود دنبال کنید.
بهروزرسانیهای متحرک GKE تضمین میکنند که برنامه شما فعال و در دسترس باقی میماند، حتی زمانی که سیستم نمونههایی از تصویر کانتینر قدیمی شما را با نمونه جدید شما در همه نسخههای در حال اجرا جایگزین میکند.
از خط فرمان، میتوانید به Kubernetes بگویید که میخواهید تصویر مربوط به Deployment خود را با دستور زیر به نسخه جدیدی بهروزرسانی کنید:
kubectl set image deployment/monolith monolith=gcr.io/${GOOGLE_CLOUD_PROJECT}/monolith:2.0.0
خروجی:
deployment.apps/monolith image updated
تأیید استقرار
با اجرای دستور زیر می توانید به روز رسانی Deployment خود را تأیید کنید:
kubectl get pods
خروجی:
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
می بینید که سه پاد جدید ایجاد می شود و پادهای قدیمی شما بسته می شوند. شما می توانید با توجه به سنین جدید و قدیمی تشخیص دهید. در نهایت، شما فقط سه پاد را دوباره خواهید دید که سه پاد به روز شده شما خواهند بود.
برای تأیید تغییرات خود، دوباره به IP خارجی load balancer بروید و متوجه شوید که برنامه شما به روز شده است.
دستور زیر را اجرا کنید تا سرویس ها را لیست کنید و در صورت فراموشی آدرس IP را مشاهده کنید:
kubectl get svc
وب سایت شما باید متنی را که به کامپوننت صفحه اصلی اضافه کرده اید نمایش دهد!
11. پاکسازی کنید
مخزن Git را حذف کنید
cd ~ rm -rf monolith-to-microservices
حذف تصاویر رجیستری کانتینر
توجه: اگر نسخههای دیگری ایجاد کردهاید، میتوانید از همان نحو برای حذف آن تصاویر نیز استفاده کنید. این کد لبه فرض می کند که شما فقط دو تگ دارید.
# 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 Build از Cloud Storage
توجه: اگر از Cloud Build برای مصنوعاتی غیر از این کد لبه استفاده کرده اید، باید منبع خود را به صورت دستی از سطل فضای ذخیره سازی ابری gs://<PROJECT_ID>_cloudbuild/source
حذف کنید.
# 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 را حذف کنید
kubectl delete service monolith kubectl delete deployment monolith
حذف خوشه GKE
gcloud container clusters delete fancy-cluster
توجه: این دستور ممکن است کمی طول بکشد.
12. تبریک می گویم!
شما وب سایت خود را در GKE مستقر، مقیاس و به روز کردید. شما اکنون با Docker و Kubernetes تجربه دارید!