結構
- 發佈流程設計
- 部署Harbor鏡像倉庫
- 部署Git倉庫
- 構建Jenkins-Slave鏡像
- 在Kubernetes中部署Jenkins
- Jenkins與Kubernetes集成
- 流水線發佈Java項目
- 回滾
1.發佈流程設計
軟件環境: Jenkins + Kubernetes + Git + Maven + Harbor
工作流程:手動/自動構建 -> Jenkins 調度 K8S API ->動態生成 Jenkins Slave pod -> Slave pod 拉取 Git 代碼/編譯/打包鏡像 ->推送到鏡像倉庫 Harbor -> Slave
工作完成,Pod 自動銷燬 ->部署到測試或生產 Kubernetes平臺 。
2. 部署Harbor鏡像倉庫
3. 部署Git倉庫
192.168.1.25
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
5. 在Kubernetes中部署Jenkins
首先要創建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有無創建
2)查看下pod有無啓動
3)訪問-->可以看到這個pod分配在了哪個node上
http://192.168.1.24:30009
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 下
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
8)授權成功
9)這個配置文件要放到jenkins上集成
4、設置jenkins
1)在系統管理---》插件管理--》Advanced--》更改爲http
http://updates.jenkins.io/update-center.json
2)安裝插件
Kubernetes Continuous Deploy
Kubernetes
3)安裝完成後,系統管理---》系統設置---》Cloud
Kubernetes 地址 :https://kubernetes.default #這個就是dns解析,根據svc匹配
一定要測試是否成功
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倉庫
3)192.168.1.24 更改git提交倉庫,再將代碼提交到這個倉庫中
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
1)準備好2個文件
deploy.yaml
Jenkinsfile
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
cat /root/.ssh/id_rsa --》私鑰
5)保存
7、更改憑據
1)