“本系列课程,我们来研究
ArgoCD
,我会从基础概念
讲起,带领大家搭建实验环境
,再到一个个特性的实践讲解
,让大家对ArgoCD
有个相对全面的认识。课程实验中,我们的模拟会尽量贴近生产环境,让大家学到知识的同时,更获得生产环境经验的积累。
视频直达
http://mpvideo.qpic.cn/0bc3zqacaaaaayacjxurezqvbtgdedgaaiaa.f10002.mp4?dis_k=bc82c252488ad374004642cb305e1100&dis_t=1637304681&vid=wxv_2135766899186630660&format_id=10002&support_redirect=0&mmversion=false
ArgoCD 介绍
基于 kubernetes
的声明式 Gitops
持续部署工具。
持续部署工具有很多,如 Jenkins
等等,我们为什么选择 ArgoCD
呢?
- 应用定义,配置和环境变量管理等等,都是声明式的,基于云原生的。
- 所有声明清单都存储在代码仓库中,受版本管理
- 应用发布和生命周期管理都是自动化的,可审计的。
最重要的,ArgoCD 操作简单,非常易用。
工作原理
ArgoCD
被设计并实现为 Kubernetes
控制器,它会持续监控 ArgoCD
应用状态。ArgoCD
中的应用会对应一个 Git 仓库,ArgoCD 控制器确保应用状态始终同步。此处的 Git 仓库,并不存放项目源码,它保存的是项目在 Kubernetes
中的运行状态,也就是配置清单。Git 仓库内容的组织形式,支持 Helm
, Kustomize
等;
当用户向 Git 仓库提交合并请求,合并被受理后,Git 仓库中应用状态的配置清单发生变化,此时 Git 仓库可以通过 WebHook
触发 ArgoCD
的应用同步。如果未配置 WebHook
,ArgoCD
会轮询检测 Git 仓库的变更,检测周期默认为 3 分钟。当然,用户也可以通过 UI 或 CLI
的方式手动触发应用同步。
ArgoCD
的 Hook
机制,会在应用状态同步前,同步中,同步后及同步失败后,触发响应的钩子方法,用来完成一些额外操作,可以实现更加复杂的应用控制。ArgoRollouts
的蓝绿发布,就非常好的利用了 hooks
机制。
ArgoCD
不仅可以将应用发布到它所在的 Kubernates 集群
,它也可以托管其他集群,实现多集群的应用部署。该功能由 ApplicationSet
实现。
单点登录:单点登录对于企业用户非常有必要,ArgoCD
支持 oauth2
, ldap
等等协议,默认也支持集成 gitlab
,github
, microsoft
等账号登录。
故障治愈: 当应用出现异常,健康检查会触发自动修复,保持应用状态同步。
命令行集成:UI 界面上提供的大部分功能,都在命令行有所支持。可以方便地编写脚本实现复杂的自动化操作。
必备知识
“ArgoCD 功能强大,简单易用,但想要真正掌握它,还需要一些基础知识。
熟悉 kubernetes 容器编排技术
我们的应用最终会运行在 kubernetes 中,所以需要诸位对 kubernetes 的基本概念有所了解。比如 deployment,replicas,service 这些概念。
了解 github 版本管理
课程中我们使用 Github 管理清单仓库,企业内部也可以使用 Gitlab 来管理。
熟悉 kustomize 资源编排方案
kustomize 用来组织 kubernetes 资源清单,这是 ArgoCD 官方推荐的编排方案,同时支持力度也是最好的。当然用户也可以选择使用 helm 来编排资源清单。
这些不但可以大大降低我们的沟通成本,而且能让大家对 ArgoCD 的理解,更上一层楼。
社区支持
实践过程中,如果遇到问题,不妨寻求社区的支持,如果你有一些新的想法,也可以到社区交流。
结束语
ArgoCD
的介绍我们就讲解到这里,下期视频,我们来一起手把手的教大家搭建实验环境。还是非常希望大家能够跟着一起动手,咱们保持实验环境的一致性,可以避免大家被一些莫名其妙的问题打断实践思路。