Kubernetes部署Jenkins

1.下載相應文件

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上一個問答而來,現在找不了鏈接了,但是依然感謝


2.部署Jenkins

kubectl create -f .


3.查看 Pod 和 Services

# 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。


4.查看Jenkins密鑰並開始安裝Jenkins

# kubectl -n kube-ops exec -it jenkins-78d577d47-pbcqv cat /var/jenkins_home/secrets/initialAdminPassword
f547dd8a21384640ba0bfe4282912bf7

Jenkins01.PNG


5.安裝插件

Jenkins02.PNG


6.創建管理員用戶

Jenkins03.PNG


7.配置Jenkins URL並保存

Jenkins04.PNG


8.點擊“開始使用Jenkins”使用Jenkins

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章