配置架构参考文档

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:
       predeploy:
         tasks: []
       verify:
         tasks: []
       analysis:
       postdeploy:
         tasks: []
   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 | ANALYSIS]
  workerPool:
  serviceAccount:
  artifactStorage:
  executionTimeout:
  verbose:
---

# Custom target type config
apiVersion: deploy.cloud.google.com/v1
kind: CustomTargetType
metadata:
  name:
  annotations:
  labels:
description:
tasks:
  render:
  deploy:
---

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

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

  • 主要交付流水线和进展

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

  • 目标定义

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

  • 自定义目标类型定义

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

  • Automation 定义

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

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

流水线定义和进展

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

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

metadata.name

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

metadata.annotationsmetadata.labels

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

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

description

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

suspended

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

默认值为 false

serialPipeline

串行进度交付流水线定义的开头。此 stanza 是必需的。

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 部署策略。