摘要
Jenkins連接低版本的Kubernetes(v1.11以下)時不需要進行驗證,但新版本開啓了https驗證,需要爲Jenkins製作訪問apiserver的證書。
安裝Kubernetes插件
登陸Jenkins後點擊系統管理->插件管理->可選插件
在右上角搜索框中輸入kubernetes,在下方篩選出來的結果中找到“Kubernetes”後,點擊直接安裝:
點擊下方“安裝完成後重啓(空閒時)”按鈕,重啓Jenkins後生效。
重新登陸後點擊“系統管理->系統配置”,拉到最下方選擇“新增一個雲”,如下:
點擊跳轉後就會出現Kubernetes的配置界面,進行配置:
沒配置證書前的連接測試是會失敗的,因爲新版本的apiserver接口都是通過https去訪問的,所以我們需要在k8s的master節點上爲jenkins服務器生成一個credential。
創建證書
登陸master節點,輸入以下命令安裝cfssl,此工具生成證書非常方便, pem證書與crt證書,編碼一致可直接使用:
wget https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
chmod +x cfssl_linux-amd64
mv cfssl_linux-amd64 /usr/local/bin/cfssl
wget https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64
chmod +x cfssljson_linux-amd64
mv cfssljson_linux-amd64 /usr/local/bin/cfssljson
wget https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
chmod +x cfssl-certinfo_linux-amd64
mv cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo
準備簽名證書請求
vim admin-csr.json
{
"CN": "admin",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "HangZhou",
"L": "XS",
"O": "system:masters",
"OU": "System"
}
]
}
證書請求中的O 指定該證書的 Group 爲 system:masters
而 RBAC 預定義的 ClusterRoleBinding 將 Group system:masters 與 ClusterRole cluster-admin 綁定,這就賦予了該證書具有所有集羣權限 。
創建證書和私鑰
cfssl gencert -ca=/etc/kubernetes/pki/ca.crt -ca-key=/etc/kubernetes/pki/ca.key --profile=kubernetes admin-csr.json | cfssljson -bare admin
#會生成如下三個文件
admin.csr
admin-key.pem
admin.pem
然後生成pkc證書,通過openssl來將證書轉換爲pkc格式:
openssl pkcs12 -export -out ./jenkins-admin.pfx -inkey ./admin-key.pem -in ./admin.pem -passout pass:secret
然後將生成的jenkins-admin.pfx下載至桌面準備上傳
配置Jenkins認證
使用如下命令查看服務證書key:
root@k8s-master:~# cat /etc/kubernetes/pki/ca.crt
將該內容複製到Jenkins界面的“Kubernetes服務證書key”的文本框中,如下:
然後點擊憑據後面的添加,將剛剛生成的證書進行上傳,如下:
選擇文件jenkins-admin.pfk:
輸入密碼secret,後面內容可以不填寫,點擊添加即可:
選擇 憑據,點擊連接測試。
出現 Connection test successful 表示連接成功。
添加jenkins地址:
點擊保存即可
本文參考鏈接:
參考文檔