购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.3 GitOps实践

GitOps在云原生技术栈中使用得非常广泛,Git作为单一可信源,可以自动从Git仓库中获取最新的清单文件,并应用到目标环境中。下面以Kubernetes为例介绍GitOps的一些实践。

基于GitOps理念,当前比较活跃、用户采用较多的两个开源项目是Argo CD和Flux CD。这两个开源项目都可以把应用以及自身以声明式方式管理起来。

表4-1 Argo CD和Flux CD

img

4.3.1 Argo CD

Argo CD包括的组件有API Server、Repository Server、Application Controller。

API Server是一个gRPC/REST服务,并给Web UI、命令行和其他CI/CD系统提供API服务,其特性如下:

❖应用管理和状态报告。

❖应用操作(如同步、回滚、其他动作)。

❖代码仓库和集群凭据的管理。

❖验证和认证代理。

❖RABC认证。

❖Git Webhook事件的监听、转发。

Repository Server是一个内部服务,用于维护存储在Git仓库中的应用(Application)的清单文件(Manifest)。根据给定的输入,Repository Server会生成并返回Kubernetes的清单:

❖仓库(Repository)URL。

❖Revision(commit、tag、branch)。

❖应用路径。

❖模板设置,如parameters、ksonnet、environments、helm values.yaml。

所谓应用控制器,就是一个Kubernetes控制器,会持续地监听应用并对比仓库中清单文件所预期的状态。当它检测到OutOfSync状态的应用时,会根据情况采取对应的动作,还可以执行与生命流程(PreSync、Sync、PostSync)相关事件的任何用户定义的hook。

Argo CD的系统架构如图4-2所示。

img

图4-2 Argo CD的系统架构

Argo CD支持两种安装模式:多租户、基本功能。

多租户是最常见的Argo CD安装方式。当一个组织中的多个开发团队共用一个平台时,往往会采用这种方式。用户可以通过Web UI或者命令行来访问到API Server,命令行可以通过下面的命令行指定要访问的服务:

img

只安装基本功能时不会包括APIServer和UI组件,并且每个组件都是以轻量级(非高可用模式)的方式安装。此时,用户需要依赖Kubernetes来访问、管理Argo CD。使用命令行访问时,需要通过如下命令进行配置:

img

除此之外,Argo CD还支持用Kustomize和Helm的方式安装。

下面是customization文件内容:

img
img

1.清单文件格式

Argo CD支持的文件清单(manifest)格式包括Kustomize、Helm、Ksonnet、Jsonnet等。

除了上述已知的格式,Argo CD的插件机制还允许用户按照文档使用自定义工具,可以通过ConfigMap或者sidecar来配置一个插件。

2.私有仓库

Argo CD只需对Git仓库具有只读权限即可,因此,对于公开可访问的Git仓库,我们并不需要做特别设置。而对于私有Git仓库,Argo CD也提供了非常简单易用的方案。

Argo CD支持HTTPS和SSH格式的Git凭据,可以通过如下命令配置凭据:

img

如下命令可以为HTTPs的仓库添加TLS客户端证书:

img

或者,添加SSH凭据:

img

添加凭据后,Argo CD就可以通过Git仓库地址匹配的方式进行关联了。

更多有关Argo CD的详细内容请参考官方文档。

4.3.2 Flux CD

Flux CD的组件包括Source Controller、Kustomize Controller、Helm Controller、Notification Controller、Image automation Controller,如图4-3所示。

Flux提供了两种安装方式,分别是Bootstrap和开发模式。

如下命令可以将Flux安装并配置到Kubernetes集群中,对应的配置文件会自动提交到Git仓库中。

img

如果目标集群中已经包含Flux组件,该命令就会尝试升级Flux。这个命令具有幂等性,可以安全地执行任意多次。

img

图4-3 Flux CD

如果只是用于开发、测试,就可以使用如下命令快速安装:

img

然后,通过如下命令导入Git仓库并开始部署应用。 GOaIPp/naoVmW3BcEDa2ODCs2MmPlQbOcP1Rc8/sV06JDLkP2JI8yZ4pp7RVs5yi

img
点击中间区域
呼出菜单
上一章
目录
下一章
×