本页介绍了如何配置 Cloud Deploy,以便在交付流水线中呈现每个目标的配置。
Cloud Deploy 使用 Skaffold 渲染 Kubernetes 清单。该服务支持渲染原始清单和更高级的清单管理工具,例如 Helm、Kustomize 和 kpt。
渲染过程包含两个阶段:
清单管理工具会生成清单。
Skaffold 会将清单中的映像引用替换为您要在版本中部署的映像。
本页面包含使用 Helm 和 Kustomize 的配置示例。
使用 Skaffold 生成配置
如果您还没有 Skaffold 配置文件 (skaffold.yaml
),则可以使用 Skaffold 根据代码库中的内容为您生成一个。
使用 Google Cloud CLI 安装 Skaffold:
gcloud components install skaffold
在包含清单的代码库中运行
skaffold init
:skaffold init --skip-build
此命令会在代码库中创建一个 skaffold.yaml
文件。该文件引用该代码库中的清单。内容如下所示:
apiVersion: skaffold/v4beta7
kind: Config
metadata:
name: sample-app
manifests:
rawYaml:
- k8s-manifests/deployment.yaml
- k8s-manifests/rbac.yaml
- k8s-manifests/redis.yaml
- k8s-manifests/service.yaml
渲染原始清单
原始清单是由 Helm 或 Kustomize 等工具管理的清单,因此在融合并部署到集群之前不需要任何预处理。
默认情况下,Cloud Deploy 使用 skaffold render
来渲染 Kubernetes 清单,并将不带标记的映像名称替换为
为您要部署的容器映像添加标记的映像名称然后,当您提升版本时,Cloud Deploy 使用 skaffold apply
应用清单并将映像部署到 Google Kubernetes Engine 集群。
基本配置中的 manifests
节如下所示:
manifests:
rawYaml:
- PATH_TO_MANIFEST
如需详细了解可在此处传递的值,请参阅 Skaffold 文档。
使用 Helm 进行渲染
您可以使用 Cloud Deploy 渲染 Helm
图表。为此,请在 Skaffold 配置文件的 deploy
节中添加 Helm 图表详细信息。
每个此类定义如下所示:
apiVersion: skaffold/v4beta7
kind: Config
manifests:
helm:
releases:
- name: RELEASE_NAME
chartPath: PATH_TO_HELM_CHART
其中:
RELEASE_NAME 是此版本的 Helm 图表实例的名称。
PATH_TO_HELM_CHART 是已打包的 Helm 图表或已解压缩的 Helm 图表目录的本地路径。
您可以使用其他 Helm 配置选项,如 Skaffold 文档中所述。
使用 Kustomize 进行渲染
您可以将 Kustomize 与 Cloud Deploy 搭配使用。为此,请从 skaffold.yaml
配置文件配置的 deploy
节中指向 Kustomization 文件。
在 skaffold.yaml
中的每个相应 profile
下,为您要对其使用 Kustomize 的每个目标添加单独的 Kustomize 配置。
每个此类定义如下所示:
apiVersion: skaffold/v4beta7
kind: Config
manifests:
kustomize:
paths:
- PATH_TO_KUSTOMIZE
其中:
PATH_TO_KUSTOMIZE 指向您的 Kustomization 文件。默认值为 ["."]
。
您可以使用其他 Kustomize 配置选项,如 Skaffold 文档中所述
为每个目标配置不同的清单
通常,每个目标都需要略有不同的配置。例如,您的生产部署中的副本可能多于预演部署中的副本。
您可为每个目标提供不同的清单,方法是以不同 Skaffold 配置文件的形式提供每个变体。
包含原始清单的配置文件
使用原始清单时,您可以将 Cloud Deploy 指向其他文件,具体取决于目标。您可以按如下方式进行配置:
apiVersion: skaffold/v4beta7
kind: Config
profiles:
- name: prod
manifests:
rawYaml:
- prod.yaml
- name: staging
manifests:
rawYaml:
- staging.yaml
使用 Kustomize 的配置文件
以下是使用 Kustomize 将不同的配置文件用于预演和生产的示例 skaffold.yaml
,其中每个配置文件指向不同的 Kustomization:
apiVersion: skaffold/v4beta7
kind: Config
profiles:
- name: prod
manifests:
kustomize:
paths:
- environments/prod
- name: staging
manifests:
kustomize:
paths:
- environments/staging
在交付流水线中引用的配置文件
skaffold.yaml
中定义的这些配置文件在交付流水线配置中针对每个目标引用:
serialPipeline:
stages:
- targetId: staging-target
profiles:
- staging
- targetId: prod-target
profiles:
- prod
后续步骤
- 详细了解 Cloud Deploy 交付流水线配置。
- 试用 Cloud Deploy Skaffold 配置文件演示
- 详细了解 Kustomize。
- 详细了解 Helm。
- 详细了解 Kpt
- 考虑使用 Artifact Registry 来存储 Helm 图表或 Kustomizations 等工件。