1. بررسی اجمالی
در این آزمایشگاه، شما با استفاده از Cloud Deploy یک برنامه .Net را در Cloud Run مستقر خواهید کرد. بدون استفاده از Dockerfile یک تصویر ظرف با Cloud Build خواهید ساخت. شما یک خط لوله با سه محیط هدف با Cloud Deploy راهاندازی میکنید و مراحل ترویج انتشار از طریق محیطها را طی میکنید. در نهایت، انتشار را برای استقرار در محیط تولید تأیید خواهید کرد.
Cloud Build چیست؟
با Cloud Build می توانید به سرعت نرم افزار را در تمامی زبان های برنامه نویسی بسازید.
Cloud Deploy چیست؟
Cloud Deploy یک سرویس تحویل مستمر کاملاً مدیریت شده است. با Cloud Deploy می توانید خطوط لوله استقرار را برای GKE، Anthos و Cloud Run ایجاد کنید.
Cloud Run چیست؟
با Cloud Run میتوانید برنامههای کانتینری مقیاسپذیر را که به هر زبانی نوشته شدهاند (از جمله Go، Python، Java، Node.js، .NET و Ruby) بر روی یک پلتفرم کاملاً مدیریت شده مستقر کنید.
Skaffold چیست؟
Skaffold یک ابزار خط فرمان است که توسعه مداوم برنامه های بومی Kubernetes را امکان پذیر می کند. Cloud Deploy از Skaffold برای عملیات رندر و استقرار استفاده می کند.
آنچه خواهید آموخت
در این آزمایشگاه با نحوه انجام کارهای زیر آشنا می شوید:
- خط لوله استقرار ابری ایجاد کنید
- بدون استفاده از Dockerfile، تصویر کانتینر را برای برنامه Net با Cloud Build ایجاد کنید
- با استفاده از Cloud Deploy برنامه را در Cloud Run اجرا کنید
- انتشارات Cloud Deploy را تبلیغ کنید
پیش نیازها
- این آزمایشگاه آشنایی با کنسول Cloud و محیط های پوسته را فرض می کند.
2. راه اندازی و الزامات
راه اندازی پروژه ابری
- به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
- نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. شما می توانید آن را در هر زمان به روز کنید.
- شناسه پروژه در تمام پروژههای Google Cloud منحصربهفرد است و تغییرناپذیر است (پس از تنظیم نمیتوان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید به شناسه پروژه ارجاع دهید (معمولاً به عنوان
PROJECT_ID
شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، میتوانید خودتان را امتحان کنید و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند. - برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
- در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه نباید هزینه زیادی داشته باشد، اگر اصلاً باشد. برای اینکه منابع را خاموش کنید تا بیش از این آموزش متحمل صورتحساب نشوید، می توانید منابعی را که ایجاد کرده اید حذف کنید یا کل پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
راه اندازی محیط
Cloud Shell را با کلیک بر روی نماد سمت راست نوار جستجو فعال کنید.
از Cloud Shell، دستور زیر را برای تنظیم متغیرهای محیط پروژه اجرا کنید:
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID \
--format='value(projectNumber)')
export REGION=us-central1
فعال کردن API ها:
gcloud services enable \
run.googleapis.com \
cloudbuild.googleapis.com \
clouddeploy.googleapis.com \
artifactregistry.googleapis.com
مخزن رجیستری مصنوع را برای ذخیره تصاویر کانتینر برنامه ایجاد کنید:
gcloud artifacts repositories create containers-repo \
--repository-format=docker \
--location=${REGION} \
--description="Containers repository"
3. فایل های پیکربندی را بررسی کنید
کلون کد منبع برنامه:
git clone https://github.com/gitrey/deploy-cloudrun-app-with-clouddeploy.git
cd deploy-cloudrun-app-with-clouddeploy
بررسی پیکربندی خط لوله Cloud Deploy:
clouddeploy.yaml
apiVersion: deploy.cloud.google.com/v1
kind: DeliveryPipeline
metadata:
name: cloud-run-pipeline
description: application deployment pipeline
serialPipeline:
stages:
- targetId: dev-env
profiles: [dev]
- targetId: qa-env
profiles: [qa]
- targetId: prod-env
profiles: [prod]
---
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: dev-env
description: Cloud Run development service
run:
location: projects/_PROJECT_ID/locations/us-west1
---
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: qa-env
description: Cloud Run QA service
run:
location: projects/_PROJECT_ID/locations/us-central1
---
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: prod-env
description: Cloud Run PROD service
run:
location: projects/_PROJECT_ID/locations/us-south1
فایل skaffold.yaml
را بررسی کنید که سه محیط را تعریف می کند و از Cloud Run به عنوان سرویس هدف استفاده می کند.
skaffold.yaml
apiVersion: skaffold/v3alpha1
kind: Config
metadata:
name: cloud-run-app
profiles:
- name: dev
manifests:
rawYaml:
- deploy-dev.yaml
- name: qa
manifests:
rawYaml:
- deploy-qa.yaml
- name: prod
manifests:
rawYaml:
- deploy-prod.yaml
deploy:
cloudrun: {}
فایل های پیکربندی سرویس را بررسی کنید.
deploy-dev.yaml
kind: Service
metadata:
name: app-dev
spec:
template:
spec:
containers:
- image: app
resources:
limits:
cpu: 1000m
memory: 128Mi
deploy-qa.yaml
kind: Service
metadata:
name: app-dev
spec:
template:
spec:
containers:
- image: app
deploy-prod.yaml
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: app-prod
spec:
template:
spec:
containers:
- image: app
فایل cloudbuild.yaml
را با مراحل ساخت یک تصویر کانتینر و ایجاد نسخه Cloud Deploy مرور کنید:
cloudbuild.yaml
steps:
- name: 'gcr.io/k8s-skaffold/pack'
entrypoint: 'pack'
args: ['build',
'--builder=gcr.io/buildpacks/builder',
'--publish', '${_REGION}-docker.pkg.dev/${PROJECT_ID}/containers-repo/app:$BUILD_ID']
id: Build and package .net app
- name: gcr.io/google.com/cloudsdktool/cloud-sdk:slim
args:
[
"deploy", "releases", "create", "release-$_RELEASE_TIMESTAMP",
"--delivery-pipeline", "cloud-run-pipeline",
"--region", "${_REGION}",
"--images", "app=${_REGION}-docker.pkg.dev/${PROJECT_ID}/containers-repo/app:$BUILD_ID"
]
entrypoint: gcloud
4. Cloud Deploy Pipeline را ایجاد کنید
مقدار _PROJECT_ID را در clouddeploy.yaml جایگزین کنید:
sed -i "s/_PROJECT_ID/$PROJECT_ID/g" clouddeploy.yaml
ایجاد خط لوله Cloud Deploy:
gcloud deploy apply \
--file=clouddeploy.yaml \
--region=${REGION} \
--project=${PROJECT_ID}
بررسی خط لوله ایجاد شده در Cloud Deploy .
5. تصویر Container را بسازید و یک نسخه ایجاد کنید
مجوزهای اپراتور Cloud Deploy را به حساب سرویس Cloud Build اضافه کنید:
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member=serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com \
--role=roles/clouddeploy.operator
gcloud projects add-iam-policy-binding ${PROJECT_ID} \
--member=serviceAccount:${PROJECT_NUMBER}@cloudbuild.gserviceaccount.com \
--role=roles/iam.serviceAccountUser
ایجاد تصویر کانتینر و انتشار Cloud Deploy:
export RELEASE_TIMESTAMP=$(date '+%Y%m%d-%H%M%S')
gcloud builds submit \
--config cloudbuild-plus.yaml \
--substitutions=_REGION=${REGION},_RELEASE_TIMESTAMP=${RELEASE_TIMESTAMP}
نسخه ایجاد شده را در Cloud Deploy مرور کنید. صبر کنید تا استقرار در محیط Dev کامل شود.
6. انتشار را به محیط های QA و PROD ترویج دهید
با استفاده از Cloud Console یا Cloud Shell، انتشار را به هدف بعدی (qa-env) ارتقا دهید.
انتشار را با Cloud Shell تبلیغ کنید، دستور gcloud را برای ترویج انتشار اجرا کنید.
gcloud beta deploy releases promote \
--release="release-${RELEASE_TIMESTAMP}" \
--delivery-pipeline=cloud-run-pipeline \
--region=${REGION} \
--quiet
صبر کنید تا استقرار در محیط QA انجام شود. انتشار را به هدف بعدی (prod-env) ارتقا دهید.
gcloud beta deploy releases promote \
--release="release-${RELEASE_TIMESTAMP}" \
--delivery-pipeline=cloud-run-pipeline \
--region=${REGION} \
--quiet
Cloud Deploy را در Cloud Console باز کنید و انتشار را برای استقرار تولید تأیید کنید.
وضعیت خط لوله Cloud Deploy و معیارهای موجود DORA ("تعداد استقرار"، "فرکانس استقرار"، "نرخ شکست استقرار") را بررسی کنید.
متریک | توضیحات |
تعداد استقرارها | تعداد کل استقرارهای موفق و ناموفق به هدف نهایی در خط لوله تحویل شما. |
فرکانس استقرار | هر چند وقت یکبار خط لوله تحویل به هدف نهایی در خط لوله تحویل شما مستقر میشود. یکی از چهار معیار کلیدی که توسط برنامه تحقیق و ارزیابی DevOps (DORA) تعریف شده است. |
نرخ شکست استقرار | درصد عرضه ناموفق به هدف نهایی در خط لوله تحویل شما. |
بررسی برنامه های مستقر در Cloud Run :
7. تبریک می گویم!
تبریک می گویم، شما نرم افزار کد را تمام کردید!
آنچه ما پوشش داده ایم:
- نحوه ایجاد خط لوله Cloud Deploy
- نحوه ایجاد تصویر ظرف برای برنامه Net با Cloud Build
- نحوه استقرار برنامه در Cloud Run با Cloud Deploy
- نحوه ترویج انتشار Cloud Deploy
پاک کن
برای جلوگیری از تحمیل هزینه به حساب Google Cloud خود برای منابع استفاده شده در این آموزش، یا پروژه حاوی منابع را حذف کنید یا پروژه را نگه دارید و منابع فردی را حذف کنید.
حذف پروژه
ساده ترین راه برای حذف صورتحساب، حذف پروژه ای است که برای آموزش ایجاد کرده اید.