你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

采用 GitOps 的团队的内部循环开发人员体验

本文介绍已建立的内部循环如何提高开发人员工作效率,并帮助采用 GitOps 的团队从内部开发循环无缝转换到外部循环。

内部开发循环框架

生成和部署容器可能会降低内部开发体验并影响团队工作效率。 云原生开发团队将受益于可靠的内部开发循环框架。 内部开发循环框架有助于编写代码、生成和调试的迭代过程。

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

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

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

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

许多框架都支持这些功能。 Microsoft 为本地隧道调试提供 Bridge to Kubernetes。 提供许多其他类似的市场产品/服务,例如 DevSpace、Scaffold 和 Tilt。

备注

市场产品/服务 DevSpace 不得与 Microsoft 的产品/服务 Bridge to Kubernetes(前称 DevSpace)混淆。

内部循环到外部循环的转换

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

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

使用 CI/CD 管道:

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

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

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

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

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

内循环流程示意图。

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

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

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

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

假设 Alice 想要在本地或远程群集中更新、运行和调试应用程序。

  1. Alice 更新 .env 文件中表示的开发环境的本地配置。
  2. Alice 运行 devspace use context 并选择 Kubernetes 群集上下文。
  3. Alice 通过运行 devspace use namespace <namespace_name> 来选择要使用的命名空间。
  4. Alice 通过运行 devspace dev 对应用程序代码的更改进行迭代,将应用程序部署到目标群集并对其进行调试。
  5. 运行 devspace dev 会基于 Alice 的本地配置生成低级别清单并部署应用程序。 这些低级别清单在 devspace.yaml 中配置有 DevSpace 挂钩。
  6. Alice 无需在每次进行代码更改时都重新生成容器,因为 DevSpace 将启用热重载,使用文件同步在容器中复制她的最新更改。
  7. 运行 devspace dev 还将部署在 devspace.yaml 中配置的所有依赖项,如后端依赖项到前端依赖项。
  8. Alice 通过经 devspace.yaml 配置的转发访问应用程序,以测试她的更改。
  9. Alice 完成更改后,可以通过运行 devspace purge 来清除部署,并创建新的拉取请求,以将更改合并到应用程序存储库的开发分支。

备注

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

后续步骤