1. Tổng quan
Trong lớp học lập trình này, bạn sẽ triển khai một ứng dụng .Net lên Cloud Run bằng Cloud Deploy. Bạn sẽ tạo hình ảnh vùng chứa bằng Cloud Build mà không cần sử dụng Dockerfile. Bạn sẽ thiết lập một quy trình gồm 3 môi trường mục tiêu bằng Cloud Deploy và thực hiện các bước để quảng bá bản phát hành thông qua các môi trường. Cuối cùng, bạn sẽ phê duyệt bản phát hành để triển khai vào môi trường phát hành công khai.
Cloud Build là gì?
Với Cloud Build, bạn có thể nhanh chóng tạo phần mềm trên tất cả ngôn ngữ lập trình.
Cloud Deploy là gì?
Cloud Deploy là một dịch vụ phân phối liên tục được quản lý toàn diện. Với Cloud Deploy, bạn có thể tạo quy trình triển khai cho GKE, Anthos và Cloud Run.
Cloud Run là gì?
Với Cloud Run, bạn có thể triển khai các ứng dụng được đóng gói trong vùng chứa có khả năng mở rộng được viết bằng ngôn ngữ bất kỳ (bao gồm Go, Python, Java, Node.js, .NET và Ruby) trên một nền tảng được quản lý toàn diện.
Skaffold là gì?
Skaffold là một công cụ dòng lệnh cho phép phát triển liên tục các ứng dụng gốc Kubernetes. Cloud Deploy sử dụng Skaffold để hiển thị và triển khai các thao tác.
Kiến thức bạn sẽ học được
Trong lớp học này, bạn sẽ tìm hiểu cách thực hiện những việc sau:
- Tạo quy trình Cloud Deploy
- Tạo hình ảnh vùng chứa cho ứng dụng .Net bằng Cloud Build mà không cần sử dụng Dockerfile
- Triển khai ứng dụng lên Cloud Run bằng Cloud Deploy
- Quảng bá bản phát hành Cloud Deploy
Điều kiện tiên quyết
- Lớp học này giả định rằng bạn đã quen thuộc với Cloud Console và môi trường shell.
2. Cách thiết lập và các yêu cầu
Thiết lập dự án trên Cloud
- Đăng nhập vào Google Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.
- Tên dự án là tên hiển thị cho người tham gia dự án này. Đây là một chuỗi ký tự không được API của Google sử dụng. Bạn có thể cập nhật thông tin này bất cứ lúc nào.
- Mã dự án là duy nhất trên tất cả các dự án Google Cloud và không thể thay đổi (không thể thay đổi sau khi đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là
PROJECT_ID
). Nếu không thích mã được tạo, bạn có thể tạo một mã ngẫu nhiên khác. Ngoài ra, bạn có thể thử dùng tên của riêng mình để xem tên đó có được chấp nhận hay không. Bạn không thể thay đổi thông tin này sau bước này và thông tin này sẽ được giữ nguyên trong suốt thời gian diễn ra dự án. - Xin lưu ý rằng có một giá trị thứ ba là Mã dự án mà một số API sử dụng. Tìm hiểu thêm về cả ba giá trị này trong tài liệu.
- Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên/API trên Cloud. Việc tham gia lớp học lập trình này sẽ không tốn kém nhiều chi phí, nếu có. Để tắt các tài nguyên để không bị tính phí sau khi hoàn tất hướng dẫn này, bạn có thể xoá các tài nguyên đã tạo hoặc xoá toàn bộ dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.
Thiết lập môi trường
Kích hoạt Cloud Shell bằng cách nhấp vào biểu tượng ở bên phải thanh tìm kiếm.
Trên Cloud Shell, hãy chạy lệnh sau để đặt biến môi trường dự án:
export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID \
--format='value(projectNumber)')
export REGION=us-central1
Bật API:
gcloud services enable \
run.googleapis.com \
cloudbuild.googleapis.com \
clouddeploy.googleapis.com \
artifactregistry.googleapis.com
Tạo kho lưu trữ Cấu phần phần mềm để lưu trữ hình ảnh vùng chứa ứng dụng:
gcloud artifacts repositories create containers-repo \
--repository-format=docker \
--location=${REGION} \
--description="Containers repository"
3. Xem xét tệp cấu hình
Sao chép mã nguồn ứng dụng:
git clone https://github.com/gitrey/deploy-cloudrun-app-with-clouddeploy.git
cd deploy-cloudrun-app-with-clouddeploy
Xem lại cấu hình quy trình của 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
Xem lại tệp skaffold.yaml
xác định ba môi trường và sử dụng Cloud Run làm dịch vụ mục tiêu.
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: {}
Xem lại tệp cấu hình dịch vụ.
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
Xem lại tệp cloudbuild.yaml
có các bước để tạo hình ảnh vùng chứa và tạo bản phát hành trên 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. Tạo quy trình triển khai trên đám mây
Thay thế giá trị _PROJECT_ID trong tệp clouddeploy.yaml:
sed -i "s/_PROJECT_ID/$PROJECT_ID/g" clouddeploy.yaml
Tạo quy trình triển khai trên đám mây:
gcloud deploy apply \
--file=clouddeploy.yaml \
--region=${REGION} \
--project=${PROJECT_ID}
Xem lại quy trình đã tạo trong Cloud Deploy.
5. Tạo hình ảnh vùng chứa và tạo bản phát hành
Thêm quyền cho Trình điều khiển triển khai trên đám mây vào tài khoản dịch vụ 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
Tạo hình ảnh vùng chứa và bản phát hành 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}
Xem lại bản phát hành đã tạo trong Cloud Deploy. Chờ cho đến khi quá trình triển khai vào môi trường Dev hoàn tất.
6. Đẩy bản phát hành lên môi trường QA và PROD
Sử dụng Cloud Console hoặc Cloud Shell, hãy quảng bá bản phát hành đến mục tiêu tiếp theo(qa-env).
Quảng bá bản phát hành bằng Cloud Shell, chạy lệnh gcloud để quảng bá bản phát hành.
gcloud beta deploy releases promote \
--release="release-${RELEASE_TIMESTAMP}" \
--delivery-pipeline=cloud-run-pipeline \
--region=${REGION} \
--quiet
Chờ cho đến khi quá trình triển khai vào môi trường QA hoàn tất. Đẩy bản phát hành lên mục tiêu tiếp theo(prod-env).
gcloud beta deploy releases promote \
--release="release-${RELEASE_TIMESTAMP}" \
--delivery-pipeline=cloud-run-pipeline \
--region=${REGION} \
--quiet
Mở Cloud Deploy (Triển khai trên đám mây) trong Cloud Console và phê duyệt bản phát hành để triển khai công khai.
Xem xét trạng thái quy trình Cloud Deploy và các chỉ số DORA hiện có ("số lượt triển khai", "tần suất triển khai", "tỷ lệ lỗi triển khai").
Chỉ số | Nội dung mô tả |
Số lần triển khai | Tổng số lần triển khai thành công và không thành công cho mục tiêu cuối cùng trong quy trình phân phối. |
Tần suất triển khai | Tần suất quy trình phân phối triển khai đến mục tiêu cuối cùng trong quy trình phân phối.Đây là một trong 4 chỉ số chính do chương trình Nghiên cứu và đánh giá DevOps (DORA) xác định. |
Tỷ lệ triển khai không thành công | Tỷ lệ phần trăm số lần triển khai không thành công đến mục tiêu cuối cùng trong quy trình phân phối. |
Xem lại các ứng dụng đã triển khai trong Cloud Run:
7. Xin chúc mừng!
Xin chúc mừng, bạn đã hoàn tất lớp học lập trình!
Nội dung chúng ta đã đề cập:
- Cách tạo quy trình triển khai trên đám mây
- Cách tạo hình ảnh vùng chứa cho ứng dụng .Net bằng Cloud Build
- Cách triển khai ứng dụng lên Cloud Run bằng Cloud Deploy
- Cách quảng bá bản phát hành Cloud Deploy
Dọn dẹp
Để tránh bị tính phí cho tài khoản Google Cloud của bạn đối với các tài nguyên được sử dụng trong hướng dẫn này, hãy xoá dự án chứa các tài nguyên đó hoặc giữ lại dự án và xoá từng tài nguyên.
Xoá dự án
Cách dễ nhất để loại bỏ tính năng thanh toán là xoá dự án mà bạn đã tạo cho hướng dẫn này.