1. ภาพรวม
ในแล็บนี้ คุณจะได้ติดตั้งใช้งานแอปพลิเคชัน .Net ไปยัง Cloud Run โดยใช้ Cloud Deploy คุณจะสร้างอิมเมจคอนเทนเนอร์ด้วย Cloud Build โดยไม่ต้องใช้ Dockerfile คุณจะตั้งค่าไปป์ไลน์ที่มีสภาพแวดล้อมเป้าหมาย 3 รายการด้วย 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 สำหรับการดำเนินการแสดงผลและการทำให้ใช้งานได้
สิ่งที่คุณจะได้เรียนรู้
ในแล็บนี้ คุณจะได้เรียนรู้วิธีทำสิ่งต่อไปนี้
- สร้างไปป์ไลน์ Cloud Deploy
- สร้างอิมเมจคอนเทนเนอร์สำหรับแอปพลิเคชัน .Net ด้วย Cloud Build โดยไม่ต้องใช้ Dockerfile
- ทำให้แอปพลิเคชันใช้งานได้กับ Cloud Run ด้วย Cloud Deploy
- โปรโมตเวอร์ชัน Cloud Deploy
ข้อกำหนดเบื้องต้น
- แล็บนี้ถือว่าคุณคุ้นเคยกับ Cloud Console และสภาพแวดล้อมเชลล์
2. การตั้งค่าและข้อกำหนด
การตั้งค่าโปรเจ็กต์ Cloud
- ลงชื่อเข้าใช้ Google Cloud Console แล้วสร้างโปรเจ็กต์ใหม่หรือใช้โปรเจ็กต์ที่มีอยู่ซ้ำ หากยังไม่มีบัญชี Gmail หรือ Google Workspace คุณต้องสร้างบัญชี



- ชื่อโปรเจ็กต์คือชื่อที่แสดงสำหรับผู้เข้าร่วมโปรเจ็กต์นี้ ซึ่งเป็นสตริงอักขระที่ Google APIs ไม่ได้ใช้ โดยคุณจะอัปเดตได้ทุกเมื่อ
- รหัสโปรเจ็กต์จะไม่ซ้ำกันในโปรเจ็กต์ Google Cloud ทั้งหมดและเปลี่ยนแปลงไม่ได้ (เปลี่ยนไม่ได้หลังจากตั้งค่าแล้ว) Cloud Console จะสร้างสตริงที่ไม่ซ้ำกันโดยอัตโนมัติ ซึ่งโดยปกติแล้วคุณไม่จำเป็นต้องสนใจว่าสตริงนั้นคืออะไร ใน Codelab ส่วนใหญ่ คุณจะต้องอ้างอิงรหัสโปรเจ็กต์ (โดยปกติจะระบุเป็น
PROJECT_ID) หากไม่ชอบรหัสที่สร้างขึ้น คุณก็สร้างรหัสแบบสุ่มอีกรหัสหนึ่งได้ หรือคุณจะลองใช้ชื่อของคุณเองเพื่อดูว่าพร้อมใช้งานหรือไม่ก็ได้ คุณจะเปลี่ยนแปลงรหัสนี้หลังจากขั้นตอนนี้ไม่ได้ และรหัสจะยังคงอยู่ตลอดระยะเวลาของโปรเจ็กต์ - โปรดทราบว่ายังมีค่าที่ 3 ซึ่งคือหมายเลขโปรเจ็กต์ที่ API บางตัวใช้ ดูข้อมูลเพิ่มเติมเกี่ยวกับค่าทั้ง 3 นี้ได้ในเอกสารประกอบ
- จากนั้นคุณจะต้องเปิดใช้การเรียกเก็บเงินใน Cloud Console เพื่อใช้ทรัพยากร/API ของ Cloud การทำตาม Codelab นี้ไม่ควรมีค่าใช้จ่ายมากนัก หรืออาจไม่มีเลย หากต้องการปิดทรัพยากรเพื่อไม่ให้มีการเรียกเก็บเงินนอกเหนือจากบทแนะนำนี้ คุณสามารถลบทรัพยากรที่สร้างขึ้นหรือลบทั้งโปรเจ็กต์ได้ ผู้ใช้ Google Cloud รายใหม่มีสิทธิ์เข้าร่วมโปรแกรมช่วงทดลองใช้ฟรีมูลค่า$300 USD
การตั้งค่าสภาพแวดล้อม
เปิดใช้งาน 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
สร้างที่เก็บ Artifact Registry เพื่อจัดเก็บอิมเมจคอนเทนเนอร์ของแอปพลิเคชัน
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ที่กำหนดสภาพแวดล้อม 3 รายการ และใช้ 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
แทนที่ค่า _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. สร้างอิมเมจคอนเทนเนอร์และสร้างรุ่น
เพิ่มสิทธิ์ของตัวดำเนินการ 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 รอจนกว่าการติดตั้งใช้งานในสภาพแวดล้อมสำหรับนักพัฒนาแอปจะเสร็จสมบูรณ์
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 ที่ใช้ได้ ("จำนวนการติดตั้งใช้งาน" "ความถี่ในการติดตั้งใช้งาน" "อัตราการติดตั้งใช้งานที่ไม่สำเร็จ")
เมตริก | คำอธิบาย |
จำนวนการติดตั้งใช้งาน | จำนวนการติดตั้งใช้งานที่สำเร็จและล้มเหลวทั้งหมดไปยังเป้าหมายสุดท้ายในไปป์ไลน์การนำส่ง |
ความถี่ในการติดตั้งใช้งาน | ความถี่ที่ไปป์ไลน์การนำส่งจะนำไปใช้กับเป้าหมายสุดท้ายในไปป์ไลน์การนำส่งของคุณ ซึ่งเป็นหนึ่งใน 4 เมตริกหลักที่กำหนดโดยโปรแกรม DevOps Research and Assessment (DORA) |
อัตราการติดตั้งใช้งานที่ไม่สำเร็จ | เปอร์เซ็นต์ของการเปิดตัวที่ไม่สำเร็จไปยังเป้าหมายสุดท้ายในไปป์ไลน์การนำส่ง |
ตรวจสอบแอปพลิเคชันที่ติดตั้งใช้งานใน Cloud Run โดยทำดังนี้

7. ยินดีด้วย
ยินดีด้วย คุณทำ Codelab เสร็จแล้ว
สิ่งที่เราได้พูดถึงไปแล้ว
- วิธีสร้างไปป์ไลน์ Cloud Deploy
- วิธีสร้างอิมเมจคอนเทนเนอร์สำหรับแอปพลิเคชัน .Net ด้วย Cloud Build
- วิธีติดตั้งใช้งานแอปพลิเคชันใน Cloud Run ด้วย Cloud Deploy
- วิธีโปรโมตการเปิดตัว Cloud Deploy
ล้างข้อมูล
โปรดลบโปรเจ็กต์ที่มีทรัพยากรหรือเก็บโปรเจ็กต์ไว้และลบทรัพยากรแต่ละรายการเพื่อหลีกเลี่ยงการเรียกเก็บเงินจากบัญชี Google Cloud สำหรับทรัพยากรที่ใช้ในบทแนะนำนี้
การลบโปรเจ็กต์
วิธีที่ง่ายที่สุดในการยกเลิกการเรียกเก็บเงินคือการลบโปรเจ็กต์ที่คุณสร้างขึ้นสำหรับบทแนะนำ