k8s 1.19.1创建用户

时间:2020-09-21 12:14:51   收藏:0   阅读:50
k8s没有用户管理组件,通过提取client传递过来的证书中的CN为用户名,O字段为组名

安装cfssl

https://pkg.cfssl.org/R1.2/cfssl_linux-amd64
https://pkg.cfssl.org/R1.2/cfssl-certinfo_linux-amd64
https://pkg.cfssl.org/R1.2/cfssljson_linux-amd64

cp cfssl_linux-amd64  /usr/local/bin/cfssl
cp cfssl-certinfo_linux-amd64 /usr/local/bin/cfssl-certinfo
cfssljson_linux-amd64 /usr/local/bin/cfssljson
chmod +x  /usr/local/bin/cfssl*

新建用户ceph的证书

cfssl  gencert -ca=/etc/kubernetes/pki/ca.crt     -ca-key=/etc/kubernetes/pki/ca.key    -profile=kubernetes ./ceph.json | cfssljson -bare ceph

cfssl  gencert -ca=/etc/kubernetes/pki/ca.crt     -ca-key=/etc/kubernetes/pki/ca.key     ./ceph.json | cfssljson -bare ceph

到此已经为ceph用户生成了证书

创建名为ceph的namespace,ceph可能完全管理这个namespace

这里将将cla***ole的admin作rolebinding绑定至ceph,这个命令需要在能管理k8s的用户下执行

kubectl create  rolebinding ceph-admin-binding     --clusterrole=admin     --user=ceph     --namespace=ceph

验证证书

centos7中的curl 7.29.0 似乎不能将ceph.pem的公有证书提交到api,造成api认为是匿名访问,curl 7.64.0可以正常访问api

curl    -X GET  --cert ceph.pem --key ceph-key.pem --cacert cacrt  https://192.168.254.99:6444/api/v1/namespaces/ceph/pods

生成config

export KUBE_APISERVER=https://192.168.254.99:6444

kubectl config set-cluster kubernetes   --certificate-authority=/etc/kubernetes/pki/ca.crt   --embed-certs=true   --server=${KUBE_APISERVER}   --kubeconfig=ceph.kubeconfig
kubectl config set-credentials ceph   --client-certificate=ceph.pem   --client-key=ceph-key.pem   --embed-certs=true   --kubeconfig=ceph.kubeconfig
kubectl config set-context ceph \ #这个是上下文名称,可随意取
  --cluster=kubernetes   --user=ceph   --namespace=ceph   --kubeconfig=ceph.kubeconfig
kubectl config use-context  ceph --kubeconfig=ceph.kubeconfig

使用kubeconfig

kubectl  --kubeconfig=ceph.kubeconfig  get pod

也可以复制到.kube中使用

cp ceph.kubeconfig ~/.kube/config
评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!