关于云原生:专注开发者体验-GitOps-实现-Kuberentes-持续部署

37次阅读

共计 2515 个字符,预计需要花费 7 分钟才能阅读完成。

大量的企业曾经将 Kuberentes 用于其生产环境, 但面对他们正在运行的多套不同阶段的 Kuberentes 集群,依然困惑于在保障业务团队敏捷性的同时,如何实现继续部署,高安全性、权限拆散以及可审计。咱们认为 GitOps 是目前比拟现实的一种办法来实现基于 Kuberentes 集群的继续部署,且同时满足安全性、权限拆散等企业级需要。

在这篇文章中,咱们将分享 GitOps 的核心思想和工作流程。后续的系列文章中,咱们会一起实际如何在 Amazon EKS 环境里构建 GitOps 格调的 CI/CD 流水线,欢送继续关注!

亚马逊云科技开发者社区为开发者们提供寰球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、流动与比赛等。帮忙中国开发者对接世界最前沿技术,观点,和我的项目,并将中国优良开发者或技术举荐给寰球云社区。如果你还没有关注 / 珍藏,看到这里请肯定不要匆匆划过,点这里让它成为你的技术宝库!

什么是 GitOps

GitOps 是一种为云原生利用程序实施继续部署的办法。它通过应用开发者曾经相熟的工具,包含 Git 和继续部署工具,专一于在操作基础架构时以开发者为核心的体验。

GitOps 的核心思想包含:

  • 领有一个 Git 存储库,该存储库始终蕴含对生产环境中以后所需基础设施的申明性形容,以及一个使生产环境与存储库中形容的状态相匹配的自动化过程;
  • 冀望的状态以强制不变性和版本控制的形式存储,并保留残缺的版本历史;
  • 如果开发者想部署一个新的应用程序或更新一个现有的应用程序,开发者只须要更新存储库,软件代理主动从源中提取所需的状态申明,自动化过程会解决其余所有事件;
  • 软件代理继续察看理论零碎状态并尝试利用所需状态;

为什么抉择 GitOps

同传统的继续部署零碎相比,GitOps 有以下特点:

咱们为什么认为 GitOps 是实现基于 Kuberentes 集群的继续部署,且同时满足安全性、权限拆散等企业级需要的现实形式呢?其中一个起因是 GitOps 在实践中能够抉择采纳推 (push) 或是拉 (pull) 的部署格调。

采纳拉 (Pull) 部署格调会有如下益处:

  • 更加平安。因为 GitOps 代理运行在 Kubernetes 集群中,因而仅须要最小的权限用于部署。简化网络配置不须要该集群同 CD 程序建设网络连接,尤其在治理多集群时尤为简洁。
  • 一致性。治理多集群时,确保了每个集群的治理形式都是一样的。
  • 隔离性。每个集群的部署不依赖于集中的流水线 CD 程序。
  • 可伸缩性。该形式能够容易的扩大到同时治理成千盈百的集群。

GitOps 部署形式咱们倡议首选 拉 (Pull) 部署格调。因为采纳拉 (pull) 的部署格调从安全性、可伸缩性、隔离性、一致性都更优。

抉择 GitOps 的另一个起因,是能够通过 Kuberentes 上 GitOps 具体实际来理解细节。

GitOps 办法下,Git 成为零碎所需状态的惟一事实起源,反对可反复的自动化部署、集群治理和监控。开发者通过复用企业中曾经十分成熟的 Git 工作流程来实现编译、测试、扫描等继续集成步骤。当零碎最终状态的申明代码进入 Git 仓库主线分支后,依靠 GitOps 工具链来实现验证部署,到观测告警,到操作修复达到零碎最终状态的闭环。流程参见下图:

基于 Amazon EKS 的 GitOps 最佳实际

本次最佳实际的整体 CI/CD 流水线如下图所示:

代码仓库 CodeCommit 蕴含三个代码库,第一个为 Flux CD 的配置仓库 flux-repo,用来定义 Flux 相干资源。第二个是保留微服务利用配置和部署文件的 microservices-repo,另一个是业务服务的源码仓库 app-repo,本文中会应用一个前端我的项目作为案例。CI/CD 流水线中应用 CodePipeline 继续集成,把构建的 docker 镜像存储在 Amazon ECR 中,继续交付引擎 Flux 以 Pod 形式部署在 Amazon EKS 环境中。

根本的工作流程如下:

  • 开发者在开发环境中编写代码,并将最终实现的利用代码推送至 app-repo;
  • 利用代码库 app-repo 中的代码变更触发 CodePepeline;
  • CodePepeline 对代码进行编译打包并生成容器镜像,而后将其推送至 Amazon ECR 容器镜像仓库;
  • 部署在 EKS 环境中的 CD 引擎 Flux 周期性扫描 ECR 容器镜像仓库并从中拉取利用的容器镜像元数据
  • 当发现有新版本的容器镜像产生时会主动将新版本的容器镜像地址通过 git commit/push 同步至保留在 microservices-repo 中的利用部署文件;
  • Flux 周期性拉取 flux-repo 代码库中的利用配置和部署文件,因为 flux-repo 代码库援用了微服务的仓库 microservices-repo,flux 比拟集群以后的利用负载运行状态是否和 microservices-repo 中的文件所形容的冀望统一,当发现二者有差别时,Flux 会主动将差别同步至 EKS 集群,确保工作负载始终依照冀望状态运行。

在后续文章中,咱们将别离介绍最佳实际中的四个模块,和开发者一起实现 CI/CD 流水线架构的构建,包含:

  1. 通过 IaC 部署云基础架构;
  2. 在 Amazon EKS 集群上部署 Flux CD;
  3. 利用 Flux CD 部署 GitOps 工作流;
  4. 利用 GitOps 工作流实现基于镜像的主动部署;

请继续关注 Build On Cloud 微信公众号,理解更多面向开发者的技术分享和云开发动静!

往期举荐

Generative AI 新世界

亚马逊的开源文化

开发者生态

文章作者

郑予彬

亚马逊云科技资深开发者布道师

20 年 ICT 行业和数字化转型实际积攒,专一于亚马逊云科技云原生、云平安技术畛域。18 年架构师教训,致力于为金融、教育、制作以及世界 500 强企业用户提供数据中心建设以及软件定义数据核心等解决方案的征询及技术落地。

阙铭飞

亚马逊云科技大中华区解决方案研发核心解决方案架构师

任职亚马逊云科技大中华区解决方案研发核心 - 解决方案架构师,负责解决方案研发工作。到目前为止有 10 年的工作教训,次要波及大数据、DevOps、容器化等相干工作。

文章起源:https://dev.amazoncloud.cn/column/article/64256901add53077e88…

正文完
 0