采用 GitOps 的团队内部开发流程体验

本文介绍成熟的内部循环开发框架如何为采用已启用 Arc 的 Kubernetes 或 Azure 容器服务 (AKS) 群集的 GitOps 团队提高开发人员工作效率。

内部开发循环框架

使用容器的云原生开发团队可以从可靠的内部开发循环框架中受益。 内部开发循环框架有助于编写代码、生成和调试的迭代过程。

内部开发循环框架的功能包括:

  • 自动化重复步骤,例如生成代码并部署到目标群集。
  • 增强了使用远程群集和本地群集的能力,并支持混合设置的本地隧道调试。
  • 能够为团队协作效率配置个性化流程。
  • 处理微服务依赖项。
  • 热重载、端口转发、日志和终端访问。

根据服务的成熟度和复杂性,开发团队可以在群集设置选项之间进行选择,以加速内部开发循环:

  • 所有本地
  • 所有远程
  • 混合

许多框架都支持这些功能,市场上有各种产品可供选择,例如 DevSpace、Scaffold 和 Tilt。

内部循环到外部循环转换

评估并选择内部循环开发框架后,可以生成无缝内部循环到外部循环转换。

如使用 GitOps 示例方案的 CI/CD 工作流中所述,开发人员在应用程序存储库中处理应用程序代码。 此应用程序存储库还包含用于高级部署的 Helm 和/或 Kustomize 模板。

CI/CD 管道:

  • 从高级模板生成低级别清单,并添加特定于环境的值。
  • 创建一个拉取请求,该请求将低级别清单与保留特定环境所需状态的 GitOps 存储库合并。

可以使用开发人员本地的配置值在本地为内部开发循环生成类似的低级别清单。 应用程序开发人员可以循环访问代码更改,并使用低级别清单来部署和调试应用程序。 可以使用开发人员的本地配置将低级别清单的生成集成到内部循环工作流中。 大多数内部循环框架都允许通过借助自定义插件进行扩展或基于挂钩注入脚本调用来配置自定义流。

使用 DevSpace 框架生成的内部循环工作流示例

为了说明内部循环工作流,我们可以查看示例方案。 此示例使用 DevSpace 框架,但同一常规工作流可用于其他框架。

此图显示了内部循环的工作流。

关系图显示内部循环流。

此图显示了内部循环到外部循环转换的工作流。

显示内部循环到外部循环转换的关系图。

在此示例中,应用程序开发人员:

  • 创建 devspace.yaml 文件以配置内部循环。
  • 使用内部循环编写和测试应用程序代码,提高效率。
  • 使用外部循环部署到暂存环境或生产环境。

若要在本地或远程群集中更新、运行和调试应用程序,应用程序开发人员请执行以下步骤:

  1. 更新 .env 文件中表示的开发环境的本地配置。

  2. 运行 devspace use context 并选择 Kubernetes 群集上下文。

  3. 通过运行 devspace use namespace <namespace_name>来选择要使用的命名空间。

  4. 通过运行 devspace dev 对应用程序代码的更改进行迭代,将应用程序部署到目标群集并对其进行调试。

  5. 运行 devspace dev 以基于本地配置生成低级别清单,并部署应用程序。 这些低级别清单在 devspace.yaml 中使用 DevSpace 挂钩进行配置。

    • 由于 DevSpace 支持热重载,因此使用文件同步复制容器内的最新更改,因此无需为每个代码更改重新生成容器。
    • 运行 devspace dev 还会将 devspace.yaml 中配置的任何依赖项(例如后端依赖项)部署到前端。
  6. 通过 devspace.yaml 配置的转发来访问应用程序,以测试更改。

  7. 完成更改后,通过运行 devspace purge 来清除部署,并创建新的拉取请求,以将更改合并到应用程序存储库的开发分支。

注意

在我们的 GitHub 存储库中找到此工作流的示例代码。

后续步骤