使用 Cloud Deploy 将应用部署到 Cloud Run
本页面介绍了如何使用 Cloud Deploy 交付示例
名为 hello
的应用映像映射到两个 Cloud Run 序列
或者两个 Cloud Run 作业
在本快速入门中,您将执行以下操作:
准备工作
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.
- Install the Google Cloud CLI.
-
To initialize the gcloud CLI, run the following command:
gcloud init
- 确保默认 Compute Engine 服务账号具有足够的权限。
服务账号可能已经拥有必要的权限。针对默认服务账号停用自动角色授予的项目包含这些步骤。
- 添加
clouddeploy.jobRunner
角色:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/clouddeploy.jobRunner"
- 向默认执行服务账号
actAs
授予将工作负载部署到 Cloud Run 的权限:gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/iam.serviceAccountUser" \ --project=PROJECT_ID
- 添加 Cloud Run 开发者权限:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@developer.gserviceaccount.com \ --role="roles/run.developer"
如果您在添加其中任一角色时遇到问题,请与您的项目管理员联系。
如果您已安装 CLI,请确保您运行的是最新版本:
gcloud components update
准备 Skaffold 配置
Cloud Deploy 使用 Skaffold 提供要部署的内容的详细信息,以及如何为您的单独目标正确部署这些内容。
在本快速入门中,您将创建一个 skaffold.yaml
文件,以标识要用于部署示例应用的 Cloud Run 服务或作业定义。
打开一个终端窗口。
创建名为
deploy-run-quickstart
的新目录并导航至该目录。mkdir deploy-run-quickstart cd deploy-run-quickstart
创建名为
skaffold.yaml
且包含以下内容的文件:服务
apiVersion: skaffold/v4beta7 kind: Config metadata: name: deploy-run-quickstart profiles: - name: dev manifests: rawYaml: - run-service-dev.yaml - name: prod manifests: rawYaml: - run-service-prod.yaml deploy: cloudrun: {}
求职招聘
apiVersion: skaffold/v4beta7 kind: Config metadata: name: deploy-run-quickstart profiles: - name: dev manifests: rawYaml: - run-job-dev.yaml - name: prod manifests: rawYaml: - run-job-prod.yaml deploy: cloudrun: {}
此文件是最小的 Skaffold 配置,用于标识您的 Cloud Run 服务或作业。请参阅
skaffold.yaml
参考文档 了解有关此文件的更多信息。
准备 Cloud Run 服务或作业
在此快速入门中,您将在同一个项目中创建两个不同的 Cloud Run 服务或两个 Cloud Run 作业。Cloud Deploy 还支持跨多个项目部署。此外,我们还使用 Skaffold 配置文件 在同一个项目中可以拥有两个服务或作业使用 则您可能不需要使用 Skaffold 配置文件。
服务
创建名为
run-service-dev.yaml
且包含以下内容的文件:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: deploy-run-service-dev spec: template: spec: containers: - image: my-app-image
此文件用于定义 Cloud Run 服务。作为名称
deploy-run-service-dev
表示这是您的dev
服务,并且 对应于交付流水线进程中的第一个目标。创建名为
run-service-prod.yaml
且包含以下内容的文件:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: deploy-run-service-prod spec: template: spec: containers: - image: my-app-image
此文件定义了另一项 Cloud Run 服务,正如名称
deploy-run-service-prod
所暗示,这是您的prod
服务,对应于交付流水线进度中的第二个目标。
作业
创建名为
run-job-dev.yaml
且包含以下内容的文件:apiVersion: run.googleapis.com/v1 kind: Job metadata: name: deploy-run-job-dev spec: template: spec: template: spec: containers: - image: my-app-image
此文件定义了 Cloud Run 作业。作为名称
deploy-run-job-dev
表示这是您的dev
作业,对应于 交付流水线进程中的第一个目标。创建名为
run-job-prod.yaml
且包含以下内容的文件:apiVersion: run.googleapis.com/v1 kind: Job metadata: name: deploy-run-job-prod spec: template: spec: template: spec: containers: - image: my-app-image
此文件定义了另一个 Cloud Run 作业。作为名称
deploy-run-job-prod
表示这是您的prod
作业,对应于 交付到交付流水线进程中的第二个目标。
创建交付流水线和目标
您可以在一个文件中或在单独的文件中定义流水线和目标。在本快速入门中,您将创建一个文件。
在
deploy-run-quickstart
目录中,创建包含以下内容的新文件clouddeploy.yaml
:apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: my-run-demo-app-1 description: main application pipeline serialPipeline: stages: - targetId: run-qsdev profiles: [dev] - targetId: run-qsprod profiles: [prod] --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: run-qsdev description: Cloud Run development service run: location: projects/PROJECT_ID/locations/us-central1 --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: run-qsprod description: Cloud Run production service run: location: projects/PROJECT_ID/locations/us-central1
在 Cloud Deploy 服务中注册流水线和目标:
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_ID
现在,您已经有了包含目标的流水线,可以将应用部署到第一个目标了。
确认您的流水线和目标:
在 Google Cloud 控制台中,前往 Cloud Deploy 交付流水线页面,用于查看可用交付列表 流水线。
此时将显示您刚刚创建的交付流水线,并且目标列会列出了两个目标。
创建版本
版本是表示要部署的更改的中央 Cloud Deploy 资源。交付流水线定义该版本的生命周期。如需详细了解该生命周期,请参阅 Cloud Deploy 服务架构。
从 deploy-run-quickstart
目录运行以下命令,以创建表示要部署的容器映像的 release
资源:
服务
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=my-run-demo-app-1 \
--images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:4a856b6f1c3ce723a456ddc2adfbb794cbfba93f727e2d96fcf6540bd0d6fff4
作业
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=my-run-demo-app-1 \
--images=my-app-image=us-docker.pkg.dev/cloudrun/container/job@sha256:d7c33651fbad911a9a0a0c16f2f9b3a79f0b9e3e89afb205603af706067feac5
与所有版本一样(除非包含 --disable-initial-rollout
),
Cloud Deploy 会自动创建
rollout 资源。该应用
自动部署到过程中的第一个目标中。
提升版本
在交付流水线页面中,点击
my-run-demo-app-1
流水线。交付流水线详情页面显示交付流水线进展的图形表示。在本示例中,它显示版本已部署到
run-qsdev
目标。在交付流水线直观显示中的第一个目标上,点击提升。
此时将显示提升版本对话框。它会显示您要提升到的目标的详细信息。
点击提升。
该版本现已加入队列以部署到
run-qsprod
。部署时 交付流水线可视化图表将其显示为已部署:
在 Google Cloud 控制台中查看结果
在 Google Cloud 控制台中,前往 Cloud Deploy 交付流水线页面,用于查看 my-run-demo-app-1 交付流水线。
点击交付流水线的名称“my-run-demo-app-1”。
流水线直观显示将显示应用在流水线中进展。
您的版本列在版本标签页中交付流水线详细信息下。
点击版本名称
test-release-001
。您的发布会显示在发布下。您可以点击发布以查看其详细信息,包括部署日志。
访问 Cloud Run 服务
默认情况下,您必须通过身份验证才能访问新创建的 Cloud Run 服务。查看 Cloud Run 身份验证概览:了解如何 提供凭据,并了解 Identity and Access Management 配置是什么 必须执行此操作,才能在不进行身份验证的情况下访问该服务。这不适用于 Cloud Run 作业。
清理
为避免因本页中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。
删除
deploy-qs-dev
Cloud Run 服务或作业:服务
gcloud run services delete deploy-run-service-dev --region=us-central1 --project=PROJECT_ID
作业
gcloud run jobs delete deploy-run-job-dev --region=us-central1 --project=PROJECT_ID
删除
deploy-qs-prod
服务:服务
gcloud run services delete deploy-run-service-prod --region=us-central1 --project=PROJECT_ID
作业
gcloud run jobs delete deploy-run-job-prod --region=us-central1 --project=PROJECT_ID
删除交付流水线、目标、版本和发布:
gcloud deploy delete --file=clouddeploy.yaml --force --region=us-central1 --project=PROJECT_ID
删除 Cloud Deploy 创建的 Cloud Storage 存储桶。
一个以
_clouddeploy
结尾,另一个是[region].deploy-artifacts.[project].appspot.com
。
恭喜,您已经完成快速入门!