Kubernetes部署Jenkins

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

Jenkins01.PNG


5.安裝插件
api

Jenkins02.PNG


6.建立管理員用戶bash

Jenkins03.PNG


7.配置Jenkins URL並保存dom

Jenkins04.PNG


8.點擊「開始使用Jenkins」使用Jenkinside

Jenkins05.PNG


9.Jenkins界面以下

Jenkins06.PNG


10.安裝 Kubernetes 和 GitLab 插件

Jenkins07.PNG

Jenkins08.PNG


11.單擊【系統管理】-> 【系統設置】,拖到最後找到【雲】,而後點擊【新增一個雲】

Jenkins09.PNG


12.配置kubernetes

Jenkins10.PNG

配置註釋:

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

Jenkins11.PNG

Jenkins12.PNG

配置註釋:

名稱: 如 --> 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)項目

Jenkins13.PNG

Jenkins14.PNG


測試腳本以下:

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.點擊【當即構建】進行構建

Jenkins15.PNG


16.構建完成後顯示以下(藍色爲成功紅色爲失敗)

Jenkins16.PNG


17.點擊相應構建查看<控制檯輸出>

Jenkins17.PNG

Jenkins18.PNG


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鏡像了

Jenkins21.PNG


20.單擊【系統管理】-> 【系統設置】,配置鏈接GitLab,點擊【Test Connection】,出現Success即爲鏈接成功

Jenkins31.PNG

配置註釋:

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】建立令×××(只存在一次,記得保存)

27.PNG

配置註釋:

Name: jenkins(隨意配置)

        Expires at: 2028-08-08(隨意配置)

Scopes: api(必須勾選)


21.使用 Jenkins "構建一個自由風格的軟件項目"

Jenkins22.PNG


A.在「General」下勾選「限制項目的運行節點」並填寫slave標籤

Jenkins23.PNG


B.在「源碼管理」下配置「Git」

Jenkins27.PNG

配置註釋:

Git: 

   Repository URL: 如 http://gitlab/wangzhijian/abc.git

   Credentials: 

     Add: 

     Domain: 全局憑據

        類型: Username with password 

            範圍: 全局

            Username: wangzhijian

            Password: ******


注:如配置正確不會有任何提示,配置錯誤會有提示(通常來講是憑據錯誤)


C.構建觸發器

Jenkins28.PNG

Jenkins29.PNG

配置註釋:

勾選"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必須同樣才能拉取)

捕獲.PNG

捕獲.PNG


D.構建,選擇"執行shell"並寫入命令(注:gitlab下我寫了一個hello.sh的shell)

Jenkins30.PNG


E.點擊"當即構建"進行構建,若是構建成功即會顯示"Finished: SUCCESS"

Jenkins26.PNG

相關文章
相關標籤/搜索