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.annotations
和 metadata.labels
交付流水线配置可以包含注释和标签。在注册流水线后,注释和标签会与交付流水线资源一起存储。
如需了解详情,请参阅将标签和注释与 Cloud Deploy 搭配使用。
description
描述此交付流水线的任意字符串。已显示此说明 Google Cloud 控制台的交付流水线详细信息中。
suspended
一个布尔值,如果为 true
,则暂停交付流水线,使其无法用于创建、升级、回滚或重新部署版本。此外,如果投放流水线被暂停,您将无法批准或拒绝通过该流水线创建的发布。
默认值为 false
。
serialPipeline
串行进度交付流水线定义的开头。这个 必须提供节。
stages
将此交付流水线配置为要部署到的所有目标的列表。
该列表必须采用所需的交付顺序。例如,如果您具有名为 dev
、staging
和 production
的目标,请按照相同的顺序列出它们,以便您的第一个部署是 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
。
启用部署验证还需要 verify
节
在 skaffold.yaml
中。如果您不提供此属性,验证作业将
失败。
deployParameters
允许您指定键值对来将值传递给清单 标签匹配的目标(使用部署参数时)。
您也可以将其添加到目标中。
在交付流水线上设置的部署参数使用标签来匹配目标:
deployParameters:
- values:
someKey: "value1"
matchTargetLabels:
label1: firstLabel
- values:
someKey: "value2"
matchTargetLabels:
label2: secondLabel
在此示例中,为键提供了两个值,而对于每个值, 有一个标签。该值将应用于所有具有 匹配的标签。
predeploy
和 postdeploy
作业
借助这些参数,您可以引用要在部署作业 (predeploy
) 之前和验证作业(如果有)之后运行的自定义操作(在 skaffold.yaml
中单独定义)。如果没有验证作业,则部署后作业会在部署作业之后运行。
在 strategy.standard
或 strategy.canary
下配置部署钩子,如下所示:
serialPipeline:
stages:
- targetId:
strategy:
standard:
predeploy:
actions: [ACTION_NAME]
postdeploy:
actions: [ACTION_NAME]
其中,ACTION_NAME 是 skaffold.yaml
中为 customActions.name
配置的名称。
您可以在任何策略下配置 predeploy
和 postdeploy
作业
(例如 standard
、canary
)。
如需详细了解如何配置和使用部署前/后钩子,请参阅在部署前/后运行钩子。
目标定义
交付流水线定义文件可以包含目标定义,或者您可以在单独的文件中指定目标。您可以在项目中重复使用目标名称,但这些名称在交付流水线中必须是唯一的。
您可以在多个交付流水线中重复使用目标。但是,您只能在单个交付流水线的进展中引用目标一次。
另请参阅:自定义目标类型定义
对于 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
提升到此目标是否需要手动批准。可以是 true
或 false
。
此为可选属性。默认值为 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
提升到此目标是否需要手动批准。可以是 true
或 false
。
此为可选属性。默认值为 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
,以及PREDEPLOY
、VERIFY
或POSTDEPLOY
(如果是验证或 在目标上启用部署钩子。 这些参数指示使用此执行环境为此目标执行这些操作中的哪些。指明自定义执行环境 用于部署前钩子、渲染、部署、部署后钩子和验证, 则可以按如下方式对其进行配置:usages: - RENDER - PREDEPLOY - DEPLOY - VERIFY - POSTDEPLOY
如果在流水线阶段启用了验证, 并且您没有在 Cloud Deploy 的
usages
节中指定VERIFY
使用默认执行环境进行验证。预部署钩子和后部署钩子的工作原理相同。不过,如果
RENDER
和DEPLOY
有自定义执行环境, 则必须为VERIFY
、PREDEPLOY
或POSTDEPLOY
(如果它们是VERIFY
、PREDEPLOY
,并且POSTDEPLOY
可以与RENDER
或DEPLOY
位于同一usages
中,也可以位于单独的usages
中。除非在同一或单独的自定义执行环境中指定了
RENDER
和DEPLOY
,否则您无法指定usages.VERIFY
、usages.PREDEPLOY
或usages.POSTDEPLOY
。workerPool
要使用的工作器池的配置。此参数采用一个资源路径,用于标识要为此目标使用的 Cloud Build 工作器池。例如:
projects/p123/locations/us-central1/workerPools/wp123
。如需使用默认的 Cloud Build 池,请省略此属性。
一个给定的目标可以有两个
workerPool
(一个用于RENDER
,一个用于DEPLOY
)。配置默认池时,您可以指定备用池 服务账号和/或存储位置。serviceAccount
要用于此操作的服务账号的名称(
RENDER
或DEPLOY
)。artifactStorage
为此目标执行此操作(
RENDER
或DEPLOY
)使用的 Cloud Storage 存储桶(而非默认存储桶)。executionTimeout
可选。设置 Cloud Build 为 Cloud Deploy 执行的操作的超时时间(以秒为单位)。默认值为
3600
秒(1 小时)。
示例:executionTimeout: "5000s"
verbose
可选。如果为
true
,则以下工具的详细程度级别会设置为debug
:Skaffold
--verbosity
已设置为debug
。Skaffold 默认值为warn
。kubectl
--v
已设置为4
(调试)。kubectl 默认值为2
。已设置 Google Cloud CLI
--verbosity
发送至debug
。默认值为warning
。
支持的其他语法
本文档中介绍的 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.name
在skaffold.yaml
中定义。[DEPLOY_ACTION_NAME]
是自定义部署操作的名称。该值是
customAction.name
在skaffold.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
。labels
和annotations
是您要与此自动化操作关联的任何标签或注释。[DESCRIPTION]
此自动化操作的说明(可选)。
suspended
true
或false
,用于指明这项自动化操作是处于启用还是已暂停状态。 如果设置为true
,则不使用自动化操作。对于 在不影响交付流水线的情况下测试自动化。[SERVICE_ACCOUNT_ID]
用于执行自动化操作的服务账号的 ID。例如,如果自动化操作使用
promoteReleaseRule
,则此服务账号会执行版本升级,因此需要升级版本所需的权限。此属性必须提供值。Cloud Deploy 不会使用默认服务账号执行自动化操作。
此服务账号必须具有以下权限:
actAs
权限,用于模拟执行服务账号。执行要自动执行的操作的权限,例如使用
clouddeploy.releases.promote
提升版本,或使用clouddeploy.rollouts.advance
推进发布阶段。
[TARGET_ID]
是用于此自动化操作的目标的 ID。虽然自动化操作会与交付流水线相关联,但只会在指定目标上执行。
您可以将此属性设置为
*
,以选择交付流水线中的所有目标。[LABEL_KEY]:[LABEL_VALUE]
是一个键值对,用于与目标上定义的键值对进行匹配。这将选择与交付流水线相关联且具有 相同的标签和值。
[RULE_TYPE]
是用于此自动化的自动化规则的名称。此值可以是
promoteReleaseRule
、advanceRolloutRule
或repairRolloutRule
。您可以 在自动化操作中添加多条规则,包括多条规则 相同的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
可选:要通过该政策限制的发布操作。如果留空, 所有操作都受限有效值包括:
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
、星期几、SUNDAY
、MONDAY
、TUESDAY
WEDNESDAY
、THURSDAY
、FRIDAY
或SATURDAY
。如果您将此字段留空,则表示匹配一周中的所有日期START_TIME
对于
weeklyWindows
,是指定星期几的开始时间。如果您 必须包含开始时间,则必须添加结束时间。对于一天的开始,请使用00:00
。END_TIME
对于
weeklyWindows
,表示一周中特定日期的结束时间。如果您添加了开始时间,则必须添加结束时间。说到今天, 请使用24:00
。
后续步骤
详细了解 Cloud Deploy 的工作原理。
了解如何为应用设置交付流水线。
了解如何管理清单。
了解流水线实例,以避免您的版本与交付流水线不匹配。