从安装到配置,教你用 Argo CD 对接 CCE 集群完成测试、生产部署

本文分享自华为云社区《Argo CD对接CCE完成不同测试、生产环境业务部署》,作者: 可以交个朋友。
一 背景说明
Argo CD 是用于 Kubernetes 的声明性 GitOps 持续交付工具,遵循 GitOps 模式,该模式使用 Git 仓库作为定义所需应用程序状态的真实来源。
Argo CD 可在指定的目标环境中自动部署所需的应用程序状态,应用程序部署可以在 Git 提交时跟踪对分支,标签的更新,或固定到清单的特定版本。
本文档使用两个 CCE 集群(cce-test-cluster、cce-prod-cluster)模拟测试及生产环境,使用 gitlab 仓库作为应用部署 yaml 文件存储仓库,通过 Argo CD 对接不同 CCE 集群完成测试、生产环境业务部署。
二 Argo CD 安装配置
本章节主要指导完成 argo cd 的基本部署,相关关联配置后续章节说明。
2.1 ArgoCD 部署
Argo CD 部署可以参考https://github.com/argoproj/argo-cd/releases/tag/v2.9.3,当前新版本为 2.9.3,这里采用 Non-HA 的方式进行部署演示。
kubectl create namespace argocd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/v2.9.3/manifests/install.yaml
Argo CD 安装完成后如下所示:


修改 argocd-server 应用的 serivce 类型为 nodeport,通过节点 IP+端口访问 Argo CD UI 界面。
2.2 Argo CD 客户端工具使用
Argo CD 提供命令行工具,可以通过命令行客户端添加集群,修改登录密码等操作,安装命令如下:
查看版本信息:

登录 argo,地址为 argo 地址,用户名为 admin,密码获取如下:
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

Argo CD web 界面是通过 https 登录的,通过 argocd 客户端工具登录和修改初始密码。
argocd login 192.168.1.137:31000 --username admin --password VQME4b7HSdl8REAu
通过以下命令修改 admin 用户的密码:
argocd account update-password \ --current-password VQME4b7HSdl8REAu \ --new-password Aa123456

2.3 Argo CD 添加多集群
多集群管理是通过 argo 对接不同的 k8s 集群,然后实现对各个集群上服务的部署和管理。获取到目标集群的 config 配置信息,根据 config 配置信息,获取到目标集群的 name 信息

Argo CD 部署在 cce-test-prod 集群上,可以使用以下命令查看 argocd 管理的集群
argocd cluster list

可以看到有一个默认的,就是部署 argocd 所在的集群。这里为了容易区分,重新添加如下集群并设置名称
argocd cluster add internal --kubeconfig /root/.kube/config --name cce-test-cluster

将另一个 CCE 集群也添加进来,这样就完成了 argocd 连接多集群的配置。

三 ArgoCD 关联置顶 yaml 仓库完成不同环境业务部署
3.1 Argo CD 登录及配置 git 仓库
通过用户名 admin,密码 Aa123456 登录 argo CD 界面


查看 Argo CD 连接的集群信息:

在 Settings 中添加 git 仓库信息:

这里通过 https 方式连接 git 仓库

配置完成后需要确保 git 仓库状态是正常连接的

gitlab 仓库目录结构如下,通过文件夹区分不同环境:

3.2 业务发布

在 Applications 页面创建 APP(应用),根据页面进行填写填写或者选择,这里先部署业务到 cce-test-cluster 集群。
Application Name
: 自定义的应用名。
Project
: 使用默认创建好的 default 项目。
SYNC POLICY
: 同步方式,可以选择自动或者手动,这里我们选择手动同步。
Repository URL
: 项目的 Git 地址。
Revision
: 分支名。
Path
: yaml 资源文件所在的相对路径。

创建应用后应用状态为 OutOfSync(当已部署应用程序的运行状态偏离目标状态时将被 argoCD 视为 OutOfSync)。

点击 sync 进行同步

部署成功后应用状态为 Healthy

查看 cce-test-cluster 集群应用部署情况:

用类似的配置方法部署应用到 cce-prod-cluster 集群:

查看 cce-prod-cluster 集群应用部署情况:

3.3 跨集群部署业务
ApplicationSet 控制器是一个 Kubernetes 控制器,它增加了对 ApplicationSet CustomResourceDefinition (CRD)的支持。这个控制器/CRD 可以实现跨大量集群和单节点管理 Argo CD 应用程序的自动化和更大的灵活性。从 Argo CD v2.3 开始,Argo CD 集成了 ApplicationSet 控制器。
ApplicationSet 控制器提供:通过 Argo CD 使用单个 Kubernetes 清单来针对多个 Kubernetes 集群的能力;通过 Argo CD 使用单个 Kubernetes 清单从一个或多个 Git 存储库部署多个应用程序的能力。
通过 UI 界面部署应用时只能选择单个集群,无法进行多集群业务部署。
这里演示部署 nginx 应用到两个 CCE 集群,yaml 文件如下:
该 crd 实现的结果就是从同一个 git 仓库中获取配置清单并部署到cce-test-cluster
、cce-prod-cluster
这两个集群,path 和 server 中采用变量方式,分别获取 list 中对应的值。
部署应用:
argocd appset create app.yaml
查看应用状态
argocd app list


然后就可以对这两个应用进行同步操作,同步完成后如下:

版权声明: 本文为 InfoQ 作者【华为云开发者联盟】的原创文章。
原文链接:【http://xie.infoq.cn/article/c8e459d80cac2fe5b300b2287】。文章转载请联系作者。
评论