配置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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM