本文档介绍了如何创建自定义 Cloud Deploy 目标类型,以及如何在 Cloud Deploy 交付流水线中将该自定义目标类型用作目标。
以下是创建自定义目标类型并在交付流水线中使用该类型的大致流程:
创建包含引用容器的
CustomTargetType定义,并指定要在容器上运行的命令。定义一个新目标,其中包含一个用于标识新自定义目标类型的
customTarget属性。
本文档的其余部分将详细介绍这些步骤。
创建容器化应用
部署到自定义目标的功能在容器化应用中定义,您可以在 CustomTargetType 定义中将这些应用提供给 Cloud Deploy。当交付流水线包含使用自定义目标类型的目标时,Cloud Deploy 会调用为该自定义目标类型定义的容器,以执行您定义的自定义渲染和部署。
应用的行为由您决定。不过,它必须使用 Cloud Deploy 提供的输入环境变量,并且必须返回必需的输出。
在大多数情况下,对于您创建的每种自定义目标类型,您都需要创建一个用于自定义渲染的容器和一个用于自定义部署的容器。自定义渲染器是可选的,但除非您的自定义目标在通过内置渲染器渲染时能够正常工作,否则您必须创建一个自定义渲染器。
Cloud Deploy 默认使用 skaffold render 渲染清单。
定义自定义目标类型
您可以使用 CustomTargetType 配置先创建一个自定义目标类型,然后定义自定义目标。
您可以在与交付流水线定义相同的文件中创建 CustomTargetType,也可以在包含目标定义的文件中或单独的文件中创建 CustomTargetType。
CustomTargetType 的定义如下:
apiVersion: deploy.cloud.google.com/v1
kind: CustomTargetType
metadata:
name: [CUSTOM_TARGET_TYPE_NAME]
annotations:
labels:
description:
tasks:
render: [RENDER_TASK]
deploy: [DEPLOY_TASK]
位置
CUSTOM_TARGET_TYPE_NAME是您为此自定义目标类型定义指定的任意名称。此名称在任何使用您定义的自定义目标类型的目标的目标定义中引用。
RENDER_TASK是定义自定义渲染的任务。如果未提供,Cloud Deploy 将使用 Skaffold 配置中指定的内置渲染器。
DEPLOY_TASK
注册自定义目标类型
配置 CustomTargetType 后,运行 gcloud deploy apply 命令以在 Google Cloud 项目中注册 CustomTargetType 资源:
gcloud deploy apply --file=[FILE] --project=[PROJECT] --region=[REGION]
其中:
FILE 是您在其中定义此自定义目标类型的文件名。
PROJECT 是要在其中创建此资源的 Google Cloud 项目。
CustomTargetType 必须与引用它的 Target 资源位于同一项目中。如果您已将项目设置为 Google Cloud CLI 的默认项目,则无需指定项目。
REGION 是要在其中创建相应资源的区域(例如 us-central1)。CustomTargetType 必须与引用它的 Target 资源位于同一区域。如果您已将该区域设置为 gcloud CLI 的默认区域,则无需指定该区域。
现在,CustomTargetType 已创建为 Cloud Deploy 资源,您可以在 Target 定义中使用它来创建自定义目标。
如需详细了解 CustomTargetType 定义,请参阅 Cloud Deploy 配置架构参考。
定义目标
受支持的目标类型的目标定义与自定义目标定义之间的唯一区别在于,自定义目标定义包含 customTarget stanza。customTarget 的语法如下:
customTarget:
customTargetType: [CUSTOM_TARGET_TYPE_NAME]
其中,CUSTOM_TARGET_TYPE_NAME 是在自定义目标类型配置中定义的 name 属性的值。
将目标添加到交付流水线
您可以在交付流水线中使用自定义目标,就像使用受支持的目标类型一样。也就是说,受支持的目标类型与自定义目标在投放流水线进度方面没有区别。
交付流水线中的所有目标都必须使用相同的目标类型。例如,您无法创建这样的交付流水线:其中一些目标部署到 Google Kubernetes Engine,而另一些目标是自定义目标。
与支持的目标类型一样,您可以在流水线阶段中添加部署参数。
创建版本
自定义目标类型完全定义完毕,并且已创建使用该类型的目标后,您现在可以按正常方式创建发布版本:
gcloud deploy releases create [RELEASE_NAME] \
--project=[PROJECT_NAME] \
--region=[REGION] \
--delivery-pipeline=[PIPELINE_NAME]
创建发布版本后,系统会针对交付流水线中的每个目标执行自定义呈现,包括处理在发布版本、目标或交付流水线上配置的部署参数。Cloud Deploy 会将部署参数作为输入提供给自定义渲染容器。
查看自定义目标的输出
如果您的自定义渲染任务满足自定义目标的要求,您可以使用 Google Cloud 控制台查看渲染的制品。
请按照以下步骤查看自定义渲染任务的输出。
在 Google Cloud 控制台中,导航到 Cloud Deploy 交付流水线页面,以查看您的交付流水线。
点击交付流水线的名称。
流水线可视化图表将显示应用的部署状态,您的版本列在版本标签页中交付流水线详细信息下。
点击发布版本名称。
系统会显示发布版本详情页面。
点击工件标签页。
在目标工件下,点击查看工件旁边的箭头。
系统会列出渲染后的制品,包括渲染后的 Skaffold 配置文件和自定义渲染器生成的渲染后的清单文件。您可以点击每个文件旁边的存储位置链接,前往 Cloud Storage 存储桶查看这些文件。
您还可以点击查看制品链接,使用发布检查器按发布版本、目标平台或阶段查看这些文件。
后续步骤
请参阅可用的自定义目标类型示例。
详细了解 Tasks
详细了解如何配置 Cloud Deploy 目标