从安装到配置,教你用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

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

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

相关推荐
橙-极纪元1 个月前
项目自动化部署,持续集成/持续交付(CI/CD)工具有那些?他们的优劣势分别是什么?共计15个工具进行对比分析。
gitlab·jenkins·自动化部署·持续集成·circleci·持续交付·阿里云云效
华为云开发者联盟5 个月前
最佳实践:解读GaussDB(DWS) 统计信息自动收集方案
大数据·华为云开发者联盟·gaussdb(dws)·gaussdb(dws)·实时查询·统计信息
华为云开发者联盟5 个月前
深度解读KubeEdge架构设计与边缘AI实践探索
ai·边缘计算·kubeedge·华为云开发者联盟·sedna
华为云开发者联盟5 个月前
仓颉编程语言技术指南:嵌套函数、Lambda 表达式、闭包
鸿蒙·编程语言·华为云开发者联盟·仓颉
华为云开发者联盟5 个月前
深度解读GaussDB(for MySQL)与MySQL的COUNT查询并行优化策略
mysql·华为云开发者联盟
华为云开发者联盟5 个月前
Kmesh v0.4发布!迈向大规模 Sidecarless 服务网格
容器·华为云开发者联盟
华为云开发者联盟5 个月前
解读GaussDB(for MySQL)灵活多维的二级分区表策略
mysql·华为云开发者联盟
华为云开发者联盟5 个月前
从基础到高级应用,详解用Python实现容器化和微服务架构
python·docker·微服务·容器·华为云开发者联盟
华为云开发者联盟5 个月前
基于MindSpore实现BERT对话情绪识别
昇腾·华为云开发者联盟
华为云开发者联盟5 个月前
解读MySQL 8.0数据字典缓存管理机制
mysql·缓存·数据字典·元数据·华为云开发者联盟