軟件環境:Jenkins + Kubernetes + Git + Maven + Harbor
發布流程設計

工作流程:手動/自動構建-> Jenkins 調度K8S API->動態生成Jenkins Slave pod ->Slave pod 拉取Git 代碼/編譯/打包鏡像->推送到鏡像倉庫Harbor ->Slave 工作完成,Pod 自動銷毀->部署到測試或生產Kubernetes平台。
環境准備:
准備K8S、Ingress和PV自動供給(NFS),
部署harbor:https://github.com/goharbor/harbor/releases
構建jenkins-slave鏡像:https://github.com/jenkinsci/docker-jnlp-slave
將構建好的jenkins-slave鏡像推送至harbor倉庫
在kubernetes中部署jenkins:https://github.com/jenkinsci/kubernetes-plugin/tree/fc40c869edfd9e3904a9a56b0f80c5a25e988fa1/src/main/kubernetes
部署git,創建用戶,jenkins保存git憑據
Kubernetes插件:Jenkins在Kubernetes集群中運行動態代理。插件介紹:https://github.com/jenkinsci/kubernetes-plugin

構建流水線
Pipeline插件
- Jenkins Pipeline是一套插件,支持在Jenkins中實現集成和持續交付管道;
- Pipeline通過特定語法對簡單到復雜的傳輸管道進行建模;
- 聲明式:遵循與Groovy相同語法。pipeline { }
- 腳本式:支持Groovy大部分功能,也是非常表達和靈活的工具。node { }
- Jenkins Pipeline的定義被寫入一個文本文件,稱為Jenkinsfile。

Jenkins安裝Git和Pipeline插件 ExtendedChoiceParameter
Jenkins保存Harbor訪問憑據

鏡像命名
根據Jenkins構建編號作為鏡像標簽:
${registry}/${project}/${app_name}:${BUILD_NUMBER}
還可以根據Git Tag作為鏡像標簽,這需要與開發、測試、運維達成一個約定。
jenkins創建任務


持續部署
Kubernetes Continuous Deploy插件:用於將資源配置部署到Kubernetes。
插件介紹:https://plugins.jenkins.io/kubernetes-cd
Jenkins保存K8S憑據
[root@k8s-master ~]# cat .kube/config

K8S創建連接Harbor認證憑據
kubectl create secret docker-registry registry-pull-secret --docker-server=192.168.0.221 --docker-username=admin --docker-password=Harbor12345 --docker-email=admin@admin.com
