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:
dnsEndpoint:
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 定义
您可以在与交付流水线和目标相同的文件中或在单独的文件中创建任何部署自动化。为简单起见,此处仅显示一个
Automation
,但您可以根据需要创建任意数量的Automation
。
本文档的其余部分定义这些组成部分。
流水线定义和进展
除了流水线元数据(例如 name
)之外,主要流水线定义还包括按部署序列顺序列出的对目标的引用列表。也就是说,列出的第一个目标是第一个部署目标。部署到该目标后,提升版本会部署到列表中的下一个目标。
以下是交付流水线的配置属性,不包括目标定义。
metadata.name
name
字段采用的字符串对于每个项目和位置必须是唯一的。
metadata.annotations
和 metadata.labels
交付流水线配置可以包含注释和标签。在注册流水线后,注释和标签会与交付流水线资源一起存储。
如需了解详情,请参阅将标签和注释与 Cloud Deploy 搭配使用。
description
描述此交付流水线的任意字符串。此说明显示在 Google Cloud 控制台中的交付流水线详细信息中。
suspended
一个布尔值,如果为 true
,则暂停交付流水线,使其无法用于创建、升级、回滚或重新部署版本。
此外,如果交付流水线处于暂停状态,您将无法批准或拒绝通过该流水线创建的发布。
默认值为 false
。
serialPipeline
串行进度交付流水线定义的开头。此 stanza 是必需的。
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%,然后完全部署)替换已运行的版本。
部署策略是按目标定义的。例如,您可能为 prod
目标设置了 Canary 策略,但为其他目标设置了标准策略(未指定 strategy
)。
如需了解详情,请参阅使用部署策略。
strategy
配置
本部分针对每个受支持的运行时显示了 strategy
的配置元素。
标准部署策略
标准策略仅包含以下要素:
strategy:
standard:
verify: true|false
verify
是可选属性。默认值为 false
,表示生成的发布版本不会有验证阶段。
对于标准部署策略,您可以省略 strategy
元素。
Canary 部署策略
以下部分介绍了 Cloud Deploy 支持的每种运行时的灰度部署策略的配置。
对于 Cloud Run 目标
strategy:
canary:
runtimeConfig:
cloudRun:
automaticTrafficControl: true | false
canaryDeployment:
percentages: [PERCENTAGES]
verify: true | false
对于 Cloud Run 目标,AutomaticTrafficControl
必须为 true
,除非您要配置自定义 Canary。
适用于 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"
routeDestinations:
destinationIds: ["KEY"]
propagateService: [true|false]
canaryDeployment:
percentages: ["PERCENTAGES"]
verify: true | false
请注意此示例中的 routeUpdateWaitTime
。之所以包含此内容,是因为 Gateway API 使用 HTTPRoute
资源拆分流量,有时传播对 HTTPRoute
所做的更改会延迟。在这种情况下,请求可能会被丢弃,因为流量会发送到不可用的资源。如果您发现此延迟,可以使用 routeUpdateWaitTime
使 Cloud Deploy 在应用 HTTPRoute
更改后等待。
以下 YAML 展示了如何配置自定义 Canary 部署策略(适用于服务网络、Gateway API 或 Cloud Run)或自定义自动化 Canary 部署策略(适用于服务网络、Gateway API 或 Cloud Run)。在 runtimeConfig
部分中,特定于运行时的配置在自定义 Canary 版中被省略,但在自动化和自定义自动化 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
。
启用部署验证还需要在 skaffold.yaml
中添加 verify
stanza。如果您未提供此属性,验证作业将会失败。
deployParameters
允许您指定键值对,以便在使用部署参数时将值传递给标签匹配目标的清单。
您还可以将其包含在目标中。
在交付流水线上设置的部署参数使用标签来匹配目标:
deployParameters:
- values:
someKey: "value1"
matchTargetLabels:
label1: firstLabel
- values:
someKey: "value2"
matchTargetLabels:
label2: secondLabel
在此示例中,为键提供了两个值,并且每个值都有一个标签。该值会应用于具有匹配标签的任何目标的清单。
predeploy
和 postdeploy
作业
这些钩子可让您引用自定义操作(在 skaffold.yaml
中单独定义),以便在部署作业 (predeploy
) 之前和验证作业(如果存在)(postdeploy
) 之后运行。如果没有验证作业,则在部署作业之后运行部署后作业。
部署钩子在 strategy.standard
或 strategy.canary
下配置,如下所示:
serialPipeline:
stages:
- targetId:
strategy:
standard:
predeploy:
actions: [ACTION_NAME]
postdeploy:
actions: [ACTION_NAME]
其中,ACTION_NAME 是在 skaffold.yaml
中为 customActions.name
配置的名称。
您可以在任何策略(例如 standard
、canary
)下配置 predeploy
和 postdeploy
作业。
如需详细了解如何配置和使用部署前钩子和部署后钩子,请参阅在部署前后运行钩子。
目标定义
交付流水线定义文件可以包含目标定义,或者您可以在单独的文件中指定目标。您可以在项目中重复使用目标名称,但这些名称在交付流水线中必须是唯一的。
您可以在多个交付流水线中重复使用目标。但是,您只能在单个交付流水线的进展中引用目标一次。
另请参阅:自定义目标类型定义
对于 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]
dnsEndpoint:
internalIp:
proxyUrl:
associatedEntities:
[KEY]:
gkeClusters:
- cluster: projects/[project_name]/locations/[location]/clusters/[cluster_name]
dnsEndpoint: [true|false]
internalIp: [true|false]
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
stanza 采用键值对,如下所示:
deployParameters:
someKey: "someValue"
someOtherKey: "someOtherValue"
如果您在多目标上设置部署参数,该值会分配给相应多目标的所有子目标的清单。
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
。如需了解如何将 HTTPRoute 部署到其他非目标集群,请参阅将 HTTPRoute 部署到其他集群。
dnsEndpoint
如果设置为 true
,Cloud Deploy 将使用 DNS 端点(而不是默认端点)连接到 GKE 集群,而默认端点可能是公共 IP、专用 IP 或 DNS 端点,具体取决于集群配置。
此选项不能与 internalIp
选项同时使用。
internalIp
如果设置为 true
,Cloud Deploy 将使用专用 IP 地址(而不是默认端点)连接到 GKE 集群,而默认端点可能是公共 IP、专用 IP 或 DNS 端点,具体取决于集群配置。
此选项不能与 dnsEndpoint
选项同时使用。由于 dnsEndpoint
的网络配置要简单得多,因此我们建议改用该配置。
proxyUrl
如果您通过 HTTP 代理访问集群,请在此处提供 proxyUrl
属性。该值是代理的网址,在连接到集群时会传递给 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
,资源路径不同,并且不适用特定的连接方法(dnsEndpoint
或 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
stanza、run
stanza 和 anthosCluster
stanza。
不过,自定义目标包含一个 customTarget
stanza:
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
如果在流水线阶段启用了验证,并且您未在
usages
stanza 中指定VERIFY
,Cloud Deploy 会使用默认的执行环境进行验证。预部署和部署后钩子的工作方式相同。不过,如果
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
为此目标执行此操作使用的 Cloud Storage 存储桶(
RENDER
或DEPLOY
),而非默认存储桶。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
stanza 时,每个子目标都可以从该多目标继承执行环境。
自定义目标类型定义
本部分介绍了用于定义自定义目标类型的字段
与标准目标和自动化一样,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]
是自定义渲染操作的名称。此值是
skaffold.yaml
中定义的customAction.name
。[DEPLOY_ACTION_NAME]
是自定义部署操作的名称。此值是
skaffold.yaml
中定义的customAction.name
。对于
includeSkaffoldModules
,请参阅使用远程 Skaffold 配置。
Automation 定义
本部分介绍了用于定义 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
、timedPromoteReleaseRule
、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
,也可以指定labels
和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 的工作原理。
了解如何为应用设置交付流水线。
了解如何管理清单。
了解流水线实例,以避免您的版本与交付流水线不匹配。