使用kubernetes-plugin插件連接k8s的認證方式


一、使用 rbac授權,token的方式連接k8s

1、rbac授權

Jenkins通過kubernetes-plugin對k8s進行操作,需要在k8s內提前進行rbac授權。為方便管理,我們為其綁定cluster-admin角色。當然也可以進一步縮小使用權限。

#創建serviceaccounts
kubectl create sa jenkins
#對jenkins做cluster-admin綁定
kubectl create clusterrolebinding jenkins --clusterrole cluster-admin --serviceaccount=default:jenkins

2、獲取token

kubernetes-plugin與k8s連接時,並不是直接使用serviceaccount,而是通過token。因此我們需要獲取serviceaccount:jenkins對應的token。

# 1.查看sa
[root@k8s-master updates]# kubectl get sa -n default
NAME      SECRETS   AGE
default   1         116d
jenkins   1         20s
# 2.查看secret
[root@k8s-master updates]# kubectl describe sa jenkins -n default
Name:                jenkins
Namespace:           default
Labels:              <none>
Annotations:         <none>
Image pull secrets:  <none>
Mountable secrets:   jenkins-token-kgxch
Tokens:              jenkins-token-kgxch
Events:              <none>
3.獲取token
[root@k8s-master updates]# kubectl describe secrets jenkins-token-kgxch -n default
Name:         jenkins-token-kgxch
Namespace:    default
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: jenkins
              kubernetes.io/service-account.uid: 07d8890d-12cc-11eb-8ca1-000c29824e3f

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1025 bytes
namespace:  7 bytes
token:         ####這里就是所需的token

3.添加認證

獲取到的token解密值,需要在Jenkins master中添加為secret text類型的secret,才能被kubernetes-plugin使用。

 

 

 

 4、kubernetes plugin與k8s連接配置

  • kubernetes地址:為k8s api server地址,通過調用apiserver操作k8s。可通過以下來查看:
    • [root@k8s-master images]# kubectl cluster-info
      Kubernetes master is running at https://192.168.0.211:6443
      KubeDNS is running at https://192.168.0.211:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
  • 憑據:kubernetes plugin可以通過key或憑據的方式與k8s進行認證,方便起見,我們采用憑據的方式,使用我們此前創建的secret text憑據,此時我們需要禁用HTTPS證書檢查
  • kubernetes命令空間:使用默認的default,同時serviceaccount也在此空間內。

點擊連接測試,可以看到k8s已經連接成功

 二、使用證書的方式連接k8s

1、通過解碼獲取kubectl使用的admin證書

查看 /root/.kube/config文件,文件中有三個值 certificate-authority-data 、client-certificate-data 、 client-key-data 

解碼它們獲得證書 ,注意將上面的值替換稱自己的一大長傳字符串

echo certificate-authority-data | base64 -d > ca.crt
echo client-certificate-data | base64 -d > client.crt
echo client-key-data | base64 -d > client.key

根據這三個文件生成一個PKCS12格式的客戶端證書文件

openssl pkcs12 -export -out cert.pfx -inkey client.key -in client.crt -certfile ca.crt

注意生成證書的時候,一定要填寫密碼,后面會用到

 

 2、添加認證

將生成的  cert.pfx  上傳到憑證

 

 3、kubernetes plugin與k8s連接配置

將ca.crt中的內容填寫到 Kubernetes server certificate key 字段

 

 完成后點擊測試連接查看是否成功

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM