“本系列课程,我们来研究
”ArgoCD
,我会从基础概念
讲起,带领大家搭建实验环境
,再到一个个特性的实践讲解
,让大家对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 的基本概念有所了解。比如 deployment,replicas,service 这些概念。
课程中我们使用 Github 管理清单仓库,企业内部也可以使用 Gitlab 来管理。
kustomize 用来组织 kubernetes 资源清单,这是 ArgoCD 官方推荐的编排方案,同时支持力度也是最好的。当然用户也可以选择使用 helm 来编排资源清单。
这些不但可以大大降低我们的沟通成本,而且能让大家对 ArgoCD 的理解,更上一层楼。
实践过程中,如果遇到问题,不妨寻求社区的支持,如果你有一些新的想法,也可以到社区交流。大家可以到 Jenkins 中文社区
论坛发帖,也可以关注我的个人微信公众号:技术你大飞哥
。
ArgoCD
的介绍我们就讲解到这里,下期视频,我们来一起手把手的教大家搭建实验环境。还是非常希望大家能够跟着一起动手,咱们保持实验环境的一致性,可以避免大家被一些莫名其妙的问题打断实践思路。