配置架构参考文档

Cloud Deploy 配置文件定义交付流水线、要部署到的目标以及这些目标的进度

交付流水线配置文件可以包含目标定义,也可以位于一个或多个单独的文件中。按照惯例,一个包含交付流水线配置和 目标配置称为 clouddeploy.yaml,不包含 目标称为 delivery-pipeline.yaml。不过,您可以为这些文件指定所需的任意名称。其他资源定义,例如 自动化部署政策,也可以与部署政策位于同一文件中, 交付流水线或目标定义。

分门别类 (What goes where)

Cloud Deploy 使用两个主要配置文件:

这些文件可以是单独的文件,或者交付流水线和目标可以是 。

交付流水线配置文件的结构

以下配置包含目标定义:

# Delivery pipeline config
apiVersion: deploy.cloud.google.com/v1
kind: DeliveryPipeline
metadata:
 name:
 annotations:
 labels:
description:
suspended:
serialPipeline:
 stages:
 - targetId:
   profiles: []
# Deployment strategies
# One of:
#   standard:
#   canary:
# See the strategy section in this document for details.
   strategy:
     standard:
       verify:
       predeploy:
         actions: []
       postdeploy:
         actions: []
   deployParameters:
   - values:
     matchTargetLabels:
 - targetId:
   profiles: []
   strategy:
   deployParameters:
---

# Target config
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
 name:
 annotations:
 labels:
description:
multiTarget:
 targetIds: []
deployParameters:
requireApproval:
#
# Runtimes
# one of the following runtimes:
gke:
 cluster:
 internalIp:
 proxyUrl:
#
# or:
anthosCluster:
 membership:
#
# or:
run:
 location:
#
# or:
customTarget:
  customTargetType:
#
# (End runtimes. See documentation in this article for more details.)
#
executionConfigs:
- usages:
  - [RENDER | PREDEPLOY | DEPLOY | VERIFY | POSTDEPLOY]
  workerPool:
  serviceAccount:
  artifactStorage:
  executionTimeout:
  verbose:
---

# Custom target type config
apiVersion: deploy.cloud.google.com/v1
kind: CustomTargetType
metadata:
  name:
  annotations:
  labels:
description:
customActions:
  renderAction:
  deployAction:
  includeSkaffoldModules:
    - configs:
    # either:
    googleCloudStorage:
      source:
      path:
    # or:
    git:
      repo:
      path:
      ref:
---

# Automation config
apiVersion: deploy.cloud.google.com/v1
kind: Automation
metadata:
  name:
  labels:
  annotations:
description:
suspended:
serviceAccount:
selector:
- target:
    id:
    # or
    labels:
rules:
- [RULE_TYPE]:
  name:
  [RULE-SPECIFIC_CONFIG]

此 YAML 有三个主要组成部分:

  • 主要交付流水线和进展

    配置文件可以包含任意数量的流水线定义。

  • 目标定义

    为简单起见,此示例仅显示一个目标,但目标可以是任何数量。此外,目标可以在一个或多个单独的文件中定义。

  • 自定义目标类型定义

    自定义目标,需要自定义目标类型 定义。与目标和自动化操作一样,自定义目标类型可以在与交付流水线相同的文件中或在单独的文件中定义。

  • 自动化操作定义

    您可以在与交付流水线和目标相同的文件中或在单独的文件中创建任何部署自动化操作。为简单起见,此处仅显示一个 Automation,但您可以将以下项创建为 数量不限

本文档的其余部分定义这些组成部分。

流水线定义和进展

除了流水线元数据(例如 name)之外,主要流水线定义还包括按部署序列顺序列出的对目标的引用列表。也就是说,列出的第一个目标是第一个部署目标。部署到该目标后,提升版本会部署到列表中的下一个目标。

以下是交付流水线的配置属性,不包括目标定义。

metadata.name

name 字段采用的字符串对于每个项目和位置必须是唯一的。

metadata.annotationsmetadata.labels

交付流水线配置可以包含注释和标签。在注册流水线后,注释和标签会与交付流水线资源一起存储。

如需了解详情,请参阅将标签和注释与 Cloud Deploy 搭配使用

description

描述此交付流水线的任意字符串。已显示此说明 Google Cloud 控制台的交付流水线详细信息中。

suspended

一个布尔值,如果为 true,则暂停交付流水线,使其无法用于创建、升级、回滚或重新部署版本。此外,如果投放流水线被暂停,您将无法批准或拒绝通过该流水线创建的发布。

默认值为 false

serialPipeline

串行进度交付流水线定义的开头。这个 必须提供节。

stages

将此交付流水线配置为要部署到的所有目标的列表。

该列表必须采用所需的交付顺序。例如,如果您具有名为 devstagingproduction 的目标,请按照相同的顺序列出它们,以便您的第一个部署是 dev,最后一个部署是 production

使用相应的目标定义中 metadata.name 字段的值填充每个 stages.targetId 字段。并且在 targetId 下方,包括 profiles

serialPipeline:
 stages:
 - targetId:
   profiles: []
   strategy:
     standard:
       verify:

targetId

标识要用于交付流水线此阶段的特定目标。该值是目标定义中的 metadata.name 属性。

strategy.standard.verify 设置为 true 可启用 对目标执行部署验证。如果未指定部署策略,则使用 standard 部署策略,并将验证设置为 false

profiles

skaffold.yaml 中获取零个或零个以上 Skaffold 配置文件名称的列表。Cloud Deploy 在创建版本时将配置文件与 skaffold render 搭配使用。借助 Skaffold 配置文件,您可以在使用单个配置文件时更改目标之间的配置。

strategy

包含用于指定部署策略的属性。以下 策略:

  • standard:

    应用已完全部署到指定目标。

    这是默认的部署策略。如果省略 strategy, Cloud Deploy 使用 standard 部署策略。

  • canary:

    Canary 版部署中,您可以逐步部署应用的新版本,以百分比递增的方式替换已在运行的版本(例如,25%、50%、75%、100%)。

部署策略按目标进行定义。例如,您可以为 prod 目标设置 Canary 策略,但为其他目标设置标准策略(未指定 strategy)。

如需了解详情,请参阅使用部署策略

strategy 配置

本部分针对每种受支持的 strategy 配置元素 运行时。

标准部署策略

标准策略仅包含以下元素:

strategy:
  standard:
    verify: true|false

verify 是可选属性。默认值为 false,表示 为最终发布的版本没有验证阶段。

对于标准部署策略,您可以省略 strategy 元素。

Canary 部署策略

以下部分介绍了 Canary 部署策略 Cloud Deploy 支持的每个运行时。

对于 Cloud Run 目标
strategy:
  canary:
    runtimeConfig:
      cloudRun:
        automaticTrafficControl: true | false
    canaryDeployment:
      percentages: [PERCENTAGES]
      verify: true | false
对于 GKE 和 GKE Enterprise 目标

以下 YAML 展示了如何使用基于服务的网络为 GKE 或 GKE Enterprise 目标配置部署策略:

      canary:
        runtimeConfig:
          kubernetes:
            serviceNetworking:
              service: "SERVICE_NAME"
              deployment: "DEPLOYMENT_NAME"
              disablePodOverprovisioning: true | false
        canaryDeployment:
          percentages: [PERCENTAGES]
          verify: true | false

以下 YAML 展示了如何使用 Gateway API 为 GKE 或 GKE Enterprise 目标配置部署策略:

      canary:
        runtimeConfig:
          kubernetes:
            gatewayServiceMesh:
              httpRoute: "HTTP_ROUTE_NAME"
              service: "SERVICE_NAME"
              deployment: "DEPLOYMENT_NAME"
              routeUpdateWaitTime: "WAIT_TIME"
        canaryDeployment:
          percentages: ["PERCENTAGES"]
          verify: true | false

请注意,在此示例中 routeUpdateWaitTime。这个 因为 Gateway API 使用 HTTPRoute 资源拆分流量, 并且有时会延迟传递对 HTTPRoute 所做的更改。在 此类请求可能会被丢弃,因为流量会发送到 不可用的节点您可以使用 routeUpdateWaitTime 来 应用 HTTPRoute 更改后,Cloud Deploy 会等待(前提是 观察此延迟。

以下 YAML 展示了如何配置自定义自定义自动化 Canary 部署策略特定于运行时的配置,位于 runtimeConfig 部分,自定义 Canary 中省略,但会包含在 自动化和自定义自动化 Canary 配置。

strategy:
       canary:
         # Runtime configs are configured as shown in the
         # Canary Deployment Strategy section of this document.
         runtimeConfig:

         # Manual configuration for each canary phase
         customCanaryDeployment:
           - name: "PHASE1_NAME"
             percent: PERCENTAGE1
             profiles: [ "PROFILE1_NAME" ]
             verify: true | false
           - 
           - name: "stable"
             percent: 100
             profiles: [ "LAST_PROFILE_NAME" ]
             verify: true|false

verify

可选布尔值,指示是否支持部署验证 。默认值为 false

启用部署验证还需要 verifyskaffold.yaml 中。如果您不提供此属性,验证作业将 失败。

deployParameters

允许您指定键值对来将值传递给清单 标签匹配的目标(使用部署参数时)。

您也可以将其添加到目标中。

在交付流水线上设置的部署参数使用标签来匹配目标:

deployParameters:
- values:
    someKey: "value1"
  matchTargetLabels:
    label1: firstLabel
- values:
    someKey: "value2"
  matchTargetLabels:
    label2: secondLabel

在此示例中,为键提供了两个值,而对于每个值, 有一个标签。该值将应用于所有具有 匹配的标签。

predeploypostdeploy 作业

借助这些参数,您可以引用要在部署作业 (predeploy) 之前和验证作业(如果有)之后运行的自定义操作(在 skaffold.yaml单独定义)。如果没有验证作业,则部署后作业会在部署作业之后运行。

strategy.standardstrategy.canary 下配置部署钩子,如下所示:

serialPipeline:
  stages:
  - targetId: 
    strategy:
      standard:
        predeploy:
          actions: [ACTION_NAME]
        postdeploy:
          actions: [ACTION_NAME]

其中,ACTION_NAMEskaffold.yaml 中为 customActions.name 配置的名称。

您可以在任何策略下配置 predeploypostdeploy 作业 (例如 standardcanary)。

如需详细了解如何配置和使用部署前/后钩子,请参阅在部署前/后运行钩子

目标定义

交付流水线定义文件可以包含目标定义,或者您可以在单独的文件中指定目标。您可以在项目中重复使用目标名称,但这些名称在交付流水线中必须是唯一的。

您可以在多个交付流水线中重复使用目标。但是,您只能在单个交付流水线的进展中引用目标一次。

另请参阅:自定义目标类型定义

对于 GKE 目标

以下 YAML 展示了如何配置部署到 GKE 集群的目标:

     apiVersion: deploy.cloud.google.com/v1
     kind: Target
     metadata:
      name:
      annotations:
      labels:
     description:
     deployParameters:
     multiTarget:
      targetIds: []

     requireApproval:
     gke:
      cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]
      internalIp:
      proxyUrl:

     executionConfigs:
     - usages:
       - [RENDER | PREDEPLOY | DEPLOY | VERIFY | POSTDEPLOY]
       workerPool:
       serviceAccount:
       artifactStorage:
       executionTimeout:
       verbose:

metadata.name

此目标的名称。此名称必须是全局唯一的。

metadata.annotations”和“metadata.labels

目标配置支持 Kubernetes 注释标签, 但 Cloud Deploy 不需要它们

注释和标签与目标资源一起存储。如需了解详情,请参阅将标签和注释与 Cloud Deploy 搭配使用

description

此字段采用任意字符串,用于描述此目标的使用。

deployParameters

您可以在任何目标上添加部署参数, 以及值这些值会在呈现后分配给清单中的相应键。

deployParameters 节接受键值对,如下所示:

deployParameters:
  someKey: "someValue"
  someOtherKey: "someOtherValue"

如果您在集群上 multi-target,则该值会分配给 该清单包含 子目标

multiTarget.targetIds: []

此属性为可选属性,用于配置要用于并行部署多目标

该值是以英文逗号分隔的子目标列表。子目标配置为常规目标,不包含此项 multiTarget 属性。

requireApproval

提升到此目标是否需要手动批准。可以是 truefalse

此为可选属性。默认值为 false

配置并行部署时,您可以仅要求多目标获得批准,而无需子目标获得批准。

gke

(仅限 GKE 集群) 将在其中部署应用的集群:

gke:
  cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]
  • project_name

    集群所在的 Google Cloud 项目。

  • location

    集群所在的位置。例如 us-central1。该集群也可以是可用区级 (us-central1-c)。

  • cluster_name

    集群的名称,与 Google Cloud 控制台中的集群列表中显示的名称相同。

示例如下:

gke:
  cluster: projects/cd-demo-01/locations/us-central1/clusters/prod

配置多目标时,请省略 gke 属性。GKE 集群改为在 子定位条件。

有关说明,请参阅本文中的 executionConfigs 对执行环境属性进行的一些更改

internalIp

指定的 GKE 集群是否使用专用 IP 地址。此为可选属性。默认情况下,Cloud Deploy 会使用集群的公开 IP 地址。如果存在专用 IP 地址 并且您想使用该地址,请将此属性设为 true

proxyUrl

如果您通过代理访问集群,请在此处提供 proxyUrl 属性。该值是代理 GKE 集群的网址,系统会在连接到集群时将其传递给 kubectl

对于 Cloud Run 目标

以下 YAML 展示了如何配置目标 部署到 Cloud Run 服务

     apiVersion: deploy.cloud.google.com/v1
     kind: Target
     metadata:
      name:
      annotations:
      labels:
     description:
     multiTarget:
      targetIds: []

     requireApproval:
     run:
      location: projects/[project_name]/locations/[location]

     executionConfigs:
     - usages:
       - [RENDER | PREDEPLOY|  DEPLOY | VERIFY | POSTDEPLOY]
       workerPool:
       serviceAccount:
       artifactStorage:
       executionTimeout:
       verbose:

metadata.name

此目标的名称。此名称在每个区域必须是唯一的。

metadata.annotations”和“metadata.labels

目标配置支持注解和标签, 但 Cloud Deploy 不需要它们

注释和标签与目标资源一起存储。如需了解详情,请参阅将标签和注释与 Cloud Deploy 搭配使用

description

此字段采用任意字符串,用于描述此目标的使用。

multiTarget.targetIds: []

该属性是可选属性,用于配置 多目标 并行部署

该值是以英文逗号分隔的子目标列表。子目标配置为常规目标,不包含此项 multiTarget 属性。

requireApproval

提升到此目标是否需要手动批准。可以是 truefalse

此为可选属性。默认值为 false

配置并行部署时,您可以要求 批准时,仅限于多目标,而不是子目标。

run

该服务的位置(仅限 Cloud Run 服务) 将创建:

run:
  location: projects/[project_name]/locations/[location]
  • project_name

    服务所在的 Google Cloud 项目。

  • location

    服务所在的位置。例如 us-central1

配置 [多目标] 时省略 run 属性。相反,Cloud Run 服务的位置是在相应的子目标内配置的。

如需了解执行环境属性的说明,请参阅本文中的 executionConfigs

对于 GKE Enterprise 目标

目标配置: 部署到 GKE 集群的过程类似于 为 GKE 目标配置目标; 只不过该属性是anthosCluster.membership,而不是 gke.cluster。 资源路径不同,并且 internalIp 不适用。

anthosCluster:
  membership: projects/[project_name]/locations/global/memberships/[membership_name]
  • project_name

    GKE Enterprise 集群所在的 Google Cloud 项目。

  • /location/global/

    注册集群的位置。global

  • membership_name

    GKE Enterprise 集群成员资格的名称。

示例如下:

anthosCluster:
  membership: projects/cd-demo-01/locations/global/memberships/prod

配置 [多目标] 时省略 anthosCluster 属性。通过 GKE Enterprise 集群改为在 子定位条件。

如需详细了解如何部署到 GKE 集群,请参阅部署到 Anthos 用户集群

对于自定义目标

自定义目标的配置与所有其他目标类型类似,但不包含 gke 诗节、run 诗节或 anthosCluster 诗节。

相反,自定义目标包括一个 customTarget 节:

customTarget:
  customTargetType: [CUSTOM_TARGET_TYPE_NAME]

其中,CUSTOM_TARGET_TYPE_NAME 是您在自定义目标类型定义中使用的名称。

示例如下:

apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
  name: sample-env
customTarget:
  customTargetType: basic-custom-target

executionConfigs

用于为此目标指定非默认执行环境的一组字段。

  • usages

    RENDER 和/或 DEPLOY,以及 PREDEPLOYVERIFYPOSTDEPLOY(如果是验证或 在目标上启用部署钩子。 这些参数指示使用此执行环境为此目标执行这些操作中的哪些。指明自定义执行环境 用于部署前钩子、渲染、部署、部署后钩子和验证, 则可以按如下方式对其进行配置:

    usages:
    - RENDER
    - PREDEPLOY
    - DEPLOY
    - VERIFY
    - POSTDEPLOY
    

    如果在流水线阶段启用了验证, 并且您没有在 Cloud Deploy 的 usages 节中指定 VERIFY 使用默认执行环境进行验证。预部署钩子和后部署钩子的工作原理相同。

    不过,如果 RENDERDEPLOY 有自定义执行环境, 则必须VERIFYPREDEPLOYPOSTDEPLOY(如果它们是 VERIFYPREDEPLOY,并且 POSTDEPLOY 可以与 RENDERDEPLOY 位于同一 usages 中,也可以位于单独的 usages 中。

    除非在同一或单独的自定义执行环境中指定了 RENDERDEPLOY,否则您无法指定 usages.VERIFYusages.PREDEPLOYusages.POSTDEPLOY

  • workerPool

    要使用的工作器池的配置。此参数采用一个资源路径,用于标识要为此目标使用的 Cloud Build 工作器池。例如:

    projects/p123/locations/us-central1/workerPools/wp123

    如需使用默认的 Cloud Build 池,请省略此属性。

    一个给定的目标可以有两个 workerPool(一个用于 RENDER,一个用于 DEPLOY)。配置默认池时,您可以指定备用池 服务账号和/或存储位置。

  • serviceAccount

    要用于此操作的服务账号的名称(RENDERDEPLOY)。

  • artifactStorage

    为此目标执行此操作(RENDERDEPLOY)使用的 Cloud Storage 存储桶(而非默认存储桶)。

  • executionTimeout

    可选。设置 Cloud Build 为 Cloud Deploy 执行的操作的超时时间(以秒为单位)。默认值为 3600 秒(1 小时)。
    示例:executionTimeout: "5000s"

  • verbose

    可选。如果为 true,则以下工具的详细程度级别会设置为 debug

支持的其他语法

本文档中介绍的 executionConfigs 配置是新配置。旧版语法仍然受支持:

executionConfigs:
- privatePool:
    workerPool:
    serviceAccount:
    artifactStorage:
  usages:
  - [RENDER | DEPLOY]
- defaultPool:
    serviceAccount:
    artifactStorage:
  usages:
  - [RENDER | DEPLOY]

多目标配置 executionConfigs 诗节时,每个子目标都可以从该多目标继承该执行环境

自定义目标类型定义

本部分介绍了 自定义目标类型

与标准目标和自动化操作一样,CustomTargetType 定义可 包含在交付流水线定义中,或者包含在单独的一个或多个文件中。

以下 YAML 展示了如何配置自定义目标类型:

apiVersion: deploy.cloud.google.com/v1
kind: CustomTargetType
metadata:
  name: [CUSTOM_TARGET_TYPE_NAME]
  annotations:
  labels:
description:
customActions:
  renderAction: [RENDER_ACTION_NAME]
  deployAction: [DEPLOY_ACTION_NAME]
  includeSkaffoldModules:
    - configs:
    # either:
    googleCloudStorage:
      source:
      path:
    # or:
    git:
      repo:
      path:
      ref:

其中:

  • [CUSTOM_TARGET_TYPE_NAME]

    是您为此自定义目标类型定义指定的任意名称。此名称 任何目标的目标定义中都会引用 (您要定义的自定义定位条件类型)

  • [RENDER_ACTION_NAME]

    是自定义呈现操作的名称。该值是customAction.nameskaffold.yaml 中定义。

  • [DEPLOY_ACTION_NAME]

    是自定义部署操作的名称。该值是customAction.nameskaffold.yaml 中定义。

  • 对于 includeSkaffoldModules,请参阅使用远程 Skaffold 配置

自动化操作定义

本部分介绍用于定义 Cloud Deploy 的字段 自动化资源。

与目标一样,传送内容也可包含 Automation 定义 流水线定义中,还是在单独的一个或多个文件中。

如需详细了解 Cloud Deploy 中的自动化操作,请参阅自动化文档

以下 YAML 展示了如何配置自动化操作。请注意 自动化规则的要求因规则而异。(如需了解可用自动化规则类型的配置,请参阅使用自动化规则一文。)

apiVersion: deploy.cloud.google.com/v1
kind: Automation
metadata:
  name: [PIPELINE_NAME]/[PURPOSE]
  labels:
  annotations:
description: [DESCRIPTION]
suspended: true | false
serviceAccount: [SERVICE_ACCOUNT_ID]
selector:
  targets:
    -  id: [TARGET_ID]
       labels:
         [LABEL_KEY]:[LABEL_VALUE]

rules:
- [RULE_TYPE]:
    name:[RULE_NAME]
  [RULE-SPECIFIC_CONFIG]

其中:

  • [PIPELINE_NAME]

    与使用metadata.name 这项自动化操作所有自动化操作仅适用于其所创建的交付流水线。也就是说,您无法将某项自动化操作 交付流水线。

  • [PURPOSE]

    此自动化操作的其他描述性名称。通常为 自动执行的操作例如 my-app-pipeline/promote

  • labelsannotations 是您要与此自动化操作关联的任何标签或注释。

  • [DESCRIPTION]

    此自动化操作的说明(可选)。

  • suspended

    truefalse,用于指明这项自动化操作是处于启用还是已暂停状态。 如果设置为 true,则不使用自动化操作。对于 在不影响交付流水线的情况下测试自动化

  • [SERVICE_ACCOUNT_ID]

    用于执行自动化操作的服务账号的 ID。例如,如果自动化操作使用 promoteReleaseRule,则此服务账号会执行版本升级,因此需要升级版本所需的权限

    此属性必须提供值。Cloud Deploy 不会使用默认服务账号执行自动化操作。

    此服务账号必须具有以下权限:

    • actAs 权限,用于模拟执行服务账号。

    • 执行要自动执行的操作的权限,例如使用 clouddeploy.releases.promote 提升版本,或使用 clouddeploy.rollouts.advance 推进发布阶段。

  • [TARGET_ID]

    是用于此自动化操作的目标的 ID。虽然自动化操作会与交付流水线相关联,但只会在指定目标上执行。

    您可以将此属性设置为 *,以选择交付流水线中的所有目标。

  • [LABEL_KEY]:[LABEL_VALUE]

    是一个键值对,用于与目标上定义的键值对进行匹配。这将选择与交付流水线相关联且具有 相同的标签和值。

  • [RULE_TYPE]

    是用于此自动化的自动化规则的名称。此值可以是 promoteReleaseRuleadvanceRolloutRulerepairRolloutRule。您可以 在自动化操作中添加多条规则,包括多条规则 相同的 RULE_TYPE。例如,您可以有多个 promoteReleaseRule 创建规则了解详情

  • [RULE_NAME]

    规则的名称。此名称在交付流水线中必须是唯一的。此属性必须提供值。

  • [RULE-SPECIFIC_CONFIG]

    每种支持的自动化操作类型的配置都不同。这些 配置显示在 使用自动化规则

部署政策定义(预览版)

本部分介绍了用于定义部署政策的字段。

与其他 Cloud Deploy 资源一样,您可以在交付流水线定义中或单独的文件中添加 DeployPolicy 定义。

以下 YAML 展示了如何配置部署政策:

apiVersion: deploy.cloud.google.com/v1
kind: DeployPolicy
metadata:
  name: [POLICY_NAME]
  annotations: [ANNOTATIONS]
  labels: [LABELS]
description: [DESCRIPTION]
suspended: [true | false]
selectors:
- deliveryPipeline:
    id: [PIPELINE_ID]
    labels:
      [LABEL_KEY]:[LABEL_VALUE]
  target:
    id: [TARGET_ID]
    labels:
      [LABEL_KEY]:[LABEL_VALUE]
rules:
  - [RULE_TYPE]
      [CONFIGS]

其中:

  • [DESCRIPTION]

    用于描述此政策的可选文本。

  • [POLICY_NAME]

    政策的名称。此字段采用的字符串对于每个项目和位置必须是唯一的。只能包含小写字母、数字和连字符, 第一个字符为字母,最后一个字符为字母或数字; 长度不超过 63 个字符。此名称用作 Google Cloud 控制台。

  • [ANNOTATIONS]”和“[LABELS]

    政策可以包含注释和标签,这些注释和标签会在政策资源创建后成为其一部分。如需了解详情,请参阅 将注解和标签与 Cloud Deploy 搭配使用

  • suspended: [true | false]

    suspended 设为 true 会停用此政策。

  • [PIPELINE_ID]

    是您希望此政策影响的提交流水线的 ID。您可以 使用 * 表示所有流水线。此 ID 与交付流水线上的 metadata.name 属性相同。

  • [TARGET_ID]

    您希望此政策影响的目标的 ID。您可以使用 * 执行以下操作: 表示所有目标。此 ID 与目标上的 metadata.name 属性相同。

  • [LABEL_KEY]:[LABEL_VALUE]

    是与传送时定义的键值对匹配的键值对 流水线或目标。这会选择具有相同标签和值的所有流水线或目标。您可以指定 labels 来代替 id,也可以同时指定 id

  • [RULE_TYPE]

    是您要配置的特定政策规则类型。唯一的有效值为 rolloutRestriction

  • [CONFIGS]

    这组配置属性适用于您要查看的特定政策规则 。规则配置有相关说明 此部分稍后会介绍的 可用的规则

部署政策规则

本部分介绍如何配置各个部署政策规则。

rolloutRestriction

rolloutRestriction 规则可阻止 Cloud Deploy 在指定的时间段内针对部署政策的 selectors 所指明的交付流水线和目标对发布版本执行某些操作

以下 YAML 展示了如何配置 rolloutRestriction 规则:

rules:
- rolloutRestriction:
    id: [RULE_ID]
    actions:
    - [ACTIONS]
    invokers:
    - [INVOKERS]
    timeWindows:
      timeZone: [TIMEZONE]
      oneTimeWindows:
      - start: [START_DATE_TIME]
        end: [END_DATE_TIME]
      weeklyWindows:
      - daysOfWeek:
        - [DAY_OF_WEEK]
        - [DAY_OF_WEEK]
        startTime: [START_TIME]
        endTime: [END_TIME]

其中:

  • RULE_ID

    此规则的标识符。这是必填项。 必须由小写字母、数字和连字符组成,第一个字符必须是字母,最后一个字符可以是字母或数字,长度不得超过 63 个字符。在部署政策中必须是唯一的。

  • ACTIONS

    可选:要通过该政策限制的发布操作。如果留空, 所有操作都受限有效值包括:

    • ADVANCE

      发布阶段不能是 高级

    • APPROVE

      无法批准发布促销活动。

    • CANCEL

      发布计划无法取消。

    • CREATE

      无法创建发布。

    • IGNORE_JOB

      无法忽略作业。

    • RETRY_JOB

      作业无法重试

    • ROLLBACK

      发布无法回滚

    • TERMINATE_JOBRUN

      无法终止作业运行

  • INVOKERS

    指定调用方将根据 被用户或部署自动化操作调用的受限操作。有效 值为:

    • USER

      操作由用户执行。例如,使用 gcloud CLI 命令。

    • DEPLOY_AUTOMATION

      由 Cloud Deploy 执行的自动化操作

    您可以指定任一值,也可以同时指定两个值。默认值(如果您指定 什么都没有,两全其美

  • TIMEZONE

    时区 IANA 格式、 以指明时间范围例如 America/New_York。 这是必填项。

  • START_DATE_TIME

    对于 oneTimeWindows,表示标记开始的日期和时间 限制窗口,格式为 "yyyy-mm-dd hh:mm"。对于一天的开始,请使用 00:00。此字段是必填字段。

  • END_DATE_TIME

    对于 oneTimeWindows,表示限制时间范围结束的日期和时间,格式为 "yyyy-mm-dd hh:mm"。对于当天结束,请使用 24:00。此字段是必填字段。

  • DAY_OF_WEEK

    对于weeklyWindows、星期几、SUNDAYMONDAYTUESDAY WEDNESDAYTHURSDAYFRIDAYSATURDAY。如果您将此字段留空,则表示匹配一周中的所有日期

  • START_TIME

    对于 weeklyWindows,是指定星期几的开始时间。如果您 必须包含开始时间,则必须添加结束时间。对于一天的开始,请使用 00:00

  • END_TIME

    对于 weeklyWindows,表示一周中特定日期的结束时间。如果您添加了开始时间,则必须添加结束时间。说到今天, 请使用 24:00

后续步骤