kubernetes-jenkins CI/CD平台(十八)


軟件環境: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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM