在 Cloud Deploy 中自动执行版本提升和发布推进
本页面介绍了如何使用 Cloud Deploy 自动将版本提升到目标,以及如何将发布推进到下一阶段。
在本快速入门中,您将执行以下操作:
创建两个 GKE 集群或两个 Cloud Run 服务。
创建 Skaffold 配置以及 Kubernetes 清单或 Cloud Run 服务定义。
定义 Cloud Deploy 交付流水线和部署目标。
该流水线将部署到两个目标:
dev和staging。并且staging目标使用 Canary 部署策略。定义两个自动化规则:
在成功发布到
dev后,将版本提升到staging目标的自动化操作。在成功完成
canary-25阶段后,将发布推进到stable阶段的自动化操作。
通过创建一个自动部署到
dev目标的版本来实例化交付流水线。在 Google Cloud 控制台中查看交付流水线和版本。
由于自动提升,此版本会自动提升到
staging。由于
staging目标使用 Canary 部署策略,并且这是首次部署到该运行时,因此系统会跳过canary-25阶段。 如需详细了解为何首次跳过 Canary 阶段,请参阅 为何有时会跳过阶段 。由于自动推进阶段,发布会推进到
stable阶段。
准备工作
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud Deploy, Cloud Build, GKE, Cloud Run, and Cloud Storage APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
安装 Google Cloud CLI。
-
配置 gcloud CLI 以使用您的联合身份。
如需了解详情,请参阅使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
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@ \ --role="roles/clouddeploy.jobRunner" - 添加
clouddeploy.releaser角色:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@ \ --role="roles/clouddeploy.releaser" - 为您的特定运行时添加开发者角色。
- 对于 GKE:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@ \ --role="roles/container.developer" - 对于 Cloud Run:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@ \ --role="roles/run.developer" -
添加
iam.serviceAccountUser角色,其中包括默认服务帐号向运行时部署的actAs权限:gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@ \ --member=serviceAccount:$(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@ \ --role="roles/iam.serviceAccountUser" \ --project=PROJECT_ID -
添加
iam.serviceAccountUser角色,其中包括您自己使用默认服务帐号的actAs权限:gcloud iam service-accounts add-iam-policy-binding $(gcloud projects describe PROJECT_ID \ --format="value(projectNumber)")-compute@ \ --member=user:YOUR_EMAIL_ADDRESS \ --role="roles/iam.serviceAccountUser" \ --project=PROJECT_ID在本例中,YOUR_EMAIL_ADDRESS 是您用于访问 Google Cloud 的电子邮件地址。
- 首先添加
如果您已安装 CLI,请确保您运行的是最新版本:
gcloud components update
创建运行时环境
如果您要部署到 Cloud Run,则可以跳过此命令。
对于 GKE,请使用默认设置创建两个集群:automation-quickstart-cluster-dev 和 automation-quickstart-cluster-staging。集群的 Kubernetes API 端点必须可通过公共互联网访问。默认情况下,GKE 集群可从外部访问。
gcloud container clusters create-auto automation-quickstart-cluster-dev \
--project=PROJECT_ID \
--region=us-central1 \
&& gcloud container clusters create-auto automation-quickstart-cluster-staging \
--project=PROJECT_ID \
--region=us-central1
获取项目编号。
您需要项目编号来标识默认服务帐号。这是配置自动化资源所必需的。
运行以下命令以获取项目编号:
gcloud projects describe PROJECT_ID --format="value(projectNumber)"从命令行输出中复制项目编号,并将其粘贴到此处。