基于k8s的Jenkins CI/CD平台部署实践(三):集成ArgoCD实现持续部署

news2025/7/19 16:52:57

基于k8s的Jenkins CI/CD平台部署实践(三):集成ArgoCD实现持续部署

文章目录

  • 基于k8s的Jenkins CI/CD平台部署实践(三):集成ArgoCD实现持续部署
  • 一、Argocd简介
  • 二、安装Helm
  • 三、Helm安装ArgoCD实战
    • 1. 添加ArgoCD官方仓库
    • 2. 创建argocd命名空间
    • 3. 安装ArgoCD
    • 4. 安装ArgoCD-cli
    • 5. 验证ArgoCD-Pod状态
  • 四、ArgoCD页面配置
    • 1. 查看外部访问端口
    • 2. 访问ui页面和配置
    • 3. 创建ArgoCD应用
  • 五、Jenkins集成ArgoCD
    • 1. 流水线设计
  • 总结


在前两篇文章中,我们已完成 Jenkins 在 Kubernetes 环境中的部署与流水线构建,实现了代码的持续集成与镜像构建。为了进一步提升部署自动化能力,本篇将引入 GitOps 工具 ArgoCD,并与 Jenkins 流水线集成,构建从代码提交到自动部署的完整 CI/CD 流程。通过 ArgoCD 实现基于 Git 仓库的声明式部署,我们不仅能够提升交付效率,还能确保环境一致性和部署可追溯性,为平台稳定性和可维护性提供有力支撑。

一、Argocd简介

ArgoCD 是一款基于 GitOps 模式的持续部署工具,专为 Kubernetes 场景设计。它通过监听 Git 仓库中的应用声明文件(如 Kubernetes YAML/Helm/Kustomize 等),实现集群中资源的自动同步与状态管理。与传统的手动或脚本式部署方式不同,ArgoCD 将“部署即代码”理念贯彻到底,使部署流程标准化、可追溯、易于回滚。其提供了丰富的 Web UI、命令行工具和 API 支持,方便开发团队对应用的部署状态进行可视化管理与操作。

📌 说明:本实践中 ArgoCD 是通过 Helm Chart 进行安装部署的。这种方式便于版本控制和集中化配置管理,更适合中大型团队的自动化部署场景。

在这里插入图片描述

二、安装Helm

curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
# 验证安装
helm version

在这里插入图片描述

三、Helm安装ArgoCD实战

1. 添加ArgoCD官方仓库

helm repo add argo https://argoproj.github.io/argo-helm
helm repo update

2. 创建argocd命名空间

kubectl create argocd

3. 安装ArgoCD

# 查看想要安装的版本
helm search repo argo/argo-cd --versions | head -n 20

# 下载并解压指定版本的 ArgoCD Helm Chart,便于查看或自定义配置后再安装
helm pull argo/argo-cd --version 7.8.24 --untar
vim argocd/values.yaml  #修改成你需要的配置

# 使用Helm 安装 ArgoCD
helm install argocd ./argo-cd -n argocd

在这里插入图片描述

4. 安装ArgoCD-cli

curl -sSL -o argocd-linux-amd64 https://github.com/argoproj/argo-cd/releases/latest/download/argocd-linux-amd64
mv argocd-linux-amd64 argocd
chmod 755 argocd
mv argocd /usr/bin/

5. 验证ArgoCD-Pod状态

kubectl get pod -n argocd

在这里插入图片描述

四、ArgoCD页面配置

1. 查看外部访问端口

kubectl get svc -n argocd

在这里插入图片描述

2. 访问ui页面和配置

访问地址:http://ip:30080
初始账号:admin
初始密码:kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d

# 提供git仓库访问凭证,这里不配置的话后续配置ui页面会报错
argocd login ip:30080 \
  --username admin \
  --password aaa98224 \  #密码是因为我改成aaa98224
  --insecure
  
# 添加 Git 仓库认证信息到 Argo CD
argocd repo add http://192.168.100.100/yw/hwj.git \  #gitlab仓库地址
  --username root \
  --password 'gitlab.hwj'  #gitlab仓库密码

在这里插入图片描述

3. 创建ArgoCD应用

前置条件:Gitlab仓库创建K8s资源文件目录和放入资源文件

在这里插入图片描述

创建ArgoCD应用

在这里插入图片描述
在这里插入图片描述

配置好了以后如下图所示,点击同步

在这里插入图片描述

同步成功,Pod自动部署完成

在这里插入图片描述

五、Jenkins集成ArgoCD

1. 流水线设计

pipeline {
    agent any
    environment {
        git_address = "http://192.168.100.100/yw/hwj.git"    // gitlab仓库地址
        git_auth = "jenkins-to-gitlab"     // Jenkins中配置的GitLab凭据ID
        docker_build_host = "192.168.100.30"    // 构建镜像主机
        branch_name = "master"
        // BUILD_NUMBER 是 Jenkins 的内置环境变量,代表当前构建的编号(递增)
        // 例如第一次构建为 1,第二次为 2,用于版本号控制
    }
    stages {
        stage('清空工作目录') {
            steps {
                echo '清理工作目录...'
                deleteDir()
            }
        }

        stage('拉取代码') {
            steps {
                checkout([$class: 'GitSCM',
                    branches: [[name: "*/${branch_name}"]],
                    doGenerateSubmoduleConfigurations: false,
                    extensions: [],
                    submoduleCfg: [],
                    userRemoteConfigs: [[credentialsId: "${git_auth}", url: "${git_address}"]]
                ])
            }
        }
        stage('代码打包') {
            steps {
                sh "mvn -U clean package -Dmaven.test.skip=true"
            }
        }

        stage('传输 Jar 包到 Docker 主机') {
            steps {
                sh """
                    scp -rp hwj-main/target/hwj-main.jar root@${docker_build_host}:/root/docker-build/hwj/
                """
            }
        }
        stage('Docker 主机构建镜像') {
            steps {
                sh """
                    ssh root@${docker_build_host} '
                        cd /root/docker-build/hwj &&
                        docker build -t harbor.local/k8s/hwj:v1.0.${BUILD_NUMBER} . &&
                        docker push harbor.local/k8s/hwj:v1.0.${BUILD_NUMBER}
                    '
                """
            }
        }
		stage('更新 YAML 并提交 Git') {
			steps {
				script {
					def newTag = "v1.0.${BUILD_NUMBER}"
					def yamlPath = "k8s/hwj/hwj-deploy.yaml"    // gitlab仓库中存放K8s资源文件的目录
					def imageLine = "image: harbor.local/k8s/hwj:${newTag}"

					// 修改 YAML 镜像地址
					sh "sed -i 's|image: harbor.local/k8s/hwj:.*|${imageLine}|' ${yamlPath}"

                    // 使用凭据进行 Git 提交和推送
                    withCredentials([usernamePassword(credentialsId: "${git_auth}", usernameVariable: 'GIT_USER', passwordVariable: 'GIT_PASS')]) {
                        sh """
                            git config user.name 'hwj'
                            git config user.email 'hwj@940415171.com'
                            git remote set-url origin http://$GIT_USER:$GIT_PASS@192.168.100.100/yw/hwj.git
                            git add ${yamlPath}
                            git commit -m '更新镜像版本为 ${newTag}' || echo "No changes to commit"
                            git push origin HEAD:${branch_name}
                        """
					}
				}
			}
		}
    }
}

在这里插入图片描述

再次同步 ArgoCD,这里也可以配置自动同步,每次 Jenkins 推送 YAML 改动后即可自动完成部署

在这里插入图片描述


总结

本篇文章基于前两篇 Jenkins CI/CD 系列的内容,进一步集成了 ArgoCD 实现自动部署能力:
✅ 使用 Helm 安装 ArgoCD,便于版本管理和企业级配置维护
✅ 配置 ArgoCD 与 Git 仓库同步,构建 GitOps 部署模型
✅ 利用 Jenkins 流水线自动更新部署清单,实现构建即部署

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2373743.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

控制台打印带格式内容

1. 场景 很多软件会在控制台打印带颜色和格式的文字,需要使用转义符实现这个功能。 2. 详细说明 2.1.转义符说明 样式开始:\033[参数1;参数2;参数3m 可以多个参数叠加,若同一类型的参数(如字体颜色)设置了多个&…

外网访问内网海康威视监控视频的方案:WebRTC + Coturn 搭建

外网访问内网海康威视监控视频的方案:WebRTC Coturn 需求背景 在仓库中有海康威视的监控摄像头,内网中是可以直接访问到监控摄像的画面,由于项目的需求,需要在外网中也能看到监控画面。 实现这个功能的意义在于远程操控设备的…

Linux系统下的延迟任务及定时任务

1、延迟任务 概念: 在系统中我们的维护工作大多数时在服务器行对闲置时进行 我们需要用延迟任务来解决自动进行的一次性的维护 延迟任务时一次性的,不会重复执行 当延迟任务产生输出后,这些输出会以邮件的形式发送给延迟任务发起者 在 RH…

【网络原理】数据链路层

目录 一. 以太网 二. 以太网数据帧 三. MAC地址 四. MTU 五. ARP协议 六. DNS 一. 以太网 以太网是一种基于有线或无线介质的计算机网络技术,定义了物理层和数据链路层的协议,用于在局域网中传输数据帧。 二. 以太网数据帧 1)目标地址 …

相或为K(位运算)蓝桥杯(JAVA)

这个题是相或为k,考察相或的性质,用俩个数举例子,011001和011101后面的数不管和哪个数相或都不可能变成前面的数,所以利用这个性质我们可以用相与运算来把和k对应位置的1都积累起来,看最后能不能拼起来k如果能拼起来k那…

AI汽车时代的全面赋能者:德赛西威全栈能力再升级

AI汽车未来智慧出行场景正在描绘出巨大的商业图景,德赛西威已经抢先入局。 在2025年上海车展开幕前夕,德赛西威发布2030年全新使命愿景——“创领安全、愉悦和绿色的出行生活”,并推出全栈式智慧出行解决方案Smart Solution3.0、车路云一体式…

学习Python的第四天之网络爬虫

30岁程序员学习Python的第四天之网络爬虫的Scrapy库 Scrapy库的基本信息 Scrapy库的安装 在windows系统中通过管理员权限打开cmd。运行pip install scrapy即可安装。 通过命令scrapy -h可查看scrapy库是否安装成功. Scrapy库的基础信息 scrapy库是一种爬虫框架库 爬虫框…

5、开放式PLC梯形图编程组件 - /自动化与控制组件/open-plc-programming

76个工业组件库示例汇总 开放式PLC编程环境 这是一个开放式PLC编程环境的自定义组件,提供了一个面向智能仓储堆垛机控制的开放式PLC编程环境。该组件采用苹果科技风格设计,支持多厂商PLC硬件,具有直观的界面和丰富的功能。 功能特点 多语…

linux中常用的命令(三)

目录 1- ls(查看当前目录下的内容) 2- pwd (查看当前所在的文件夹) 3- cd [目录名](切换文件夹) 4- touch [文件名] (如果文件不存在,新建文件) 5- mkdir[目录名] (创建目录) 6-rm[文件名]&…

Java 中 AQS 的实现原理

AQS 简介 AQS(全称AbstractQueuedSynchronizer)即抽象同步队列,它是实现同步器的基础组件,并发包中锁的底层就是使用AQS实现的。 由类图可以看到,AQS是一个FIFO的双向队列,其内部通过节点head和tail记录队首和队尾元素&#xff0…

『Python学习笔记』ubuntu解决matplotlit中文乱码的问题!

ubuntu解决matplotlit中文乱码的问题! 文章目录 simhei.ttf字体下载链接:http://xiazaiziti.com/210356.html将字体放到合适的地方 sudo cp SimHei.ttf /usr/share/fonts/(base) zkfzkf:~$ fc-list | grep -i "SimHei" /usr/local/share/font…

鸿蒙知识总结

判断题 1、 在http模块中,多个请求可以使用同一个httpRequest对象,httpRequest对象可以复用。(错误) 2、订阅dataReceiverProgress响应事件是用来接收HTTP流式响应数据。(错误) 3、ArkTS中变量声明时不需要…

C++23 新特性:深入解析 std::views::join_with(P2441R2)

文章目录 std::views::join_with 基本用法处理字符串集合std::views::join_with 与其他视图的结合使用总结 随着C23标准的逐步推进,我们迎来了许多令人兴奋的新特性,其中之一就是 std::views::join_with。这个新特性是C23中引入的视图适配器&#xff0c…

数据可视化大屏——智慧社区内网比对平台

综述分析: 智慧社区内网数据比对信息系统 这段代码实现了一个智慧社区内网数据比对信息系统的前端界面,采用三栏式布局展示各类社区安全相关数据。界面主要由左侧数据统计、中间地图展示和右侧数据分析三部分组成,使用了多种图表可视化技术…

Jenkins企业级实战

目标 在Windows操作系统上使用Jenkins完成代码的自动拉取、编译、打包、发布工作。 实施 1.安装Java开发工具包(JDK) Jenkins是基于Java的应用程序,因此需要先安装JDK。可以从Oracle官网或OpenJDK下载适合的JDK版本。推荐java17版本&#x…

uniapp-商城-52-后台 商家信息(商家信息数据,云对象使用)

1、概述 已经通过好几个篇幅来说明商家信息,包括logo、商家名称,地址,电话以及商家简介。通过表单组件和标签,以及我们的文件上传标签,都做了说明。(logo上传,用的文件上传组件是上传到公共的数…

MySQL 索引设计宝典:原理、原则与实战案例深度解析

目录 前言第一章:索引设计的基础原则 (知其然,更要知其所以然)第二章:实战案例:电商订单系统的索引设计第三章:索引设计的实践流程总结结语 🌟我的其他文章也讲解的比较有趣😁,如果喜…

C#上传文件到腾讯云的COS

测试环境: vs2022 .net 6控制台应用程序 测试步骤如下: 1 添加子用户,目前是为了拿到secretId和secretKey,打开添加子用户界面链接:https://console.cloud.tencent.com/cam 并为子用户添加API 密钥 2 通过链接htt…

C PRIMER PLUS——第9节:动态内存分配、存储类别、链接和内存管理

目录 1.动态内存分配 1.1 malloc 函数 1.2 calloc 函数 1.3 realloc 函数 1.4 free 函数 1.5常见错误 1.6综合例题 2.C语言的内存结构 3.存储类别 3.1作用域(Scope) 3.2链接(Linkage) 3.3存储期(Storage Du…

作业...

基础配置 RI R2 R3 R4 R5 例如R1 BGP配置 1,R1和R2之间使用直连接口IP地址来建立EBGP对等体关系 2、R2、R3、R4之间配置OSPF协议,保证各设备之间的网络互通,且通过重发布的方式发布路由 查看R2、R3、R4的OSPF路由表: \ R2、R3、R4使用环…