KubeSphere 使用外置 Jenkins
KubeSphere 使用外置 Jenkins
相信很多 KubeSphere 用戶之前都是使用 Jenkins 作為 CI/CD 工具,但是KubeSphere 默認會安裝一個新的 Jenkins,無法直接使用已有的作為 CI/CD 引擎。這對于希望能上生產,但是又不方便遷移已有流水線的用戶來說,還是有很多不方便的地方。本文的目標,就是給大家提供一個讓 KubeSphere 可以使用外置 Jenkins 的方案。
限制
該方案并不是一個完美的終極方案,因此,在你開始使用外置 Jenkins 之前,請先評估下面的限制:
- KubeSphere 上已有的流水線將會無法使用
- 如果你已有的 Jenkins 中安裝了不兼容的插件,可能會導致部分功能無法使用
- 不會把舊的 Jenkins 上的流水線遷移到 KubeSphere 上
鑒于方案可能會有如上所屬的風險,請不要直接在你的生產環境上操作!另外,請確保你有一個備份環境,并且在備份環境上進行如下的方案實施。
實驗環境
實驗環境:
CentOS Linux release 7.9.2009 (Core)安裝依賴:
yum update -y && yum install wget curl vim bash-completion -y安裝 KubeSphere
為了不影響已有的業務,我們最好還是找個空白的環境,安裝一個新的 KubeSphere 會比較穩妥。下面,我們首先把安裝工具 kk 下載好。值得一提的是,KubeSphere 社區為了能夠讓用戶更方便地體驗到最新交付的 feature 或者修復的缺陷,提供了每日構建版,也就是所謂的:nightly build。想要體驗找個 nightly build 最好的辦法是使用最新開發中的的 kk。
需要注意的是,下面的鏈接是我個人編譯出來的二進制文件,并不是社區發布的正式版本,僅供學習使用。
wget https://github.com/LinuxSuRen/kubekey/releases/download/v1.0.4/kubekey-v1.0.4-linux-amd64.tar.gztar xzvf kubekey-v1.0.4-linux-amd64.tar.gzmv kubekey /usr/local/bin/kk為了方便使用,我們可以先把命令行自動補全配置好:
source <(kk completion --type bash)相信本文的讀者大部分是在國內,訪問某些網絡可能會有問題,讓我們添加一個環境變量來解決網絡的問題:
export KKZONE=cnkk create cluster --with-kubesphere nightly-20210103 -y你可以把上面命令的日期修改為昨天,或者,讓命令行自動補全幫你。
開啟 Devops 組件
你可以按照社區官方文檔中給出的步驟來操作,如果你不想再看更多的文檔的話,可以試試通過命令行來一鍵開啟。
安裝 kubectl 插件:
wget https://github.com/LinuxSuRen/ks/releases/download/v0.0.11/kubectl-ks-linux-amd64.tar.gztar -xzvf kubectl-ks-linux-amd64.tar.gzmv kubectl-ks /usr/local/bin/啟用 DevOps:
kubectl ks com enable devops等待組件啟動完成:
kubectl logs -n kubesphere-system deploy/ks-installer -f --tail=50當你看到類似如下的輸出時,就說明組件啟用成功:
######################################################## Welcome to KubeSphere! ######################################################## Console: http://192.168.0.6:30880Account: adminPassword: P@88w0rd NOTES: 1. After you log into the console, please check the monitoring status of service components in "Cluster Management". If any service is not ready, please wait patiently until all components are up and running. 2. Please change the default password after login. #####################################################https://kubesphere.io 2021-01-05 10:40:32#####################################################外置 Jenkins
前面我們已經做了很多的準備工作,現在終于開始動手集成外置 Jenkins 了。
假設,你的外置 Jenkins 是通過這個命令安裝的(如果你正好有一個可以做測試的外置 Jenkins 的話,可以跳過下面的步驟):
jcli center start -m docker --c-user root --image jenkinszh/jenkins-k8s --version 2.249.1 --sys hudson.security.csrf.DefaultCrumbIssuer.EXCLUDE_SESSION_ID=true請根據官方文檔配置好 jcli 。
基本上,你需要做兩件事:下載、通過命令來配置連接信息:
jcli config gen如果你的環境直接訪問互聯網的話,安裝 KubeSphere 所需要的插件就非常簡單:
git clone https://github.com/kubesphere/ks-jenkinsjcli plugin install --formula ks-jenkins/formula.yaml安裝插件可能需要花點時間,具體依賴于你的網絡帶寬。jcli 可以通過讀取 YAML 配置文件 ks-jenkins/formula.yaml 安裝所有的插件。
接下來,需要手動配置 Jenkins。你需要關注兩件事情:配置 KubeSphere Jenkins Auth 并啟用,提供 KubeSphere API Gateway,也就是 ks-apiserver 所暴露的端口。另一個重要的部分是 Kubernetes 配置,請確保它至少包含這些 podTemplates base, nodejs, maven and go 。你可以從 KubeSphere 默認安裝的 Jenkins 中的 podTemplates 了解到如何配置。
當你完成了上面的配置,而且所有插件都已經安裝成功后,重啟 Jenkins。重啟的方法有很多,但還是提供一個比較優雅的吧:
jcli restart -b最后,修改 configmap kubesphere-system/kubesphere-config 中 Jenkins 的連接信息。從 data.kubesphere.yaml 中找到 devops.host ,把它修改為你期望使用的 Jenkins 的地址。為了讓修改生效,我們還需要重啟 ks-apiserver ,命令為:
kubectl rollout restart -n kubesphere-system deploy ks-apiserver完成上面的步驟后,創建一個新的流水線,你就會發現已經關聯到了新的 Jenkins 上了。
寫在最后
安裝一個全新的環境,通常是一件相對比較容易的事情。但是,想要平滑地把已有的組件做遷移的話,則可能會遇到各種問題。非常歡迎看到本文的讀者和我一起解決上面提到的幾個限制因素。
參考鏈接:
https://my.oschina.net/jenkinszh/blog/4894174
總結
以上是生活随笔為你收集整理的KubeSphere 使用外置 Jenkins的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: k8s API编程:kubebuilde
- 下一篇: yum安装k8s集群(单master两个