5ol.cc 发表于 2018-1-5 18:39:59

配置kubectl客户端通过token方式访问kube-apiserver

使用的变量
  本文档用到的变量定义如下:
  

$ 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
页: [1]
查看完整版本: 配置kubectl客户端通过token方式访问kube-apiserver