用于开发和交付容器化应用的 CI/CD 流水线

Last reviewed 2022-11-18 UTC

本文档描述了一组集成的 Google Cloud 工具,用于设置开发、持续集成 (CI) 和持续交付 (CD) 所用的系统,您可以使用该系统开发应用并将其部署到 Google Kubernetes Engine (GKE)。本参考架构文档适用于软件开发者和运维者。本文假定您熟悉如何在 Google Cloud 上运行 gcloud 命令以及如何将应用容器部署到 GKE。

架构

下图展示了此架构中使用的资源:

使用 Cloud Code、Cloud Build、Artifact Registry、Cloud Deploy 和 GKE 开发和部署系统

此架构包括以下组件:

  1. Cloud Code,作为开发工作区。作为此工作区的一部分,您可以看到在 minikube 上运行的开发集群中的更改。您可以在 Cloud Shell 中运行 Cloud Code 和 minikube 集群。Cloud Shell 是一个可从浏览器访问的在线开发环境。它包含计算资源、内存、集成开发环境 (IDE),还安装了 Cloud Code。
  2. Cloud Build,用于构建和测试应用,即流水线的“CI”部分

    流水线的这一部分包括以下操作:

    • Cloud Build 使用 Cloud Build 触发器监控源代码库的更改。
    • 当更改提交到主分支后,Cloud Build 触发器将执行以下操作:
      • 重新构建应用容器。
      • 将构建工件放在 Cloud Storage 存储桶中。
      • 将应用容器放入 Artifact Registry 中。
      • 在容器上运行测试。
      • 调用 Cloud Deploy 以将容器部署到预演环境。在本示例中,预演环境是 Google Kubernetes Engine 集群。
    • 如果构建和测试成功,则您可以使用 Cloud Deploy 将容器从预演环境提升到生产环境。
  3. Cloud Deploy,用于管理部署,即流水线的“CD”部分。在流水线的这一部分中,Cloud Deploy 执行以下操作:

    • 注册交付流水线目标。目标指的是预演集群和生产集群。
    • 创建 Cloud Storage 存储桶,并将 Skaffold 渲染源和渲染的清单存储在该存储桶中。
    • 为每次源代码更改生成新的版本
    • 将应用部署到生产环境。对于部署到生产环境,操作员(或其他指定人员)手动批准部署。在此架构中,生产环境是 Google Kubernetes Engine 集群。

在此架构中,配置通过 Skaffold 在开发、暂存和生产环境之间共享,这是一种有助于 Kubernetes 原生应用持续开发的命令行工具。

Google Cloud 将应用的源代码存储在 GitHub 中。

此架构将 Google Cloud 产品用于系统的大多数组件,而 Skaffold 则允许集成系统。由于 Skaffold 是开源的,因此您可以根据这些原则,结合使用 Google Cloud、内部组件和第三方组件来创建类似的系统。此解决方案的模块化意味着您可以在开发和部署流水线中逐步采用此解决方案。

使用场景

以下是此集成式系统的主要功能:

  • 更快地开发和部署

    开发循环非常高效,因为您可以在开发者工作区中验证更改。部署速度快,因为自动化 CI/CD 系统和跨环境的对等性让您在将更改部署到生产环境时可以检测更多问题。

  • 开发、预演和生产中更高的对等性也让您受益匪浅。

    此系统的组件使用一组通用的 Google Cloud 工具。

  • 在不同环境中重复使用配置

    此重复使用操作通过 Skaffold 完成,它提供了一种适用于不同环境的通用配置格式。它还允许开发者和运营商更新并使用相同的配置。

  • 在工作流中尽早应用治理

    该系统在生产环境以及 CI 系统和开发环境中针对治理应用验证测试。通过在开发环境中应用治理,您可以尽早发现并解决问题。

  • 使用专业工具来管理软件交付。

    持续交付是完全代管的,将 CD 流水线的各个阶段与渲染和部署的详细信息分开。

部署

如需部署此架构,请参阅使用 CI/CD 流水线开发和部署容器化应用

后续步骤