将 Skaffold 与 Cloud Deploy 搭配使用

本文介绍 Skaffold,Google Cloud Deploy 使用它的方式和原因,以及您需要完成哪些工作才能使其正常运行。

Cloud Deploy 使用 Skaffold 执行渲染和部署操作。您还可以将其用于本地开发、构建、测试和高级部署功能。不过,Cloud Deploy 仅需要 Skaffold 配置,其用于标识要渲染和应用的清单。

什么是 Skaffold?

Skaffold 是一种命令行工具,可支持 Kubernetes 原生应用的持续开发。您可以使用 Skaffold 配置本地开发工作区,以便与 Cloud Deploy 持续交付流水线搭配使用。

Skaffold 包括以下功能:

  • 它让您能够独立控制 CI/CD 流水线活动(构建、渲染、测试部署等)。

  • 它作为本地开发工具非常有用。

  • 借助 Skaffold 配置文件,您可以在同一个配置文件中通过不同的构建、测试和部署配置区分不同的环境。

Cloud Deploy 为何使用 Skaffold?

Google Cloud Deploy 使用 Skaffold 将渲染工具与交付流水线分开。您的交付流水线仅定义了从一个目标到另一个目标的进展,而您的 Skaffold 配置则定义了渲染哪些清单以及渲染方式。这使得清单渲染变得灵活,而不会影响您定义交付流水线的方式。

与 Cloud Deploy 搭配使用时,Skaffold 具有以下优势:

  • 轻松上手

    从本地开发循环开始。您可以与团队共享 skaffold.yaml 文件,从而为新的团队成员提供一致性。

  • 在各个部署目标之间一致控制渲染

    您可以将 Skaffold 配置文件用于不同目标的不同渲染和部署。

  • 选择渲染工具,而不会影响交付流水线的定义方式

    使用 Skaffold 可让 Cloud Deploy 将交付流水线定义与渲染详情分离。这种分离可让您在不中断交付流水线的情况下进行清单实验。

  • 连贯的渲染过程

    渲染来源以及容器用于生成已渲染清单。

  • 部署健康检查

    Skaffold 会执行这些检查,而 Cloud Deploy 则使用它们。

Cloud Deploy 如何使用 Skaffold?

  • 创建版本时,会将渲染来源和对容器映像的引用会传递到 Cloud Deploy。

    在创建版本时,Cloud Deploy 会调用 Cloud Build,而 Cloud Build 又会调用 skaffold diagnoseskaffold render 以使用该渲染来源和这些映像来渲染一个或多个清单。

  • 您可以使用 Skaffold 配置文件来区分将应用于不同目标的清单。

  • Cloud Deploy 支持静态 Skaffold 模块

  • 部署时,Cloud Deploy 会调用 skaffold apply,以将一个或多个已渲染清单应用到目标集群。

  • 除非您使用自定义目标,否则 Cloud Deploy 不支持使用其他部署程序部署应用。不过,您可以使用 HelmKustomize 等工具作为渲染程序。如需详细了解 Cloud Deploy 如何在不使用特定部署程序(例如 Helm)的情况下进行部署,请参阅服务架构

让 Skaffold 为您所用

  1. 根据您的流水线需求配置 Skaffold。

    1. 确定您的交付流水线的需求。

      您将有多少个目标?每个目标的渲染和部署是否相同。如果进展中的每个目标的配置都相同,则无需使用 Skaffold 配置文件。您只需要一个 skaffold.yaml 文件,用于描述要渲染的清单。

    2. 如果适用,为每个目标创建 Skaffold 配置文件

      skaffold.yaml 文件中定义此配置文件,并在您的交付流水线定义进展序列绑定它。

      如需详细了解 Skaffold 配置文件,请参阅 Skaffold 文档。此外,在 Cloud Deploy 中管理清单文档还包含配置文件配置示例。

    3. 设置 Skaffold 日志记录详细程度级别

      默认情况下,Skaffold 日志记录级别设置为 warn。您可以通过设置 verbose: true,在目标的执行环境配置中将其更改为 debug

  2. 将 Cloud Deploy 连接到您的持续集成系统。

    在 CI 过程结束时,传递 skaffold.yaml、渲染来源以及要填充到已渲染清单中的容器映像。

  3. 可选:使用 Skaffold 设置本地开发循环。

    在 Cloud Deploy 中使用 Skaffold 进行开发是可选的。为了使 Cloud Deploy 正常运行,唯一需要的是 skaffold.yaml 文件,该文件用于标识要渲染的清单。

后续步骤

  • 访问 Skaffold 网站,了解其工作原理以及用途。

  • 了解 Cloud Deploy 如何选择要使用的 Skaffold 版本、更改 Skaffold 版本的时间以及确定当前使用的版本。

  • 了解如何将 Skaffold 配置文件与 Helm、Kustomize 和 kpt 等先进的清单管理工具搭配使用。

  • 试用 Skaffold 配置文件演示