要實如今 Jenkins 中的構建工做,能夠有多種方式,咱們這裏採用比較經常使用的 Pipeline 這種方式。Pipeline,簡單來講,就是一套運行在 Jenkins 上的工做流框架,將原來獨立運行於單個或者多個節點的任務鏈接起來,實現單個任務難以完成的複雜流程編排和可視化的工做。node
在開始咱們的工做以前,讓咱們花一點時間分析開始使用Jenkins使用Kubernetes容器所需的工做流。Kubernetes對於開發者來講是一個驚人的開源容器編排引擎。Kubernetes是由Google發起的,這使Kubernetes在使用多個開源容器項目方面有一個驚人的優點。默認狀況下,Docker更受Kubernetes的使用者支持和青睞。使用Docker容器的工做流程以下圖所示:git
參考文檔:http://www.javashuo.com/article/p-nmcdkhmi-mt.htmlgithub
gogs代碼管理 git服務器安裝參考:https://blog.csdn.net/xiegh2014/article/details/81434421 Harbor鏡像管理 持久化存儲 NFS安裝 一、使用yum源安裝 yum -y install nfs-utils -y vim /etc/exports /data/qas *(rw,no_root_squash) 二、啓動nfs服務 開機啓動 systemctl enable rpcbind.service systemctl enable nfs-server.service 啓動nfs服務 systemctl start rpcbind.service systemctl start nfs-server.service 三、檢查 NFS 服務器端是否有目錄共享 showmount -e 192.168.58.110 GlusterFS集羣安裝參考文檔:
建立namespace命名空間: kubectl create namespace kube-jenkins 建立PVC對象: kubectl create -f jenkins-pvc.yaml 建立rbac相關的資源對象: kubectl create -f jenkins-rbac.yaml 建立Jenkins服務: kubectl create -f jenkins.yaml
node { stage(' git倉庫拉代碼') { // for display purposes sh "echo 'git checkout'" } stage('構建代碼') { sh "echo 'Build...'" } stage('自動化測試') { sh "echo 'deploy...'" } stage('發佈代碼K8S') { sh "echo 'deploy...'" } }
連接:https://share.weiyun.com/5pCfEWm 密碼:kq3dwn 連接:https://share.weiyun.com/5pf0e0G 密碼:pejdye 連接:https://share.weiyun.com/5m4ADMk 密碼:x4uh4c 連接:https://share.weiyun.com/5FFbM3B 密碼:y4fcff
openssl pkcs12 -export -out admin.pfx -inkey admin-key.pem -in admin.pem -certfile ca.pemvim
Jenkins 安裝完成了,接下來咱們不用急着就去使用,咱們要了解下在 Kubernetes 環境下面使用 Jenkins 有什麼好處。服務器
咱們知道持續構建與發佈是咱們平常工做中必不可少的一個步驟,目前大多公司都採用 Jenkins 集羣來搭建符合需求的 CI/CD 流程,然而傳統的 Jenkins Slave 一主多從方式會存在一些痛點,好比:架構
正由於上面的這些種種痛點,咱們渴望一種更高效更可靠的方式來完成這個 CI/CD 流程,而 Docker 虛擬化容器技術能很好的解決這個痛點,又特別是在 Kubernetes 集羣環境下面可以更好來解決上面的問題,下圖是基於 Kubernetes 搭建 Jenkins 集羣的簡單示意圖:框架
jnlp-slave pod 沒法刪除
若是 jnlp-slave pod建立失敗,它會不斷的嘗試建立新的pod,並試圖鏈接jenkins,一段時間後,就會創造不少失敗的jnlp-slave pod。若是遇到這種狀況,需 要儘早中斷任務並刪除失敗的pod。(須要手動刪除jnlp-slave pod)ide