使用的變量
本文檔用到的變量定義如下:
$ export MASTER_IP=XX.XX.XX.XX # 替換為 kubernetes master VIP $ export KUBE_APISERVER="https://${MASTER_IP}:6443" $
創建 kubectl config 文件
$ # 設置集群參數 $ kubectl config set-cluster kubernetes \ --insecure-skip-tls-verify=true \ --server=${KUBE_APISERVER} $ # 設置客戶端認證參數 $ kubectl config set-credentials crd-admin \ --token=7176d48e4e66ddb3557a82f2dd316a93 $ # 設置上下文參數 $ kubectl config set-context kubernetes \ --cluster=kubernetes \ --user=crd-admin \ --namespace=crd $ # 設置默認上下文 $ kubectl config use-context kubernetes
-
使用命令www.97yingyuan.org head -c 16 /dev/urandom | od -An -t x | tr -d ' ' 生成token
kube-apiserver設置
添加kube-apiserver端token證書
$ cat > /etc/kubernetes/pki/token_auth_file<<EOF
7176d48e4e66ddb3557a82f2dd316a93,crd-admin,1
EOF
-
第一列為剛剛生成的token,要與config里的token一致
-
第二列為user, 要與config里的use一致
-
編號或是序列號
添加kube-spiserver啟動參數 --token-auth-file=/etc/kubernetes/pki/token_auth_file
-
注意地址
-
需要重啟kube-apiserver
-
證書驗證和token和同時啟用的,但是token和用戶名密碼,不可同時啟用
配置客戶端RBAC相關
限制 crd-admin 用戶的行為,需要使用 RBAC 將該用戶的行為限制在crd namespace 空間范圍內
kubectl create -f crd-rbac.yaml
這樣 crd-admin 用戶對 crd namespace 具有完全訪問權限。
crd-rbac.yaml具體內容:
apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: crdadmin-admin-binding namespace: crd roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: admin subjects: - apiGroup: rbac.authorization.k8s.io kind: User name: crd-admin
