最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

k8s+jenkins實(shí)現(xiàn)自動化部署應(yīng)用至k8s集群方式

 更新時間:2026年03月14日 15:54:39   作者:韓悸桉  
本文詳細(xì)介紹了如何在Jenkins環(huán)境下配置和啟動Jenkins服務(wù),以及如何使用Jenkins進(jìn)行自動化部署Nginx應(yīng)用到Kubernetes集群,文章涵蓋了從環(huán)境準(zhǔn)備、項(xiàng)目配置、代碼上傳到部署和回滾的全過程,提供了一個完整的自動化部署解決方案

1.jenkins環(huán)境準(zhǔn)備并啟動jenkins服務(wù)

1)jdk環(huán)境配置

[root@centos7 ~]# ll /app/

[root@centos7 ~]# cat /etc/profile | tail -n3 #jdk的環(huán)境變量
export JAVA_HOME=/app/jdk
export PATH=JAVA_HOME/bin:JAVA_HOME/jre/bin:PATH
export CLASSPATH=JAVA_HOME/lib:JAVA_HOME/jre/lib:JAVA_HOME/lib/tools.jar

2)準(zhǔn)備好jenkins啟動的war包

[root@centos7 war]# ll

3)查看jenkins的啟動腳本

[root@centos7 war]# cat start.sh

4)啟動jenkins

[root@centos7 war]# ./start.sh && tailf test.log

5)在數(shù)據(jù)目錄修改hudson更新url,改為國內(nèi)url,避免jenkins無法啟動

[root@centos7 ~]# cat .jenkins/hudson.model.UpdateCenter.xml

6)準(zhǔn)備好主機(jī)解析或添加到DNS服務(wù)器

[root@centos7 ~]# cat /etc/hosts

7)web端訪問jenkins界面

8)創(chuàng)建一個jenkins_project項(xiàng)目,并編輯配置

9)在jenkins的后端準(zhǔn)備好自動化部署腳本k8s_auto_deploy.sh,事先做好公私鑰認(rèn)證,使得jenkins能夠訪問k8s-master-1

[root@centos7 ~]# cat /data/script/k8s_auto_depoy.sh
#!/bin/bash
URL=git@k8s.gitlab.cn:middle-supoort-project/middle-compose-service.git
Starttime=`date +"%Y-%m-%d_%H-%M-%S"`
Method=$1
Branch=$2
t1=`date +"%Y-%m-%d %H:%M:%S"`

     #代碼克隆至jenkins后端
clone_code(){
    cd /root/.jenkins/workspace/jenkins_project && git clone -b $Branch ${URL}&& echo "Clone Finished"
}

 #代碼打包壓縮并遠(yuǎn)程推送至k8s-master-1的nginx鏡像制作目錄
Pack_scp(){
    cd /root/.jenkins/workspace/jenkins_project/middle-compose-service/ && tar cvzf nginx.tar.gz * && echo Package Finished
    scp nginx.tar.gz root@k8s-master-1:/data/Dockerfile/nginx/ && ssh root@k8s-master-1 'cd /data/Dockerfile/nginx/ && tar xvf nginx.tar.gz &&rm -f nginx.tar.gz' 
}

 #遠(yuǎn)程操作k8s-master-1節(jié)點(diǎn),進(jìn)行鏡像制作并推送至harbor鏡像倉庫
build_iamge(){
    ssh root@k8s-master-1 "cd /data/Dockerfile/nginx/ && ./build.sh ${Starttime} && echo 'build_image and push_harbor success!'"
}

    #對k8s集群中的nginx的pod應(yīng)用進(jìn)行升級
app_update(){
    ssh root@k8s-master-1 "sed -ri 's@image: .*@image: k8s.harbor.cn/base_application/nginx:${Starttime}@g'  /data/mainfest/nginx.yaml"
    ssh root@k8s-master-1 "kubectl set image deployment/nginx-deployment nginx-container=k8s.harbor.cn/base_application/nginx:${Starttime} -n default --record=true"
                t2=`date +"%Y-%m-%d %H:%M:%S"`
    start_T=`date --date="${t1}" +%s`
    end_T=`date --date="${t2}" +%s`
    total_time=$((end_T-start_T))
    echo "deploy success,it has been spent ${total_time} seconds"   
}

    #k8s集群中的pod應(yīng)用進(jìn)行回滾
app_rollback(){
    ssh root@k8s-master-1 'kubectl rollout undo deployment/nginx-deployment  -n default'
}

    #進(jìn)行k8s集群自動部署的主函數(shù)
main(){
    case $Method in 
    deploy)
        clone_code
        Pack_scp
        build_iamge
        app_update
    ;;
    rollback)
        app_rollback
    ;;
    esac
}

#執(zhí)行主函數(shù)命令
main $1 $2

10)將jenkins的公鑰配置到gitlab服務(wù)的web端,使得jenkins可以直接拉取代碼無需認(rèn)證

[root@centos7 ~]# cat .ssh/id_rsa.pub

2.k8s的master節(jié)點(diǎn)的準(zhǔn)備

1)準(zhǔn)備存放nginx應(yīng)用鏡像制作的路徑,當(dāng)前目錄為空,其代碼配置文件均已放在gitlab服務(wù)器中

[root@k8s-master-1 ~]# ll /data/Dockerfile/nginx
total 0

2)拉取harbor中的鏡像的認(rèn)證文件

[root@k8s-master-1 ~]# ll /etc/docker/certs.d/k8s.harbor.cn/harbor_ca.crt

3)k8s集群中nginx的yaml清單文件

[root@k8s-master-1 data]# vim /data/mainfest/nginx.yaml

4)通過nginx.yaml文件啟動pod資源和service資源

[root@k8s-master-1 ~]# kubectl apply -f /data/mainfest/nginx.yaml

5)查看nginx的pod應(yīng)用以及service資源是否啟動

[root@k8s-master-1 ~]# kubectl get pod -n default

6)查看service資源

[root@k8s-master-1 ~]# kubectl get service -n default

7)web端訪問

3.將nginx的鏡像構(gòu)建等相關(guān)配置文件上傳到gitlab

1)以下為nginx的鏡像配置文件,均在develop分支下

2)制作nginx鏡像的Dockerfile文件

3)build.sh鏡像的構(gòu)建及自動推送至harbor的腳本

4)index.html頁面文件

5)nginx的主配置文件

6)nginx的server訪問路徑配置文件

4.立即構(gòu)建jenkins工程,實(shí)現(xiàn)自動化部署nginx應(yīng)用至k8s集群

1)以上均準(zhǔn)備完畢,開始構(gòu)建jenkins工程

2)選擇相應(yīng)的分支后構(gòu)建方法

3)開始構(gòu)建工程

4)查看控制輸出

5)查看k8s當(dāng)前正在運(yùn)行nginx的pod容器

[root@k8s-master-1 ~]# kubectl get pod -n default

6)再查看當(dāng)前正在運(yùn)行pod的鏡像源地址,可見被自動更新

[root@k8s-master-1 ~]# kubectl describe pod nginx-deployment-b856886fb-9mzrm -n default

7)查看nginx的yaml清單文件,也被自動修改

[root@k8s-master-1 ~]# cat /data/mainfest/nginx.yaml | grep “image:.*”

8)查看harbor鏡像倉庫,查看構(gòu)建的新鏡像是否成功推送到此harbor倉庫中

9)web端訪問更新的nginx版本,可見實(shí)現(xiàn)自動化更新

10)假設(shè)開發(fā)人員將gitlab中的index.html的版本更新為1.13版

11)再次構(gòu)建發(fā)布更新

12)查看控制臺輸出結(jié)果

13)web端訪問nginx應(yīng)用

5.若當(dāng)前版本有問題,需要回滾,執(zhí)行以下回滾操作

1)jenkins的控制臺選擇rollback回滾

2)回滾過程的日志查看

3)web端驗(yàn)證訪問,可見回滾成功

總結(jié)

以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 在K8S中使用ArgoCD做持續(xù)部署的方案

    在K8S中使用ArgoCD做持續(xù)部署的方案

    ArgoCD是一個基于Kubernetes的GitOps持續(xù)交付工具,應(yīng)用的部署和更新都可以在Git倉庫上同步實(shí)現(xiàn),并自帶一個可視化界面,本文介紹如何使用Git+Argocd方式來實(shí)現(xiàn)在k8s中部署和更新應(yīng)用服務(wù),感興趣的朋友一起看看吧
    2025-03-03
  • k8s?Service?實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和負(fù)載均衡

    k8s?Service?實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和負(fù)載均衡

    這篇文章主要為大家介紹了k8s?Service?實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)和負(fù)載均衡的工作原理及使用方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • Rook部署全過程

    Rook部署全過程

    文章詳細(xì)介紹了如何部署和管理Rook,包括準(zhǔn)備工作、安裝步驟、配置準(zhǔn)入控制器、創(chuàng)建集群、驗(yàn)證集群、部署Ceph儀表板、塊存儲和共享文件系統(tǒng),以及清理和刪除環(huán)境
    2026-03-03
  • Kubernetes(K8S)基礎(chǔ)知識

    Kubernetes(K8S)基礎(chǔ)知識

    本文詳細(xì)講解了Kubernetes(K8S)的基礎(chǔ)知識,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • k8s之ingress-nginx詳解和部署方案

    k8s之ingress-nginx詳解和部署方案

    Ingress是一種向k8s集群外部的客戶端公開服務(wù)的方法,下面這篇文章主要給大家介紹了關(guān)于k8s之ingress-nginx詳解和部署方案的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 云原生技術(shù)持久化存儲PV與PVC

    云原生技術(shù)持久化存儲PV與PVC

    這篇文章主要介紹了云原生技術(shù)持久化存儲PV與PVC
    2022-03-03
  • Kubernetes集群調(diào)度詳解(節(jié)點(diǎn)親和性、Pod親和性、Taint與Toleration)

    Kubernetes集群調(diào)度詳解(節(jié)點(diǎn)親和性、Pod親和性、Taint與Toleration)

    Kubernetes調(diào)度器負(fù)責(zé)將Pod分配到節(jié)點(diǎn),兼顧資源合理分配、調(diào)度效率及用戶策略,通過預(yù)選、優(yōu)選、選擇三階段決策,支持自定義調(diào)度器、節(jié)點(diǎn)親和性(軟硬策略)、Taint/Toleration機(jī)制及直接指定節(jié)點(diǎn),實(shí)現(xiàn)靈活調(diào)度與容錯
    2025-09-09
  • Ubuntu22.04的Kubernetes環(huán)境中加載橋接網(wǎng)絡(luò)模塊方式

    Ubuntu22.04的Kubernetes環(huán)境中加載橋接網(wǎng)絡(luò)模塊方式

    在Ubuntu 22.04的Kubernetes環(huán)境中,解決sysctl: cannot stat /proc/sys/net/bridge/bridge-nf-call-iptables錯誤的步驟包括加載br_netfilter模塊、持久化配置、設(shè)置sysctl參數(shù)以及驗(yàn)證配置,同時,確保Kubernetes組件和CNI插件依賴這些參數(shù),防火墻配置也要同步
    2026-01-01
  • kubernetes中pod的調(diào)度親和性affinity詳解

    kubernetes中pod的調(diào)度親和性affinity詳解

    本文簡要介紹了Kubernetes中的三種親和性機(jī)制:節(jié)點(diǎn)親和性(控制Pod調(diào)度到指定節(jié)點(diǎn))、Pod親和性(與特定Pod共處同一節(jié)點(diǎn))和Pod反親和性(避免與特定Pod共處同一節(jié)點(diǎn)),并通過示例說明了其配置方式及實(shí)際調(diào)度效果
    2025-09-09
  • k8s容器狀態(tài)Terminating無法刪除的問題及解決

    k8s容器狀態(tài)Terminating無法刪除的問題及解決

    這篇文章主要介紹了k8s容器狀態(tài)Terminating無法刪除的問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-07-07

最新評論

石嘴山市| 武威市| 神池县| 凤冈县| 秦安县| 招远市| 台东市| 新野县| 康乐县| 辰溪县| 德钦县| 和硕县| 海伦市| 宝山区| 台州市| 松滋市| 三台县| 马尔康县| 伽师县| 阿鲁科尔沁旗| 景洪市| 竹北市| 遵义县| 民县| 铁力市| 荥阳市| 诸暨市| 宁城县| 中阳县| 邛崃市| 达拉特旗| 梨树县| 大英县| 页游| 宜都市| 肃宁县| 大冶市| 麻江县| 文成县| 会同县| 新宁县|