0%

Argo CD入门篇

Argo CD是啥?

What Is Argo CD? Argo CD is a declarative, GitOps continuous delivery tool for Kubernetes.
Why Argo CD? Application definitions, configurations, and environments should be declarative and version controlled. Application deployment and lifecycle management should be automated, auditable, and easy to understand.

Argo CD是什么?Argo CD是一个声明式的基于GitOps的用于K8S的持续交付工具。
为什么要使用Argo CD?应用定义、配置和环境都应该被声明和版本控制。应用部署和生命周期管理都应该是自动的、可审计的、易理解的。

Argo CD 遵循 GitOps 模式,使用 Git 仓库作为定义所需应用程序状态的真实来源,Argo CD 支持多种 Kubernetes 清单:

  • kustomize
  • helm charts
  • ksonnet applications
  • jsonnet files
  • Plain directory of YAML/json manifests
  • Any custom config management tool configured as a config management plugin
    Argo CD 可在指定的目标环境中自动部署所需的应用程序状态,应用程序部署可以在 Git 提交时跟踪对分支、标签的更新,或固定到清单的指定版本。

参考文档:

GitOps是啥?

上面提到了GitOps,这是个啥?
在聊GitOps之前,先聊一下DevOps

DevOps(Development和Operations的组合词)是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。通过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。

DevOps简单来说,就是敏捷思维(版本更新又快又好)!为了实现敏捷,需要标准和规范,需要开发、测试、运维合作,需要自动化。

而GitOps,正是基于敏捷思维而诞生的一种持续交付方式,能够用声明的方式优雅地进行CICD。
1、源码存储于Git源码仓库,开发人员推送提交包含新功能的代码到代码仓库的对应分支中;代码审核通过后将被合并至对应分支。
2、合并请求通过后会触发构建并进行测试,构建好的镜像将被推送至镜像仓库中。
3、GitOps检测到有新的镜像,会提取最新的镜像标记,然后同步到Git配置仓库(Config)的清单中。
4、GitOps检测到集群状态过期,会从配置仓库中拉取更新后的清单,并将包含新功能的镜像通过部署到集群里。

对于不同环境而言,可以在Config仓中创建多个子目录或者子分支管理不同环境对应的多个集群,从而实现多环境的GitOps。

更多内容参考浅谈GitOps

Argo CD架构

  • API Server是一个 gRPC/REST server,它开放了 Web UI、CLI 和 CI/CD 系统使用的 API。
  • Repository Server是一个内部服务,它维护应用清单的Git仓库的本地缓存,负责生成和返回 Kubernetes 清单。
  • Application Controller是一个 Kubernetes 控制器,它持续监控正在运行的应用程序并将当前的活动状态与所需的目标状态(如 repo 中指定的)进行比较,检测 OutOfSync 应用程序状态并可选择采取纠正措施。负责为生命周期事件(PreSync、Sync、PostSync)调用用户定义的钩子。

以上是官方给的argocd架构图和说明,详情参考Architectural Overview
这个架构图不太友好,没有明显体现出argocd监听git仓库。

下面再看一个比较友好的argocd架构图:

CI流水线触发更新Git仓库中的K8S应用清单,或者工程师直接修改Git仓库中的K8S应用清单,Argo CD都会自动拉取最新的配置并应用到K8S集群中。详情参考Argo CD 入门教程

Argo CD使用

1、准备git仓库
创建一个git仓库,包含k8s资源清单(一般是kustomization文件)。
使用这些资源清单可以在k8s中创建和变更deployment、service等资源对象(不使用argocd,直接使用kubectl也可以)。
Kustomize相关内容参考《kubectl命令——资源对象增删查改篇》中的 Kustomize 部分。

2、配置argocd应用
通过argocd的client或者UI界面,配置一个argocd应用。
应用会指定git仓库、路径,这样就知道使用哪些资源清单了。
应用还会指定k8s集群,这样就知道在哪个集群中创建和变更资源对象了。

3、资源创建/变更
配置完成,点击同步,argocd就会从git仓库获取最新的配置清单,apply到k8s集群。
如果配置了自动同步,那么默认3分钟自动同步一次,可以修改timeout.reconciliation字段修改同步间隔。

参考文档:

  • 本文作者: 好好学习的郝
  • 本文链接: https://www.voidking.com/dev-argocd-start/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!源站会及时更新知识点及修正错误,阅读体验也更好。欢迎分享,欢迎收藏~