真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD-創(chuàng)新互聯(lián)

一、環(huán)境準(zhǔn)備

  • k8s集群環(huán)境(我這里是三臺(tái)的K8s集群);
  • 單獨(dú)一臺(tái)docker服務(wù)器,主要用于向私有倉庫上傳鏡像,Jenkins和gitlab也部署在這臺(tái)服務(wù)器;
  • 上述環(huán)境共計(jì)服務(wù)器4臺(tái),均指向同一個(gè)私有倉庫,以便共享docker鏡像;
  • 服務(wù)器IP依次為192.168.20.2、20.3、20.4、20.5(前三個(gè)IP為K8s集群中的節(jié)點(diǎn))

Jenkins采用war包的方式部署,需要用到tomcat環(huán)境,自行參考博文,進(jìn)行部署;
其他環(huán)境部署可以參考以下博文:
Tomcat安裝及優(yōu)化配置;
Docker的安裝詳細(xì)配置;
K8s(Kubernetes)簡介及安裝部署。

專注于為中小企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)江門免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了超過千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

注:以下用到的所有包文件,都可以從我的網(wǎng)盤鏈接中下載。

二、部署registry私有倉庫

任意可以運(yùn)行docker容器的節(jié)點(diǎn)部署即可。這里我選擇在192.168.20.5這臺(tái)主機(jī)。

1、運(yùn)行私有倉庫容器

[root@jenkins ~]# docker run -tid --name registry --restart=always -p 5000:5000 -v /data/registry:/var/lib/registry registry

2、配置各個(gè)服務(wù)器指向私有倉庫

#選擇任意一個(gè)節(jié)點(diǎn)進(jìn)行以下操作
[root@jenkins ~]# vim /usr/lib/systemd/system/docker.service 
#修該下面的配置項(xiàng),以便指定其私有倉庫的監(jiān)聽地址
ExecStart=/usr/bin/dockerd -H unix:// --insecure-registry 192.168.20.5:5000
#將修改后的配置文件發(fā)送到其他節(jié)點(diǎn)
[root@jenkins ~]# scp /usr/lib/systemd/system/docker.service   192.168.20.2:/usr/lib/systemd/system/
[root@jenkins ~]# scp /usr/lib/systemd/system/docker.service 192.168.20.3:/usr/lib/systemd/system/
[root@jenkins ~]# scp /usr/lib/systemd/system/docker.service 192.168.20.4:/usr/lib/systemd/system/

3、每個(gè)節(jié)點(diǎn)依次重啟docker服務(wù),使更改生效

以下操作,需要在每個(gè)節(jié)點(diǎn)依次進(jìn)行配置。

[root@jenkins ~]# systemctl daemon-reload
[root@jenkins ~]# systemctl restart docker

三、部署Jenkins服務(wù)并啟動(dòng)

在部署Jenkins之前,自行部署tomcat服務(wù),參考博文:Tomcat安裝及優(yōu)化配置。

部署Jenkins所需要的源碼包及插件,可以從我的網(wǎng)盤鏈接中下載。

[root@jenkins src]# cd /usr/local/tomcat/webapps/
#刪除原來的網(wǎng)頁目錄下所有內(nèi)容(根據(jù)實(shí)際情況來定,最好做個(gè)備份)
[root@jenkins webapps]# rm -rf * 
[root@jenkins webapps]# rz       #上傳Jenkins的war包
[root@jenkins webapps]# ls
jenkins.war
#指定Jenkins的家目錄
[root@jenkins webapps]# vim ../bin/catalina.sh    #編輯此文件

#!/bin/sh    #在文件開頭該行下面添加即可
export CATALINA_OPTS="-DJENKINS_HOME=/data/jenkins"
export JENKINS_JAVA_OPTIONS="-Djava.awt.headless=true -Dhudson.ClassicPluginStrategy.noBytecodeTransformer=true"
#啟動(dòng)tomcat
[root@jenkins webapps]# cd ../bin/
[root@jenkins bin]# ./catalina.sh start
#確定端口在監(jiān)聽
[root@jenkins bin]# netstat -anpt | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      58560/java

四、配置Jenkins服務(wù)

要想實(shí)現(xiàn)Jenkins的CI/CD,必須有GitLab、GitLab HOOK、Git Lab Authentication這三個(gè)插件,國內(nèi)不太好下載這幾個(gè)插件,在我上面的網(wǎng)盤鏈接中有打包好的插件,直接解壓到對應(yīng)目錄即可。

1、配置Jenkinsweb界面

瀏覽器訪問以下tomcat服務(wù)的IP+端口/Jenkins,如:192.168.20.5:8080/jenkins,即可看到如下界面(訪問前最好先斷掉外網(wǎng),否則在輸入密碼后,會(huì)讓在線安裝插件,比較慢,而且很有可能安裝失敗):

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

自行根據(jù)提示查看密碼并粘貼到相應(yīng)位置,如下,查看密碼:

[root@jenkins webapps]# cat /data/jenkins/secrets/initialAdminPassword
ed0a933859e0470f9095680a2059c19a

輸入密碼后,等待片刻,然后點(diǎn)擊如下:

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

創(chuàng)建相應(yīng)用戶:

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

登錄成功后,如下:

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

現(xiàn)在關(guān)閉瀏覽器頁面,對Jenkins添加插件:

2、配置所需插件

[root@jenkins src]# rm -rf /data/jenkins/plugins/   #刪除原來的空目錄
[root@jenkins src]# tar zxf plugins.tar.gz -C /data/jenkins/
#重啟tomcat以便生效
[root@jenkins src]# /usr/local/tomcat/bin/catalina.sh stop
[root@jenkins src]# /usr/local/tomcat/bin/catalina.sh start

再次訪問Jenkins的web界面:

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

可以看到已經(jīng)變成了中文頁面,說明插件配置生效,如下:

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

五、部署gitlab服務(wù)

想了想,還是懶得再截圖寫了,參考我之前的博文來部署gitlab吧,我也是看那個(gè)博文部署的(在安裝gitlab后,先別接著操作,需要看下面的注意事項(xiàng),進(jìn)行更改監(jiān)聽端口),最后保證可以將遠(yuǎn)端的庫克隆到本地即可,我這里將gitlab和Jenkins部署在同一臺(tái)服務(wù)器。參考博文:持續(xù)集成之Gitlab安裝與應(yīng)用

注意事項(xiàng)?。?!

在安裝gitlab后,需要更改其監(jiān)聽端口(防止端口沖突),如下:

[root@jenkins src]# vim /etc/gitlab/gitlab.rb     #更改如下
external_url 'http://192.168.20.5:90'
unicorn['listen'] = '192.168.20.5'       #本機(jī)IP
unicorn['port'] = 3000

更改完成監(jiān)聽端口后,再按照那個(gè)博文進(jìn)行接下來的操作即可(但是端口和那篇博文已經(jīng)不一樣了,比如查詢端口有沒有再監(jiān)聽,應(yīng)該看的是90端口而不是80端口了,訪問瀏覽器頁面也是,需要加90端口)。

最后保證本地有克隆的庫即可,如下:

[root@jenkins ~]# ls -d teset01/
teset01/

六、配置Jenkins創(chuàng)建一個(gè)任務(wù)

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CDjinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CDjinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

將以下shell腳本內(nèi)容粘貼到web界面,腳本如下:

#腳本中的IP,192.168.20.5為私有倉庫的IP,192.168.20.2為k8s集群中master的IP地址
#!/bin/bash
backupcode="/data/backcode/$JOB_NAME/$BUILD_NUMBER"   #這里引用了Jenkins的默認(rèn)變量
mkdir -p $backupcode
chmod 644 "$JENKINS_HOME"/workspace/"$JOB_NAME"/*
rsync -acP   "$JENKINS_HOME"/workspace/"$JOB_NAME"/*  $backupcode
echo From  192.168.20.5:5000/nginx > "$JENKINS_HOME"/workspace/Dockerfile
echo COPY ./"$JOB_NAME"/* /usr/share/nginx/html/ >> "$JENKINS_HOME"/workspace/Dockerfile
docker rmi 192.168.20.5:5000/nginx        
docker build -t 192.168.20.5:5000/nginx /"$JENKINS_HOME"/workspace/.
docker push 192.168.20.5:5000/nginx
ssh root@192.168.20.2 kubectl delete deployment nginx
ssh root@192.168.20.2 kubectl apply -f /root/nginx.yaml

腳本填寫后,如下:

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

腳本填寫后,先別保存,根據(jù)以下操作復(fù)制一下Jenkins的地址,如下:

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

七、開啟Jenkins的匿名訪問權(quán)限

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CDjinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

八、回到gitlab上開啟允許向自己發(fā)送web hook

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

以下操作,在新建的庫中進(jìn)行,我忘了截切換到新建庫的那一步的圖了:
jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

保存后,下拉頁面,即可看到新添加的web-hook,點(diǎn)擊如下,進(jìn)行測試:

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

返回狀態(tài)碼200,則表示配置無誤,如下:

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

九、配置Jenkins免密登錄k8s群集的master節(jié)點(diǎn)

jenkins服務(wù)器配置如下:

[root@jenkins ~]# ssh-copy-id root@192.168.20.2
#上面的IP為K8s群集中master節(jié)點(diǎn)IP

九、測試持續(xù)CI/CD效果

1、k8s群集中運(yùn)行nginx資源對象

#向私有倉庫上傳所需鏡像
[root@jenkins ~]# docker tag nginx:latest 192.168.20.5:5000/nginx:latest
[root@jenkins ~]# docker push 192.168.20.5:5000/nginx:latest 
#在master節(jié)點(diǎn)上面運(yùn)行nginx資源對象
[root@master ~]# vim nginx.yaml     #編寫yaml文件

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 2
  template:
    metadata:
      labels:
        name: nginx
    spec:
      containers:
        - name: nginx
          image: 192.168.20.5:5000/nginx:latest
          ports:
          - containerPort: 80

---
apiVersion: v1
kind: Service
metadata:
  labels:
    name: nginx
  name: nginx
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 80
    nodePort: 31234
  selector:
    name: nginx
[root@master ~]# kubectl apply -f nginx.yaml     #執(zhí)行yaml文件
[root@master ~]# kubectl get pod | grep nginx    #確定容器運(yùn)行正常
nginx-76645bc84f-rbgtl   1/1     Running   0          68s
nginx-76645bc84f-s6xp6   1/1     Running   0          68s

2、客戶端訪問nginx

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

3、在gitlab進(jìn)行版本的更新迭代測試

#在克隆到本地的庫中上傳文件到gitlab
[root@jenkins ~]# cd teset01/
[root@jenkins teset01]# git config --global user.name "test"
[root@jenkins teset01]# git config --global user.email "test@test.com"
[root@jenkins teset01]# echo "test ....." > index.html
[root@jenkins teset01]# git add *
[root@jenkins teset01]# git commit -m "Test CI/CD" 
[root@jenkins teset01]# git push origin master

在進(jìn)行上述操作后,即可在Jenkins新建的任務(wù)中,看到構(gòu)建成功的信息,如下:

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

再次訪問nginx首頁,發(fā)現(xiàn)已經(jīng)變成了我們在gitlab上提交的內(nèi)容,如下:

jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD

測試完成。

附加:歷史版本內(nèi)容存放路徑如下:

[root@jenkins data]# pwd        #確定當(dāng)前路徑
/data
[root@jenkins data]# tree backcode/           #這個(gè)目錄下記錄的是歷史版本的代碼
backcode/
└── test-01
    ├── 1
    │?? └── README.md
    ├── 2
    │?? ├── a.html
    │?? └── README.md
    ├── 3
    │?? └── README.md
    ├── 4
    │?? ├── a.html
    │?? └── README.md
    ├── 5
    │?? └── README.md
    └── 6
        ├── index.html
        └── README.md
[root@jenkins workspace]# pwd           #再次確定當(dāng)前路徑
/data/jenkins/workspace
[root@jenkins workspace]# ls          
#此目錄下是將新代碼構(gòu)建成鏡像的關(guān)鍵所在,Dockersfile就在這個(gè)目錄下
Dockerfile  test-01

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


文章題目:jinkens+gitlab針對k8s集群實(shí)現(xiàn)CI/CD-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://weahome.cn/article/dgospd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部