使用的變量
本文檔用到的變 量定義如下:
$ 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
- 使用指令 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
本文轉自SegmentFault-
配置kubectl用戶端通過token方式通路kube-apiserver