基于k8s的Jenkins CI/CD平臺部署實踐(三):集成ArgoCD實現持續部署

基于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 anyenvironment {git_address = "http://192.168.100.100/yw/hwj.git"    // gitlab倉庫地址git_auth = "jenkins-to-gitlab"     // Jenkins中配置的GitLab憑據IDdocker_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.gitgit 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.pswp.cn/diannao/82396.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82396.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/82396.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[C++類和對象]類和對象的引入

面向過程和面向對象 C語言是面向過程的,關注的是過程,分析出求解問題的步驟,通過函數調用來逐步解決問題 C是基于面向對象的,關注的是對象,將一件事情分成不同的對象,靠對象之間完成交互 類的引入 C語言結構體中只能定義變量,在C中,結構體不僅僅可以定義變量,而且可以定義函…

AWS之存儲服務

目錄 一、傳統存儲術語 二、傳統存儲與云存儲的關系 三、云存儲之AWS 使用場景 文件存儲 數據塊存儲 對象存儲 EBS、EFS、S3對比 EBS塊存儲 S3對象存儲 S3 使用案例 S3 存儲類 EFS文件存儲 一、傳統存儲術語 分類 接口/技術類型 應用場景特點 關系及區別 機械硬…

WPDRRC 模型:構建動態閉環的信息安全防御體系

WPDRRC 模型是一種信息安全整體架構設計模型,由預警(Warning)、保護(Protection)、檢測(Detection)、反應(Reaction)、恢復(Recovery)和反擊&…

Redis 數據類型詳解(二):Hash 類型全解析

文章目錄 一、什么是 Redis 的 Hash 類型?二、Hash為什么在有些時候比String好用三、常見命令1.HSET key field value2.HGET key field3.HMSET4.HMGET5.HGETALL6.HKEYS7.HVALS8.HINCRBY9.HSETNX 四、應用場景五、性能優勢六、注意事項總結 提示:以下是本…

Go Modules 的基本使用

在 Go Modules 項目中,首次運行時下載依賴包的正確流程需要根據項目情況區分處理。以下是詳細步驟和最佳實踐: 一、首次初始化項目的標準流程 1.1 創建項目目錄并初始化模塊 mkdir myproject && cd myproject go mod init github…

RISC-V AIA SPEC學習(五)

第六章 Interrupts for Virtual Machines(VS Level) 核心內容 1.VS級別外部中斷支持:?? ??客戶中斷文件(Guest Interrupt File)??:虛擬機的每個vCPU擁有獨立的IMSIC中斷文件,允許直接接收設備MSI。??vstopi CSR??:類似stopei,用于虛擬機內部處理最高優先級中…

【Python-Day 11】列表入門:Python 中最靈活的數據容器 (創建、索引、切片)

Langchain系列文章目錄 01-玩轉LangChain:從模型調用到Prompt模板與輸出解析的完整指南 02-玩轉 LangChain Memory 模塊:四種記憶類型詳解及應用場景全覆蓋 03-全面掌握 LangChain:從核心鏈條構建到動態任務分配的實戰指南 04-玩轉 LangChai…

【AXI總線專題】-AXI-LITE總線解讀

【AXI總線專題】-AXI-LITE總線解讀 1.axi-lite概述2.信號定義Write address channelWrite data channelWrite response channelRead address channelRead data channel 3.測試4.仿真波形5.工程文件 參考手冊 《3-2-03米聯客2022版AXI4總線專題-20211123.pdf》 《IHI0022E_amba_…

在企業級項目中高效使用 Maven-mvnd

1、引言 1.1 什么是 Maven-mvnd? Maven-mvnd 是 Apache Maven 的一個實驗性擴展工具(也稱為 mvnd),基于守護進程(daemon)模型構建,目標是顯著提升 Maven 構建的速度和效率。它由 Red Hat 推出,通過復用 JVM 進程來減少每次構建時的啟動開銷。 1.2 為什么企業在構建過…

網絡字節序 - 大端

回顧主機字節序 - 大小端 發送主機將發送緩沖區中的數據按內存地址從低到高的順序發出接收主機把從網絡上接收到的數據按內存地址從底到高的順序依次保存到接收緩沖區TCP/IP 規定,網絡數據流應采用大端字節序,即低地址高字節,也就是說&#…

《被討厭的勇氣》書摘

阿德勒心理學考慮的不是過去的“原因”,而是現在的“目的”。你的朋友并不是因為不想到外面去,才制造出不安的情緒。是先有了“不出去”這個目的,之后才會為了達到這個目的而制造出不安或者恐懼之類的情緒。 個人見解:這是阿德勒…

打造專屬AI好友:小智AI聊天機器人詳解

打造專屬AI好友:小智AI聊天機器人詳解 在當下的科技熱潮中,AI正迅速改變著我們的生活,成為了科技領域的新寵。而今,借助開源項目的力量,你可以親手打造一個智能小助手——小智AI聊天機器人。它不僅是一個技術探索的窗…

如何利用爬蟲獲得1688商品詳情:實戰指南

在電商運營和市場分析中,獲取1688商品詳情數據是一項重要任務。本文將詳細介紹如何利用爬蟲技術獲取1688商品詳情,包括準備工作、爬蟲實現步驟以及注意事項。 一、準備工作 (一)注冊1688開放平臺賬號 在1688開放平臺注冊開發者…

如何優化系統啟動時間--基于米爾瑞薩MYD-YG2LX開發板

1.概述 MYD-YG2LX采用瑞薩RZ/G2L作為核心處理器,該處理器搭載雙核Cortex-A551.2GHzCortex-M33200MHz處理器,其內部集成高性能3D加速引擎Mail-G31 GPU(500MHz)和視頻處理單元(支持H.264硬件編解碼),16位的DDR4-1600 / DDR3L-1333內…

QML 圖像變換(縮放、平移、旋轉)

目錄 引言相關閱讀基礎知識工程結構核心代碼解析示例1:圖像縮放(ImageScale.qml)代碼說明運行效果 示例2:圖像平移(ImageTransform.qml)代碼說明運行效果 示例3:圖像旋轉(ImageRotat…

Linux 系統命令使用指南1

適用于 Red Hat / CentOS / Rocky Linux 等系統的基本初始化配置操作。 🔒 1. 關閉 SELinux(臨時生效) setenforce 0?? 注意:此命令僅臨時關閉 SELinux,重啟后可能恢復。要永久關閉,請修改 /etc/selinux…

1.2.1 Linux音頻系統發展歷程簡介

Linux音頻系統的發展經歷了從最初的簡單驅動到今天多層次、模塊化音頻架構。簡要梳理其主要歷程: 早期的OSS(Open Sound System) 在90年代及2000年代初,Linux主要使用OSS來支持音頻。OSS直接為硬件設備(如聲卡&#…

【Linux操作系統】第一彈——Linux基礎篇

文章目錄 💡 一. Linux的基本常識🪔 1.1 linux網絡連接三種方式🪔1.2 虛擬機的克隆🪔1.3 虛擬機的快照🪔1.4 虛擬機的遷移和刪除🪔1.5 vmtools工具 💡二. Linux的目錄結構🪔2.1 Linu…

STM32printf重定向到串口含armcc和gcc兩種方案

STM32串口重定向:MDK與GCC環境下需重寫的函數差異 在嵌入式開發中,尤其是使用 STM32系列微控制器 的項目中,調試信息的輸出是不可或缺的一部分。為了方便調試,開發者通常會選擇將 printf 等標準輸出函數通過 UART 串口發送到 PC …

C++ 文本讀寫與二進制讀寫的底層機制

1.文件的打開方式 1.文本打開 在windows中,寫入時會將\n換成\r\n,讀出時\r\n會讀出\n linux對\n讀寫不做處理 2.二進制打開 對\n讀寫不做處理 2.文本讀寫 1.數據要先變成字符串再寫進緩沖區 2.字符串直接寫進緩沖區就是 3.c對文本讀寫的支持 istream/ostream中重載了對…