1.下載相應文件
node
mkdir jenkins && cd jenkins wget https://raw.githubusercontent.com/zhijiansd/ansible-k8s/master/addons/jenkins/jenkins-rbac.yaml wget https://raw.githubusercontent.com/zhijiansd/ansible-k8s/master/addons/jenkins/jenkins.yaml
注:這裏的RBAC文件是參考stackoverflow上一個問答而來,如今找不了連接了,可是依然感謝git
2.部署Jenkins
github
kubectl create -f .
3.查看 Pod 和 Servicesweb
# kubectl -n kube-ops get pod NAME READY STATUS RESTARTS AGE jenkins-78d577d47-pbcqv 1/1 Running 0 1m # kubectl -n kube-ops get service jenkins NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE jenkins LoadBalancer 10.244.1.201 <pending> 8080:37899/TCP,50000:36476/TCP 2m
注:使用NodeIP:37899便可進入Jenkins的web界面,而在這裏我配置了traefik。docker
4.查看Jenkins密鑰並開始安裝Jenkinsshell
# kubectl -n kube-ops exec -it jenkins-78d577d47-pbcqv cat /var/jenkins_home/secrets/initialAdminPassword f547dd8a21384640ba0bfe4282912bf7
5.安裝插件
api
6.建立管理員用戶bash
7.配置Jenkins URL並保存dom
8.點擊「開始使用Jenkins」使用Jenkinside
9.Jenkins界面以下
10.安裝 Kubernetes 和 GitLab 插件
11.單擊【系統管理】-> 【系統設置】,拖到最後找到【雲】,而後點擊【新增一個雲】
12.配置kubernetes
配置註釋:
name: kubernetes(默認)
kubernetes 地址: https://kubernetes.default.svc.cluster.local(這裏使用kube-dns,也能夠配置apiserver地址)
Jenkins 地址: http://jenkins:8080(這裏配置的Jenkins是service名,也能夠直接配置http://ip:port)
Jenkins 通道: jenkins:50000(這裏也是配置的service:port,也能夠配置ip:port)
這裏沒有添加憑據,由於已經在rbac文件中作了相關配置。如使用二進制包等集羣外安裝的Jenkins,則須要添加憑據。
點擊【Test Connection】,如出現 Connection test successful 證實 Jenkins 已經能夠和 Kubernetes 創建鏈接了。
13.配置Jenkins slave
配置註釋:
名稱: 如 --> jenkins-slave
標籤列表: 如 --> auto
用法: 儘量的使用這個節點
容器列表:
容器模板:
名稱: jnlp
Docker鏡像: 192.168.100.100/jenkinsci/jnlp-slave:3.23-1-alpine
工做目錄: /home/jenkins(默認)
命令參數: '${computer.jnlpmac} ${computer.name}'
分配僞終端: true(默認)
14.構建一個流水線(pipeline)項目
測試腳本以下:
def label = "mypod-${UUID.randomUUID().toString()}" podTemplate(label: 'mypod', cloud:'kubernetes') { node('mypod') { stage('Run shell') { sh 'echo hello world' } } }
注:這裏的 cloud 要與前面配置的雲的名稱相同。
更多詳情: https://github.com/jenkinsci/kubernetes-plugin
15.點擊【當即構建】進行構建
16.構建完成後顯示以下(藍色爲成功,紅色爲失敗)
17.點擊相應構建查看<控制檯輸出>
18.指定使用私有 slave 節點鏡像構建流水線(pipeline)項目
podTemplate(label: 'mypod', cloud: 'kubernetes', containers: [ containerTemplate( name: 'jnlp', image: '192.168.100.100/jenkinsci/jnlp-slave:3.23-1-alpine', alwaysPullImage: true, args: '${computer.jnlpmac} ${computer.name}'), ], volumes: [ hostPathVolume( mountPath: '/var/run/docker.sock', hostPath: '/var/run/docker.sock'), ],) { node('mypod') { stage('Run shell') { sh 'echo hello world' } } }
19.點擊相應構建查看<控制檯輸出>,這時候使用的就是自定義的slave鏡像了
20.單擊【系統管理】-> 【系統設置】,配置鏈接GitLab,點擊【Test Connection】,出現Success即爲鏈接成功
配置註釋:
Connection name: gitlab
Gitlab host URL: http://gitlab(此處gitlab使用的是http://service,也能夠直接配置IP)
Credentials: 【Add】 -> 【Jenkins】 ->
Jenkins憑據提供者:Jenkins
添加憑據:
Domain: 全局憑據(默認)
類型: GitLab API token
範圍: 全局(默認)
API token:********
在GitLab用戶下建立 API token,點擊【Create personal access token】建立令×××(只存在一次,記得保存)
配置註釋:
Name: jenkins(隨意配置)
Expires at: 2028-08-08(隨意配置)
Scopes: api(必須勾選)
21.使用 Jenkins "構建一個自由風格的軟件項目"
A.在「General」下勾選「限制項目的運行節點」並填寫slave標籤
B.在「源碼管理」下配置「Git」
配置註釋:
Git:
Repository URL: 如 http://gitlab/wangzhijian/abc.git
Credentials:
Add:
Domain: 全局憑據
類型: Username with password
範圍: 全局
Username: wangzhijian
Password: ******
注:如配置正確不會有任何提示,配置錯誤會有提示(通常來講是憑據錯誤)
C.構建觸發器
配置註釋:
勾選"Build when a change is pushed to GitLab. GitLab webhook URL"
高級:
Allowed branches:
Filter branches by regex: true
Target Branch Regex: master
Secret token: 點擊 Cenerate 進行建立,而後複製 token 至 gitlab
進入相關項目「Settings」 --> "Integrations" -->
URL: http://jenkins/project/abc (這裏配置的是service,並非構建觸發器上的https://jenkins.zhi.io/project/abc)
Secret Token: 這裏配置就是上面Jenkins生成是secret token(Jenkins工程和GitLab項目的token必須同樣才能拉取)
D.構建,選擇"執行shell"並寫入命令(注:gitlab下我寫了一個hello.sh的shell)
E.點擊"當即構建"進行構建,若是構建成功即會顯示"Finished: SUCCESS"