写点什么

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

  • 2024-07-05
    广东
  • 本文字数:2271 字

    阅读完需:约 7 分钟

从安装到配置,教你用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 提供命令行工具,可以通过命令行客户端添加集群,修改登录密码等操作,安装命令如下:


wget https://github.com/argoproj/argo-cd/releases/download/v2.9.3/argocd-linux-amd64 cp argocd-linux-amd64 /usr/local/bin/argocd  chmod +x /usr/local/bin/argocd
复制代码


查看版本信息:



登录 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 文件如下:


apiVersion: argoproj.io/v1alpha1 kind: ApplicationSet metadata:   name: my-test spec:   generators:   - list:       elements:       - cluster: cce-prod         url: https://192.168.1.112:5443       - cluster: cce-test         url: https://192.168.1.132:5443     template:     metadata:       name: '{{cluster}}'     spec:       project: default       source:         repoURL: http://192.168.1.218:32182/devops/argocd.git         targetRevision: main         path: '{{cluster}}'       destination:         server: '{{url}}'                 namespace: default

复制代码


该 crd 实现的结果就是从同一个 git 仓库中获取配置清单并部署到cce-test-clustercce-prod-cluster这两个集群,path 和 server 中采用变量方式,分别获取 list 中对应的值。


部署应用:


argocd appset create app.yaml


查看应用状态


argocd app list




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



点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 4
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
从安装到配置,教你用Argo CD对接CCE集群完成测试、生产部署_云原生_华为云开发者联盟_InfoQ写作社区