日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何在 Kubernetes 上配置 Jenkins?

發(fā)布時間:2024/8/23 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何在 Kubernetes 上配置 Jenkins? 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

作者 |?Sudip Sengupta

譯者 | 火火醬,責編 | Carol

封圖 | CSDN 下載自視覺中國

在本文中,我們將一起完成在Kubernetes上配置Jenkins的工作。作為一款被廣泛使用的開源CI服務(wù)器,Jenkins提供了數(shù)百個插件,能夠為我們項目的構(gòu)建、部署和自動化提供有力支持。

接下來,我們將:

1.使用minikube創(chuàng)建一個Kubernetes集群(這步不是必須的,如果你已經(jīng)有Kubernetes集群了的話,可以跳過這一步)。

2.為Jenkins創(chuàng)建命名空間和持久卷。

3.使用Helm安裝Jenkins。

4.設(shè)置并運行pipeline,對一個簡單的web應(yīng)用程序進行測試。

先決條件

1.Docker。有關(guān)安裝Docker的詳細信息,請參閱下方“Docker安裝”頁面。

https://docs.docker.com/get-docker/

2.Kubernetes集群。如果沒有運行中的Kubernetes集群的話,請參閱章節(jié)“使用minikube創(chuàng)建Kubernetes集群”

3.HelmCLI。可以按照下方鏈接中的步驟安裝Helm CLI。

https://helm.sh/docs/intro/install/?ref=hackernoon.com

用minikube創(chuàng)建一個Kubernetes集群(可選)

Minikube是一款在計算機上創(chuàng)建單節(jié)點Kubernetes集群的工具。如果沒有Kubernetes集群的話,可以按照以下步驟進行創(chuàng)建:

1.? 安裝minikube :請參照下方“ Install minikube”頁面中的步驟進行安裝。https://kubernetes.io/docs/tasks/tools/install-minikube/?ref=hackernoon.com

2.? 安裝kubectl:請參照下方“Install and Set Up kubectl ”頁面中的步驟進行安裝。

https://kubernetes.io/docs/tasks/tools/install-kubectl/?ref=hackernoon.com

3.? 然后就可以輸入以下命令,創(chuàng)建minikube集群

minikube?startminikube?v1.5.2?on?Darwin?10.15.2Automatically?selected?the?'hyperkit'?driver?(alternates:?[virtualbox])Creating?hyperkit?VM?(CPUs=2,?Memory=2000MB,?Disk=20000MB)?...Preparing?Kubernetes?v1.16.2?on?Docker?'18.09.9'?...Pulling?images?...Launching?Kubernetes?...Waiting?for:?apiserverDone!?kubectl?is?now?configured?to?use?"minikube"

4. ?創(chuàng)建完集群后,可以輸入以下代碼來驗證其狀態(tài):

minikube?status

如果一切順利的話,應(yīng)該會看到:

host:?Running kubelet:?Running apiserver:?Running kubeconfig:?Configured

我們還可以通過使用內(nèi)置的Kubernetes用戶界面來了解集群概況:運行以下命令:

minikube?dashboard Verifying?dashboard?health?...Launching?proxy?...Verifying?proxy?health?...Opening?http://127.0.0.1:56993/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/?in?your?default?browser...

打開的網(wǎng)頁中包含了Kubernetes集群的狀態(tài)信息:

? ? ? ?

我們還可以使用儀表盤(dashboard)與Kubernetes集群進行交互。但是,這就有點超綱了。如果想要了解更多如何使用Kubernetes儀表盤創(chuàng)建或修改Kubernetes資源的信息,可以看看下方“ Web UI (Dashboard)”鏈接。

https://kubernetes.io/docs/tasks/access-application-cluster/web-ui-dashboard/?ref=hackernoon.com

為Jenkins做好準備

按照以下步驟設(shè)置Jenkins:

  • 創(chuàng)建一個命名空間,從而在Kubernetes集群中將Jenkins與其他部署分離開。

  • 創(chuàng)建PersistentVolume以存儲Jenkins數(shù)據(jù),方便我們在重新啟動時保留數(shù)據(jù)。

按照以下步驟為Jenkins設(shè)置好部署環(huán)境:

1. 運行以下命令,創(chuàng)建一個名為jenkins-namespace.yaml的文件:

apiVersion:?v1 kind:?Namespace metadata:name:?jenkins

2. 輸入以下命令以規(guī)范應(yīng)用:

kubectl?apply?-f?jenkins-namespace.yaml namespace/jenkins?created

3. 將以下代碼粘貼到j(luò)enkins-volume.yaml文件中:

apiVersion:?v1 kind:?PersistentVolume metadata:name:?jenkins-pvnamespace:?jenkins spec:storageClassName:?jenkins-pvaccessModes:-?ReadWriteOncecapacity:storage:?10GipersistentVolumeReclaimPolicy:?RetainhostPath:path:?/data/jenkins-volume/

4.輸入以下命令以規(guī)范應(yīng)用:

kubectl?apply?-f?jenkins.volume.yaml

需要注意的是,hostPath使用節(jié)點/data/jenkins-volume/來模擬附屬網(wǎng)絡(luò)存儲。這種方法只適合于開發(fā)和測試階段。在生產(chǎn)階段,需要提供網(wǎng)絡(luò)資源(如Google Compute Engine持久盤,或Amazon Elastic Block Store卷)。

安裝Jenkins

Jenkins部署通常由一個主節(jié)點和一個或多個代理節(jié)點(可選)組成。Jenkins是一個依賴于多個組件的復雜應(yīng)用程序,我們可以通過Helm來簡化Jenkins部署。

(Helm:https://helm.sh/?ref=hackernoon.com)

Helm是Kubernetes的一個包管理器,其打包格式被稱為chart。在GitHub上能夠找到許多社區(qū)開發(fā)的chart。

(GitHub:https://github.com/helm/charts?ref=hackernoon.com)

1. ?創(chuàng)建一個覆蓋文件,并將其作為實參傳給Helm CLI。將 https://raw.githubusercontent.com/kubernetes/charts/master/stable/jenkins/values.yaml中的內(nèi)容粘貼到values.yaml文件中。

然后在你喜歡的文本編輯器中打開values.yaml文件,將以下行:

storageClass:

修改為:

storageClass:?jenkins-pv

2.? 現(xiàn)在,我們可以通過運行helm install命令來安裝Jenkins,并傳遞以下參數(shù):

helm?install?jenkins?-f?values.yaml?stable/jenkins?--namespace?jenkins

會得到類似以下輸出:

NAME:?jenkins LAST?DEPLOYED:?Mon?Dec?30?17:26:08?2019 NAMESPACE:?jenkins STATUS:?deployed REVISION:?1 NOTES: 1.?Get?your?'admin'?user?password?by?running:printf?$(kubectl?get?secret?--namespace?jenkins?jenkins?-o?jsonpath="{.data.jenkins-admin-password}"?|?base64?--decode);echo 2.?Get?the?Jenkins?URL?to?visit?by?running?these?commands?in?the?same?shell:export?POD_NAME=$(kubectl?get?pods?--namespace?jenkins?-l?"app.kubernetes.io/component=jenkins-master"?-l?"app.kubernetes.io/instance=jenkins"?-o?jsonpath="{.items[0].metadata.name}")echo?http://127.0.0.1:8080kubectl?--namespace?jenkins?port-forward?$POD_NAME?8080:8080 3.?Login?with?the?password?from?step?1?and?the?username:?admin

3.? 根據(jù)你環(huán)境的不同,Jenkins可能需要一定時間才能完成初始化,輸入以下命令來檢查Pod狀態(tài):

kubectl?get?pods?--namespace=jenkins

Jenkins安裝后,狀態(tài)應(yīng)像以下輸出這樣為Running:

??kubectl?get?pods?--namespace=jenkins NAME??????????????????????READY???STATUS????RESTARTS???AGE jenkins-645fbf58d6-6xfvj???1/1?????Running???0??????????2m

4.? 需要通過以下命令檢索密碼,才可以訪問Jenkins服務(wù)器:

printf?$(kubectl?get?secret?--namespace?jenkins?jenkins?-o?jsonpath="{.data.jenkins-admin-password}"?|?base64?--decode);echo Um1kJLOWQY

注意,你的密碼應(yīng)該是不一樣的。

5. ?使用以下命令來獲取運行Jenkins的Pod名稱:

export?POD_NAME=$(kubectl?get?pods?--namespace?jenkins?-l?"app.kubernetes.io/component=jenkins-master"?-l?"app.kubernetes.io/instance=jenkins"?-o?jsonpath="{.items[0].metadata.name}")這將創(chuàng)建名為POD_NAME的環(huán)境變量,將其值設(shè)置為運行Jenkins的Pod名稱。

6. ?使用kubectl命令設(shè)置端口轉(zhuǎn)發(fā):

kubectl?--namespace?jenkins?port-forward?$POD_NAME?8080:8080 Forwarding?from?127.0.0.1:8080?->?8080 Forwarding?from?[::1]:8080?->?8080

添加Executor

Jenkins將executor定義為“用于在節(jié)點上執(zhí)行由Pipeline或Pipeline定義的工作槽。一個節(jié)點可以配置零個或多個Executor,與在該節(jié)點上能夠執(zhí)行的Project或Pipeline數(shù)量相對應(yīng)。”

接下來,我們將向Jenkins節(jié)點添加executor。

1. ?瀏覽器打開http://localhost:8080,使用用戶名admin和之前檢索到的密碼進行登錄。

2.? 在左側(cè)導航欄中,選擇Jenkins -> Manage Jenkins -> Manage Node

? ? ?

3.? 選擇“Master?”,然后單擊“Configure”

? ? ? ?

4.? 在?# of executors 輸入框中輸入“1”,然后單擊“Save?”

? ? ? ???

安裝并配置Node.js插件

在本教程中,我們將使用Node.js插件來部署并測試一個用Express.js編寫的簡單web應(yīng)用程序。

按照以下步驟安裝Node.js插件:

1.? 左側(cè)導航欄Jenkins -> Manage Manage Jenkins -> Manage Plugins -> Available Plugins,選擇NodeJS?插件,然后單擊“Install without restart”

?

2. ?安裝完成后,會出現(xiàn)以下界面:

? ? ? ? ? ? ?

3. ?左側(cè)導航欄Jenkins -> Manage Jenkins -> Global Tool Configuration,選擇Add NodeJS。輸入NodeJS安裝名稱,然后選擇一個NodeJS版本,選好后單擊“Save ”。

? ? ? ? ??

HelloWorld 存儲庫

為了展示Jenkins 的工作原理,我們創(chuàng)建了一個監(jiān)聽端口3000并輸出“Hello World!”的簡單Express.js 服務(wù)器。然后我們編寫了一個單元測試,檢查該web 應(yīng)用程序是否能夠按預(yù)期工作。同時,我們還更新了package.json 文件,以便Jenkins 可以通過npm test命令執(zhí)行單元測試。

最后,我們用以下命令創(chuàng)建了一個Jenkinsfile:

pipeline?{agent?anytools?{nodejs?"node"}stages?{stage('Cloning?Git')?{steps?{git?'https://github.com/andreipope/HelloWorld'}}?????stage('Install?dependencies')?{steps?{sh?'npm?install'}}stage('Test')?{steps?{sh?'npm?test'}}?????} }

以上構(gòu)建了一個三階段CD pipeline:

  • 首先,克隆了HelloWorld Git存儲庫

  • 然后,通過運行npm install 安裝了依賴項

  • 最后,執(zhí)行了單元測試

接下來,我們將配置Jenkins以運行該腳本。

創(chuàng)建并運行Pipeline

Pipeline為交付軟件提供了可重復且一致的流程。借助Jenkins,我們可以用Groovy編程語言將pipeline作為DSL腳本來編寫。

按照以下步驟創(chuàng)建和運行pipeline:

1. ?選擇Jenkins -> New Item,然后輸入pipeline名稱(HelloWorld),完成后單擊“OK”。

? ? ? ? ? ? ?

2. ?下一頁,選擇“Pipeline script from SCM”,并將Repository URL 設(shè)置為“https://github.com/andreipope/HelloWorld”。這是一個公共存儲庫,所以我們不需要配置任何證書憑證。

? ? ? ? ? ? ?

Jenkins會自動檢索位于存儲庫根目錄中的Jenkinsfile。

3. ?現(xiàn)在,我們可以手動運行pipeline了:

? ? ? ?

4. ?等它運行完后,應(yīng)該會看到控制臺輸出類似內(nèi)容:

+?npm?test>?HelloWorld@1.0.0?test?/var/jenkins_home/workspace/HelloWorld >?mochaExpressJS?server??Prints?out?Hello?World?(291ms)1?passing?(373ms) [Pipeline]?} [Pipeline]?//?withEnv [Pipeline]?} [Pipeline]?//?stage [Pipeline]?} [Pipeline]?//?withEnv [Pipeline]?} [Pipeline]?//?withEnv [Pipeline]?} [Pipeline]?//?node [Pipeline]?End?of?Pipeline Finished:?SUCCESS

恭喜你!你已經(jīng)成功在Kubernetes配置了Jenkins,并用它測試了一個簡單的web應(yīng)用程序。雖然看起來本文似乎包含了大量信息,但其實這只是Jenkins 和Kubernetes中最為淺顯的內(nèi)容。多嘗試就會打開新世界!

推薦閱讀
  • 不知道路由器工作原理?沒關(guān)系,來這看看!看不懂你捶我 | 原力計劃

  • 秋名山老司機從上車到翻車的悲痛經(jīng)歷,帶你深刻了解什么是 Spark on Hive!| 原力計劃

  • 出道50年+!乘風破浪的編程語言們,能二次翻紅嗎?

  • Service Mesh 如何重定義云原生計算?阿里服務(wù)網(wǎng)格技術(shù)大揭秘

  • 國士無雙:賣掉美國房子,回國創(chuàng)辦姚班,他只為培養(yǎng)一流的程序員!

  • 萬字長文帶你入門 GCN

真香,朕在看了!

總結(jié)

以上是生活随笔為你收集整理的如何在 Kubernetes 上配置 Jenkins?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。