Kubernetes與Jenkins的CI/CD

結構

  1. 發佈流程設計
  2. 部署Harbor鏡像倉庫
  3. 部署Git倉庫
  4. 構建Jenkins-Slave鏡像
  5. 在Kubernetes中部署Jenkins
  6. Jenkins與Kubernetes集成
  7. 流水線發佈Java項目
  8. 回滾

1.發佈流程設計

軟件環境: Jenkins + Kubernetes + Git + Maven + Harbor
工作流程:手動/自動構建 -> Jenkins 調度 K8S API ->動態生成 Jenkins Slave pod -> Slave pod 拉取 Git 代碼/編譯/打包鏡像 ->推送到鏡像倉庫 Harbor -> Slave
工作完成,Pod 自動銷燬 ->部署到測試或生產 Kubernetes平臺 。

2. 部署Harbor鏡像倉庫

https://192.168.1.25/harbor

3. 部署Git倉庫

192.168.1.25

Kubernetes與Jenkins的CI/CD

4. 構建Jenkins-Slave鏡像

Jenkins-Slave:作用是緩解master上的負載壓力

master 分派任務(job)給Jenkins-Slave 完成工作

參考文檔:https://github.com/jenkinsci/docker-jnlp-slave

[root@docker jenkins-salve]# ls
dockerfile-jenkins-slave jenkins-slave settings.xml slave.jar

settings.xml:maven的配置文件,獲取jar包的地址變爲阿里雲,原先的apache地址下載很慢

1、[root@docker jenkins-salve]# docker build -t test.com/library/jenkins-salve -f dockerfile-jenkins-slave .
2、docker push test.com/library/jenkins-salve:latest

Kubernetes與Jenkins的CI/CD

5. 在Kubernetes中部署Jenkins

文檔:https://github.com/jenkinsci/kubernetes-plugin/tree/fc40c869edfd9e3904a9a56b0f80c5a25e988fa1/src/main/kubernetes

首先要創建pv --》managed-nfs-storage

1、kubectl apply -f rbac.yaml

2、[root@docker jenkins]# kubectl apply -f jenkins.yml

端口:30009 是node的端口
50000 是slave用到的端口

initialDelaySeconds 60 可以設置爲系統完全啓動起來所需的最少時間,這裏是1分鐘,60秒
1)查看下pvc有無創建
Kubernetes與Jenkins的CI/CD

2)查看下pod有無啓動
Kubernetes與Jenkins的CI/CD

3)訪問-->可以看到這個pod分配在了哪個node上
http://192.168.1.24:30009

Kubernetes與Jenkins的CI/CD

Kubernetes與Jenkins的CI/CD

Kubernetes與Jenkins的CI/CD

3、slave需要憑據來管理Kubernetes,因爲slave來進行部署上線的,這樣就會分配pod

而slave是分配在了node上,這就需要node管理Kubernetes

參考以下生成的admin證書
http://blog.itpub.net/28624388/viewspace-2151773/

1)[root@docker master-ca]# pwd
/data/k8s/master-ca

2)[root@docker master-ca]# cat admin-csr.json
{
"CN": "admin",
"hosts": [],
"key": {
"algo":"rsa",
"size":2048
},
"names": [
{
"C": "CN",
"L": "BeiJing",
"ST": "BeiJing",
"O": "system:masters",
"OU": "System"
}
]
}

3)生成 admin 證書和私鑰
cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes admin-csr.json | cfssljson -bare admin

4)拷貝admin.pem admin-key.pem 到/root/k8s-cert 下
Kubernetes與Jenkins的CI/CD

5)[root@docker k8s-cert]# sh kubeconfig.sh

6)將以下拷貝到任意一個主機node上
scp /opt/kubernetes/bin/kubectl config 192.168.1.23:~

7)登錄到192.1681.23上
[root@docker ~]# ./kubectl get nodes --kubeconfig=config ;./kubectl get pods --kubeconfig=config
Kubernetes與Jenkins的CI/CD

8)授權成功

9)這個配置文件要放到jenkins上集成

4、設置jenkins
1)在系統管理---》插件管理--》Advanced--》更改爲http
http://updates.jenkins.io/update-center.json

2)安裝插件
Kubernetes Continuous Deploy
Kubernetes

3)安裝完成後,系統管理---》系統設置---》Cloud
Kubernetes與Jenkins的CI/CD

Kubernetes 地址 :https://kubernetes.default #這個就是dns解析,根據svc匹配
Kubernetes與Jenkins的CI/CD

Kubernetes與Jenkins的CI/CD

一定要測試是否成功

4)保存

5、搭建git倉庫
1)先登錄到192.168.1.24 下載源碼
[root@docker ~]# git clone https://github.com/lizhenliang/tomcat-java-demo.git

2)登錄到192.168.1.25創建git倉庫
Kubernetes與Jenkins的CI/CD

3)192.168.1.24 更改git提交倉庫,再將代碼提交到這個倉庫中
Kubernetes與Jenkins的CI/CD

4)192.168.1.24 上 執行:git push origin master

5)在192.168.1.23上拉去代碼
git clone [email protected]:/home/git/java-demo

6、jenkins上創建項目--》pipeline
Kubernetes與Jenkins的CI/CD

1)準備好2個文件
deploy.yaml
Jenkinsfile

Kubernetes與Jenkins的CI/CD

2)Repository URL :git倉庫地址 [email protected]:/home/git/java-demo

3)需要在node上創建一個認證,免費拉去代碼,我覺得是所有的node都得認證拉去代碼
ssh-keygen
ssh-copy-id [email protected]
ssh [email protected]

4)添加 Credentials
Kubernetes與Jenkins的CI/CD

cat /root/.ssh/id_rsa --》私鑰

Kubernetes與Jenkins的CI/CD

5)保存

7、更改憑據
Kubernetes與Jenkins的CI/CD

1)
Kubernetes與Jenkins的CI/CD

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章