真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

【Kubernetes系列】第8篇CI/CD之全流程實踐

云計算 前言 本實踐中已經的示例代碼及jenkins-agent鏡像已經推送歸檔至github,-->傳送門 注意本實踐中均為內網數(shù)據(jù),你測試時一定要改為自己的環(huán)境的有效數(shù)據(jù)。 由于本實踐涉及組件較多,若有操作不明確的話,你可以后臺留言,我們一起完善。 具體操作時若有不清楚,或是錯誤可以留言,大家一起解決。 1. 準備基礎數(shù)據(jù)

配置gitlab
1) 創(chuàng)建項目
2)上傳示例代碼

創(chuàng)新互聯(lián)公司專注于昂仁網站建設服務及定制,我們擁有豐富的企業(yè)做網站經驗。 熱誠為您提供昂仁營銷型網站建設,昂仁網站制作、昂仁網頁設計、昂仁網站官網定制、微信小程序服務,打造昂仁網絡公司原創(chuàng)品牌,更為您提供昂仁網站排名全網營銷落地服務。

: 本次示例使用的gitlab項目地址為:http://gitlab.hanker.com/colynn/hanker-hello.git

配置harbor

1) 創(chuàng)建項目, 用于存儲構建的鏡像
: 本次示例使用的harbor地址為 10.0.0.185:5000/hanker/hanker-hello:v1

jenkins 驗證信息

1)添加 gitlab 帳號信息

操作指引:【Credentials】-> 【System】-> 【Global credentials】-> 【Add Credentials】

2)harbor 信息

操作指引:【Credentials】-> 【System】-> 【Global credentials】-> 【Add Credentials】

3) k8s namespace驗證信息

在你的k8s master節(jié)點上執(zhí)行如下操作:

1.創(chuàng)建serviceaccount

$ kubectl -n devops create serviceaccount jenkins-robot

命令輸出:

serviceaccount/jenkins-robot created

2.角色綁定

$ kubectl -n devops create rolebinding jenkins-robot-binding --clusterrole=cluster-admin --serviceaccount=devops:jenkins-robot

命令輸出:

rolebinding.rbac.authorization.k8s.io/jenkins-robot-binding created

3.獲取 ServiceAccount

$ kubectl -n devops get serviceaccount jenkins-robot -o go-template --template=\'{{range .secrets}}{{.name}}{{\\n}}{{end}}\'

jenkins-robot-token-n8w6b

4.基于base64解碼 ServiceToken

$ kubectl -n devops get secrets jenkins-robot-token-n8w6b -o go-template --template \'{{index .data token}}\' | base64 --decode

命令輸出:

eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJkZXZvcHMiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlY3JldC5uYW1lIjoiamVua2lucy1yb2JvdC10b2tlbi1uOHc2YiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJqZW5raW5zLXJvYm90Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQudWlkIjoiOTcyZTY0OGYtMTYxZC00NmM5LWI0ZjgtYjFkNTdlOWY4NTBjIiwic3ViIjoic3lzdGVtOnNlcnZpY2VhY2NvdW50OmRldm9wczpqZW5raW5zLXJvYm90In0.ArQvcaEqCaeU1ZcJ6nOC5rLaTZr_vLDrpLCt87asltMUWj2gSli_mXUTrl09hBnBDXI3A1D4rJXHKLHjIAA4nN8qRIRGbpqSNzDwmqJr-jmmmWWZFrZ3n3Al9-13KJnNOK8pcWr70rt3Rsigt4B6CIQ0-ZLK8BZhvROJSifeOfJ6xe2KBqdXBv1ccZZZfEhPLgGbaR5yWm5jLvOMr2MQiPDrZoHOEkcMt-C0xipytOp4sJCJ4bQhb-UoMu1owYydxbd6O7xO71fvqP_bMDpZXC601nA2ggK7h-vi6CJffHv5MM59q8X_DWe1NnZS6KXiMmkXqAmBn10Yu20PNj-kjg

5.添加 Secret text驗證信息

操作指引:【首頁】->【Credentials】-> 【System】-> 【Global credentials】-> 【Add Credentials】-> 選擇【Secret text】類型

然后將上一步 解碼的結果 更新至 Secret, Pipeline 中

2. 如何創(chuàng)建 jenkins pipeline 1. 創(chuàng)建jenkins pipeline item

操作指引:【首頁】->【New Item】

2. pipeline script 步驟說明

: pipeline主要包含三個階段(檢出代碼、制作鏡像、部署服務),下面跟大家解釋下,如何編寫pipeline, 借助Pipeline Syntax生成的只是部分代碼,你可以根據(jù)語言規(guī)范將其完善。

1.階段1,檢出代碼

操作指引:【首頁】->【hanker-hello-demo】-> 【Pipeline Syntax】

: 本實踐中選取的 git: Git類型,當然你也可以選擇 checkout: Check out from version control

獲取到該步驟的腳本

git credentialsId: \'gitlab-project-auth\', url: \'http://gitlab.hanker.com/colynn/hanker-hello.git\'

2.階段2,構建鏡像
操作指引:類似于 階段1,

完善獲取該步驟腳本

script {
    withDockerRegistry(credentialsId: \'harbor-auth\', url: \'http://10.0.0.185:5000\') {
        def customImage =  docker.build(10.0.0.185:5000/devops/hanker-hello:v1)
        customImage.push()
    }
}

: 支持本階段需要jenkins-agent鏡像里包含docker命令。

3.階段3. 部署服務

參考: jenkins kubernetes cli plugin

: 支持本階段需要jenkins-agent鏡像里包含kubectl命令。

3. 設置 pipeline

:

General/ Build Triggers/ Advanced Project Options 這三塊你可以根據(jù)自己需要設置,將各階段的腳本合并,更新至 Pipline -> Script內。

合并后的pipeline腳本內容如下:

pipeline {
    agent any
    stages {
        stage(\'checkout\') {
            steps {
                git credentialsId: \'gitlab-project-auth\', url: \'http://gitlab.hanker.com/colynn/hanker-hello.git\'          }
        }

        stage(\'docker-publish\') {
            steps{
                script {
                    withDockerRegistry(credentialsId: \'harbor-auth\', url: \'http://10.0.0.185:5000\') {
                        def customImage =  docker.build(10.0.0.185:5000/devops/hanker-hello:v1)
                        customImage.push()
                    }
                }
            }
        }

        stage(\'application-deploy\') {
            steps {
                withKubeConfig([credentialsId: \'5a5517f3-3d38-459d-bafc-12b55beeb588\', serverUrl: \'https://10.0.0.182:6443\']) {
                    sh \'/usr/bin/kubectl apply -f k8s-setup.yml\'
                }
            }
        }
    }
}

3. 觸發(fā)構建

4. 結果確認

1.確認 jenkina-agent 啟動狀態(tài);

$ kubectl -n devops get pods |grep jnlp
jnlp-sh8zl                                 1/1     Running   0          14s

// 查看jenkins-agent pod日志
$ kubectl -n devops logs -f [jenkins-agent-pod-name]

: 如果長時間沒有啟動jenkins-agent, 可以確認下集群內是否有足夠的資源。

2.確認pipeline 執(zhí)行狀態(tài);

3.確認harbor鏡像倉庫里是否已經有新推送的鏡像


: harbor里的項目是需要你先創(chuàng)建好的,不然推送時會報錯。

4.確認部署的服務狀態(tài)

k8s master節(jié)點上執(zhí)行如下操作:

$ kubectl -n devops get pod,deployment,svc,ingress |grep hanker-hello 

pod/hanker-hello-5b7586f86d-5j7kk              1/1     Running   0          173m

deployment.extensions/hanker-hello              1/1     1            1           3h8m
service/hanker-hello-svc          ClusterIP   10.233.22.19            8080/TCP             3h8m
ingress.extensions/hanker-hello-ingress              hanker-hello-demo.dev.hanker.net                   80      3h8m

附錄 1.自定義jenkins-agent鏡像
## 基于 https://github.com/Kubernetes-Best-Pratice/jenkins-jnlp-agent.git

$ git checkout  https://github.com/Kubernetes-Best-Pratice/jenkins-jnlp-agent.git

$ cd jenkins-jnlp-agent
$ docker build .
$ docker tag tag-name custom-private-repository-addr

: 你也可以基于基礎鏡像創(chuàng)建自定義的鏡像

2.可以做的更完善 配置webhook, 自動觸發(fā)jenkins job; 當前我們實踐時構建的鏡像版本使用的是固定的, 你是否可以將其替換為依賴pipeline環(huán)境變量或是傳參的形式,將其變是更有意義; 上一篇文章中在設置【配置Kubernetes Pod Template】時,我們提到可以掛載主機或是網絡共享存儲,你是否可以通過這個將你的構建快起來; 我們的示例代碼使用的go, 直接是鏡像內打包,如何更好的就好的其他語言的構建,你可以參考Using Docker with Pipeline; 你想過如何下載構建過程中的產物嗎,等等。 3. 參考鏈接 : https://github.com/jenkinsci/kubernetes-cli-plugin/blob/master/README.md 下載kubectl: https://docs.docker.com/ee/ucp/user-access/kubectl/
文章標題:【Kubernetes系列】第8篇CI/CD之全流程實踐
網站鏈接:http://weahome.cn/article/cjjhod.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部