GitOps & ArgoCD
什么是GitOps
GitOps是一个操作框架,它采用用于应用程序开发的DevOps最佳实践,如版本控制、协作、遵从性和CI/CD工具,并将它们应用于基础设施自动化。虽然软件开发生命周期已经自动化,但基础设施仍然是一个需要专门团队的手工过程。随着对当今基础设施的需求,实现基础设施自动化变得越来越重要。现代基础设施需要具有弹性,以便能够有效地管理持续部署所需的云资源。
Gitops:在声明性基础结构之上的版本化CI/CD。停止编写脚本并开始发货。
对于GitOps,您可以使用Git–一个开源版本控制系统–作为声明性基础结构和应用程序代码的唯一真实来源。无论应该部署或配置哪个基础设施或应用程序,它的源代码都存储在Git中。
为了将配置的当前状态应用到git之外的真实世界对象(如Kubernetes集群、VM等),需要添加管道。使用管道,您可以在特定的git事件上执行任务(比如分支中的新提交、标记的创建或合并到现有的分支中)。结合其他特性,例如合并请求,git变成了您的中央操作操作中心。
GitOps主要组件
Gitops有3个主要组件:
- 基础设施即代码(IaC)GitOps使用Git存储库作为基础设施定义的“单一真实来源”。Git是一个开源版本控制系统,它跟踪代码管理更改,而Git存储库是项目中的一个“.Git”文件夹,它跟踪随着时间的推移对项目中的文件所做的所有更改。基础结构为代码(IaC)是将整个基础结构配置存储为代码的实践。(配置、策略等)
- 合并请求(MRS)GitOps使用合并请求作为所有基础结构更新的更改机制。(代码审查、协作和审批)
- CI/CD:GitOps使用具有持续集成和持续交付的Git工作流(CI/CD)自动更新基础设施。合并新代码时,CI/CD管道会触发环境中的更改。更改是自动实现的。
我们开始调整我们的工作流,集成新的工具,并构建管道来自动化任何必须自动化的东西。
然后Argo CD来到舞台上。
什么是ArgoCD
“Argo CD是Kubernetes的一个声明性的、GitOps连续交付工具.”
这里有一个观点,那就是把ArgoCD理解为CD工具。首先,了解如何在使用Jenkins或GitLab CI/CD等常用工具的大多数项目中实现连续交付工具,然后查看ArgoCD与它们的比较。
那么ArgoCD是另一个CD工具还是它有什么特别之处?
我们有一个微服务应用程序,我们正在Kubernetes集群中运行它。当应用程序代码中的一些变化如新特性或bug修复被添加到Jenkins上的CI管道中时,它将被自动触发并测试这些变化,构建下一个docker映像并将其推送到docker存储库。如何将这个新映像部署到Kubernetes?
我们用新的image标记更新Kubernetes的应用程序部署YAML文件,然后这个YAML文件应该应用于Kubernetes。在大多数项目中,这些步骤是CI管道的延续。因此,在将映像推送到存储库之后,Jenkins将更新应用程序的部署YAML文件,并使用kubectl工具将更新部署文件应用到Kubernetes。然而,这种方法有几个挑战。首先,您需要安装和设置工具,如kubectl或helm等,以访问Kubernetes集群并执行对这些构建自动化工具的更改。您还需要为这些工具配置对Kubernetes的访问。因为kubectl只是Kubernetes客户机,为了让它连接到Kubernetes,它需要提供一些凭据。因此,您需要在Jenkins中配置Kubernetes集群的凭据。这不是唯一的配置工作,这也是一个安全挑战。因为您需要将您的凭据提供给外部服务和工具。另一个挑战是,一旦Jenkins将应用程序部署到Kubernetes,或者它将任何更改应用到Kubernetes配置,它就无法进一步了解部署状态。因此,一旦执行了kubectl应用程序,Jenkins就不知道执行的状态。应用程序是否真的被创建了,它是否处于健康状态,或者它是否真的无法启动?
Argo CD是为这个特定的用例构建的,通过使用GitOps原则,使向Kubernetes集群的持续交付更加有效。
Argo CD是如何实现的?
- 在K8s集群中部署ArgoCD
- 配置ArgoCD以跟踪Git存储库
- ArgoCD监视任何更改并自动应用
它使开发人员能够在一个系统中管理基础结构配置和应用程序更新。
- GitOps agent-argocd负责从Git存储库中提取更新的代码,并将其直接部署到Kubernetes资源中。它在一个系统中管理基础结构配置和应用程序更新。
- 自定义资源定义(CRD)–ArgoCD在Kubernetes集群中自己的命名空间中运行。它提供了自己的CRDs,扩展了Kubernetes API,并使以声明方式定义所需的应用程序状态成为可能。根据Git repo或Helm repo中的说明,ArgoCD使用其CRDs在其专用命名空间内实现更改。
- CLI-ARGOCD提供了一个强大的CLI,可以让您非常简单地创建YAML资源定义。
- 用户界面–ArgoCD的独特之处在于它提供了一个方便的基于Web的UI,可以让您做同样的事情,定义一个应用程序并要求ArgoCD创建相关的YAML配置。它还允许您根据吊舱和容器可视化产生的Kubernetes配置。
ArgoCD工作原理
ArgoCD自动在指定的目标环境中部署所需的应用程序状态。在Git提交时,更新可以作为标签、分支或固定的清单的特定版本进行跟踪。
ArgoCD是一个Kubernetes控制器,负责持续监视所有正在运行的应用程序,并将它们的活动状态与Git存储库中指定的期望状态进行比较。它将活动状态偏离所需状态的已部署应用程序标识为不同步。ArgoCD报告偏差并提供可视化,以帮助开发人员手动或自动地将活动状态与所需状态同步。
ArgoCD可以自动将Git存储库中对所需状态的任何更改应用到目标环境中,确保应用程序保持同步。
在我的下一篇文章中,我将讨论ArgoCD的安装和使用。
- 点赞
- 收藏
- 关注作者
评论(0)