在 Cloud Deploy 中管理清单

本页面介绍了如何配置 Cloud Deploy 在交付流水线中渲染每个目标的配置。

Cloud Deploy 使用 Skaffold 呈现您的 Kubernetes 清单。该服务支持渲染原始清单和更高级的清单管理工具,例如 HelmKustomizekpt

渲染过程包含两个阶段:

  1. 清单管理工具会生成清单。

  2. Skaffold 会将清单中的映像引用替换为您要在版本中部署的映像。

本页面包含使用 Helm 和 Kustomize 的配置示例。

使用 Skaffold 生成配置

如果您还没有 Skaffold 配置文件 (skaffold.yaml),则可以使用 Skaffold 根据代码库中的内容为您生成一个。

  1. 使用 Google Cloud CLI 安装 Skaffold:

    gcloud components install skaffold

  2. 在包含清单的代码库中运行 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

后续步骤