在 Google Cloud Deploy 中管理清单

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

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

Google 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/v2beta15
kind: Config
metadata:
 name: sample-app
deploy:
 kubectl:
   manifests:
   - k8s-manifests/deployment.yaml
   - k8s-manifests/rbac.yaml
   - k8s-manifests/redis.yaml
   - k8s-manifests/service.yaml

渲染原始清单

原始清单是由 Helm 或 Kustomize 等工具管理的清单,因此在融合并部署到集群之前不需要任何预处理。

默认情况下,Google Cloud Deploy 使用 skaffold render 渲染 Kubernetes 清单,将未标记的映像名称替换为您要部署的容器映像的标记映像名称。然后,当您提升版本时,Google Cloud Deploy 使用 skaffold apply 应用清单并将映像部署到 Google Kubernetes Engine 集群。

基本配置中的 deploy 节如下所示:

deploy:
  kubectl:
    manifests:
      - PATH_TO_MANIFEST

如需详细了解可在此处传递的值,请参阅 Skaffold 文档

使用 Helm 进行渲染

您可以使用 Google Cloud Deploy 来渲染 Helm 图表。为此,请在 Skaffold 配置文件的 deploy 节中添加 Helm 图表详细信息。

每个此类定义如下所示:

apiVersion: skaffold/v2beta16
kind: Config
deploy:
 helm:
   releases:
     - name: RELEASE_NAME
       chartPath: PATH_TO_HELM_CHART
       artifactOverrides:
         image: IMAGE_NAME

其中:

RELEASE_NAME 是此版本的 Helm 图表实例的名称。

PATH_TO_HELM_CHART 是已打包的 Helm 图表或已解压缩的 Helm 图表目录的本地路径。

IMAGE_NAME 是您要部署的容器映像的名称。

您的 Helm 图表必须具有值 image 参数,用于定义要在图表中部署的映像。

您可以使用其他 Helm 配置选项,如 Skaffold 文档中所述。

使用 Kustomize 进行渲染

您可以将 Kustomize 与 Google Cloud Deploy 搭配使用。为此,请从 skaffold.yaml 配置文件配置的 deploy 节中指向 Kustomization 文件。

skaffold.yaml 中的每个相应 profile 下,为您要对其使用 Kustomize 的每个目标添加单独的 Kustomize 配置。

每个此类定义如下所示:

apiVersion: skaffold/v2beta16
kind: Config
metadata:
 name: getting-started-kustomize
deploy:
 kustomize:
   paths:
     - PATH_TO_KUSTOMIZE

其中:

PATH_TO_KUSTOMIZE 指向您的 Kustomization 文件。默认值为 ["."]

您可以使用其他 Kustomize 配置选项,如 Skaffold 文档中所述

为每个目标配置不同的清单

通常,每个目标都需要略有不同的配置。例如,您的生产部署中的副本可能多于预演部署中的副本。

您可为每个目标提供不同的清单,方法是以不同 Skaffold 配置文件的形式提供每个变体。

包含原始清单的配置文件

使用原始清单时,您可以将 Google Cloud Deploy 指向其他文件,具体取决于目标。您可以按如下方式进行配置:

apiVersion: skaffold/v2beta16
kind: Config
metadata:
 name: getting-started
profiles:
 - name: prod
   deploy:
     kubectl:
       manifests:
         - prod.yaml
 - name: staging
   deploy:
     kubectl:
       manifests:
         - staging.yaml

使用 Kustomize 的配置文件

以下是使用 Kustomize 将不同的配置文件用于预演和生产的示例 skaffold.yaml,其中每个配置文件指向不同的 Kustomization:

apiVersion: skaffold/v2beta16
kind: Config
profiles:
 - name: prod
   deploy:
     kustomize:
       paths:
         - environments/prod
 - name: staging
   deploy:
     kustomize:
       paths:
         - environments/staging

在交付流水线中引用的配置文件

skaffold.yaml 中定义的这些配置文件在交付流水线配置中针对每个目标引用:

serialPipeline:
 stages:
 - targetId: staging-target
   profiles:
   - staging
 - targetId: prod-target
   profiles:
   - prod

后续步骤