Cloud Deploy 支持使用 Google Cloud Observability 基于指标和同样来自 Google Cloud Observability 的其他数据生成的提醒的分析作业。不过,您也可以扩展 Cloud Deploy 以使用其他指标提供方。本文档介绍了如何配置和使用分析作业,以及自定义容器(包含用于分析所选提供商的指标的逻辑)的要求。
准备工作
-
安装 Google Cloud CLI。
-
配置 gcloud CLI 以使用您的联合身份。
如需了解详情,请参阅使用联合身份登录 gcloud CLI。
-
如需初始化 gcloud CLI,请运行以下命令:
gcloud init 启用 Compute Engine 和 Cloud Deploy API(如果尚未启用):
启用 API 所需的角色
如需启用 API,您需要拥有
serviceusage.services.enable权限。如果您创建了项目,则可能已经通过 Owner 角色 (roles/owner) 获得了此权限。否则,您可以通过 Service Usage Admin 角色 (roles/serviceusage.serviceUsageAdmin) 获得此权限。了解如何授予角色。gcloud services enable clouddeploy.googleapis.com
compute.googleapis.com
所需的角色
如需获得创建和使用分析作业所需的权限,请让您的管理员为您授予项目账号的以下 IAM 角色:
- Cloud Deploy Job Runner (
roles/clouddeploy.jobRunner) - IAM Service Account User (
roles/iam.serviceAccountUser) - Service Usage Consumer (
roles/serviceusage.serviceUsageConsumer)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
为确保 Cloud Deploy 服务账号具有创建和使用分析作业所需的权限,请让您的管理员为 Cloud Deploy 服务账号授予项目的以下 IAM 角色:
- IAM Service Account User (
roles/iam.serviceAccountUser) - Cloud Deploy Releaser (
roles/clouddeploy.releaser) - Cloud Deploy Operator (
roles/clouddeploy.operator)
如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
您的管理员还可以通过自定义角色或其他预定义角色向 Cloud Deploy 服务账号授予所需的权限。
配置自定义分析作业
自定义分析作业与使用 Google Cloud Observability 中的提醒的分析作业相同,但自定义作业使用一个或多个引用自定义容器的任务,以及要在这些容器上运行的命令,以处理来自指标提供方的数据。
本部分介绍了如何配置使用非Google Cloud 监控提供方的 Cloud Deploy 分析作业。
analysis stanza 可直接在部署策略配置(strategy.standard.analysis,用于标准策略)中使用。如果您想按阶段配置分析,可以使用自定义 Canary (strategy.canary.customCanaryDepolyment.phaseConfigs.phaseId.analysis)。
strategy:
standard:
analysis:
duration: DURATION
customChecks:
- id: CHECK_ID
frequency: FREQUENCY
task:
type: container
image: IMAGE_NAME
command: COMMAND
args: [ARGS]
env:
[VAR_NAME: VALUE]
其中:
DURATION是运行分析作业的时长(以秒为单位)。时长到期后,作业即完成。如果分析失败(容器返回非零退出代码),作业会在时长到期之前完成 (
FAILED)。CHECK_ID是单个检查的 ID。此 ID 在相应分析作业中必须是唯一的
FREQUENCY表示运行单个检查的频率(以秒为单位)。
IMAGE_NAME是用于标识容器映像的路径和名称。
COMMAND是要在该容器上运行的命令,例如 shell 脚本 (
/bin/bash)。ARGS是相应命令的实参列表。这是一个逗号分隔列表。如果您的 COMMAND_TO_RUN 是“/bin/sh”,那么此处的某个实参将是
-c,另一个实参将是您要在调用的 shell 中运行的整个命令。VAR_NAME是要传递给容器的环境变量的名称。您可以使用环境变量来配置容器的行为。也就是说,变量及其值会告知容器在指标提供方中具体要监控哪些内容。
您可以在此处使用系统参数作为环境变量。
VALUE是每个环境变量的值。Cloud Deploy 不会对这些环境变量执行任何操作,只会将其及其值传递给您的容器。由容器决定是否在分析逻辑中使用这些值。
自定义分析定义中的每个检查都包含一个引用容器的任务、要在该容器上运行的命令,以及要传递给该容器的任何适用的环境变量。
自定义容器
对于自定义分析,您提供的容器负责分析遥测数据、日志或您使用的指标提供方提供的其他数据。Cloud Deploy 分析作业会等待容器返回代码。
自定义容器必须执行的操作
自定义容器负责从指标提供方提取数据,确定指标、日志或其他数据是否表明应用正常运行,并将结果返回给 Cloud Deploy。
自定义容器必须返回的内容
除了返回零或非零退出代码之外,Cloud Deploy 对自定义容器没有任何其他要求。如果容器返回非零退出代码,则分析失败。
容器可以将结果写入 Cloud Deploy 提供的 Cloud Storage 存储桶中名为 results.json(采用 JSON 格式)的文件。该文件将包含元数据,以键值对的形式呈现。此内容不是必需的。
可用的环境变量
Cloud Deploy 还在执行环境中提供并填充以下环境变量。 您可以在部署钩子、验证作业或自定义目标渲染或部署中使用这些环境变量。
ANTHOS_MEMBERSHIP对于类型为
ANTHOS的目标,Anthos 会员资格的完全指定资源名称。CLOUD_RUN_LOCATION对于类型为
RUN的目标,这是 Cloud Run 服务部署到的区域。CLOUD_RUN_PROJECT对于类型为
RUN的目标,是指创建 Cloud Run 服务的项目。CLOUD_RUN_SERVICE对于
RUN类型的目标,已部署的 Cloud Run 服务的名称。CLOUD_RUN_SERVICE_URLS对于
RUN类型的目标,最终用户将用于访问您的服务的网址(或以英文逗号分隔的网址列表)。您可以在Google Cloud 控制台中,在服务的 Cloud Run 服务详情中找到这些信息。在 Cloud Run 服务成功部署后,Cloud Run 会生成网址。因此,此环境变量仅在 postdeploy 钩子和验证作业中可用。CLOUD_RUN_REVISION对于类型为
RUN的目标,这是 Cloud Run 服务的特定修订版本。GKE_CLUSTER对于类型为
GKE的目标,Google Kubernetes Engine 集群的完整指定资源名称,例如projects/p/locations/us-central1/clusters/dev。TARGET_TYPE目标的具体运行时类型。
GKE、ANTHOS或RUN。 对于自定义目标,此值不会设置。CLOUD_DEPLOY_LOCATION包含 Cloud Deploy 资源的区域。
CLOUD_DEPLOY_DELIVERY_PIPELINE交付流水线的 ID。
CLOUD_DEPLOY_TARGET目标的 ID。
CLOUD_DEPLOY_PROJECT包含 Cloud Deploy 资源的项目对应的 Google Cloud 项目编号。
CLOUD_DEPLOY_PROJECT_ID项目的 Google Cloud 项目 ID。
CLOUD_DEPLOY_RELEASE运行钩子的发布版本的 ID。
CLOUD_DEPLOY_ROLLOUT包含钩子作业的发布版本的 ID。
CLOUD_DEPLOY_JOB_RUN表示作业当前执行的作业运行的 ID。
CLOUD_DEPLOY_PHASE发布中的阶段,包含部署钩子、验证作业或自定义渲染/部署的作业。
后续步骤
了解如何设置部署分析。
如需查看分析的配置架构,请参阅 Cloud Deploy 配置参考。
详细了解部署自动化。
详细了解部署策略。