本文分享自华为云社区《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

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

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

从安装到配置,教你用Argo CD对接CCE集群完成测试、生产部署的更多相关文章

  1. 5.Zookeeper的两种安装和配置(Windows):单机模式与集群模式

    转自:https://blog.csdn.net/a906998248/article/details/50815031

  2. CentOS6安装各种大数据软件 第五章:Kafka集群的配置

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

  3. IntelliJ IDEA(Ultimate版本)的下载、安装和WordCount的初步使用(本地模式和集群模式)

    不多说,直接上干货! IntelliJ IDEA号称当前Java开发效率最高的IDE工具.IntelliJ IDEA有两个版本:社区版(Community)和旗舰版(Ultimate).社区版时免费的 ...

  4. Eclipse的下载、安装和WordCount的初步使用(本地模式和集群模式)

    包括:    Eclipse的下载 Eclipse的安装 Eclipse的使用 本地模式或集群模式 Scala IDE for Eclipse的下载.安装和WordCount的初步使用(本地模式和集群 ...

  5. IntelliJ IDEA的下载、安装和WordCount的初步使用(本地模式和集群模式)

    包括: IntelliJ IDEA的下载  IntelliJ IDEA的安装 IntelliJ IDEA中的scala插件安装 用SBT方式来创建工程 或 选择Scala方式来创建工程 本地模式或集群 ...

  6. IntelliJ IDEA(Community版本)的下载、安装和WordCount的初步使用(本地模式和集群模式)

    不多说,直接上干货! 对于初学者来说,建议你先玩玩这个免费的社区版,但是,一段时间,还是去玩专业版吧,这个很简单哈,学聪明点,去搞到途径激活!可以看我的博客. 包括: IntelliJ IDEA(Co ...

  7. 第三章:Hadoop简介及配置Hadoop-1.2.1,hbase-0.94.13集群

    前面给大家讲了怎么安装Hadoop,肯定会有人还是很迷茫,装完以后原来就是这个样子,但是怎么用,下面,先给大家讲下Hadoop简介:大致理解下就OK了 hadoop是一个平台,提供了庞大的存储和并行计 ...

  8. 手把手教你在CentOS上搭建Kubernetes集群

    作者:ChamPly 安装CentOS 1.安装net-tools [root@localhost ~]# yum install -y net-tools 2.关闭firewalld [root@l ...

  9. 基于 Jenkins + Kubernetes + Argo CD 的完整 DevOps 流程记录(1) - 环境部署

    一.环境准备 1.1 镜像仓库 整套 DevOps 流程使用 Harbor 作为内部镜像仓库,所有构建产物(镜像)都会推送到 Harbor,以备后续进行项目部署.Harbor 从 2.x 版本开始支持 ...

  10. elasticsearch7.5.0+kibana-7.5.0+cerebro-0.8.5集群生产环境安装配置及通过elasticsearch-migration工具做新老集群数据迁移

    一.服务器准备 目前有两台128G内存服务器,故准备每台启动两个es实例,再加一台虚机,共五个节点,保证down一台服务器两个节点数据不受影响. 二.系统初始化 参见我上一篇kafka系统初始化:ht ...

随机推荐

  1. fastposter v2.8.1 发布 电商海报生成器

    fastposter v2.8.1 发布 电商海报生成器 fastposter海报生成器,电商海报编辑器,电商海报设计器,fast快速生成海报 海报制作 海报开发.二维码海报,图片海报,分享海报,二维 ...

  2. 基于FPGA的贪吃蛇游戏 之代码解析

    基于FPGA的贪吃蛇游戏 之代码解析 1. 代码结构 代码结构包含7格.v文件. 下面依次解析. 2. 代码解析 (1) seg_display.v 数码管的译码模块是最熟悉,最简单的模块了.这里是共 ...

  3. NumPy 数组复制与视图详解

    NumPy 数组的复制与视图 NumPy 数组的复制和视图是两种不同的方式来创建新数组,它们之间存在着重要的区别. 复制 复制 会创建一个包含原始数组相同元素的新数组,但这两个数组拥有独立的内存空间. ...

  4. 80x86汇编—指令系统

    文章目录 MOV 非法传送 XCHG XLAT 堆栈指令 push 和 pop 标志寄存器指令 重点理解CF与OF与SF实际应用中的关系 运算指令 控制转移类指令(重点) 条件转移指令 顺序是按照我们 ...

  5. 基于Python实现MapReduce

    一.什么是MapReduce 首先,将这个单词分解为Map.Reduce. Map阶段:在这个阶段,输入数据集被分割成小块,并由多个Map任务处理.每个Map任务将输入数据映射为一系列(key, va ...

  6. Semantic Kernel入门系列:利用Handlebars创建Prompts functions

    引言 本章我们将学习通过Handlebars Prompts Template来创建Prompts functions. 什么是Handlebars? Handlebars是一个流行的 JavaScr ...

  7. Java应用的优雅停机

    一. 优雅停机的概念 优雅停机一直是一个非常严谨的话题,但由于其仅仅存在于重启.下线这样的部署阶段,导致很多人忽视了它的重要性,但没有它,你永远不能得到一个完整的应用生命周期,永远会对系统的健壮性持怀 ...

  8. 牛逼!50.3K Star!一个自动将屏幕截图转换为代码的开源工具

    1.背景 在当今快节奏的软件开发环境中,设计师与开发者之间的协同工作显得尤为重要.然而,理解并准确实现设计稿的意图常常需要耗费大量的时间和沟通成本.为此,开源社区中出现了一个引人注目的项目--scre ...

  9. C#.Net筑基-深入解密小数内部存储的秘密

    为什么0.1 + 0.2 不等于 0.3?为什么16777216f 等于 16777217f?为什么金钱计算都推荐用decimal?本文主要学习了解一下数字背后不为人知的存储秘密. 01.数值类型 C ...

  10. idea mapper xml 文件报红

    在使用 idea 打开 mapper 文件,出现一下报红错误: 可以看到数据表和字段都是红色的. 解决方案 打开设置,window版本是打开Settings: 找到 Languages & F ...