# 证书存放位置。 cd /etc/kubernetes/pki/ # 做一个私钥,生成hel.key (umask 077; openssl genrsa -out hel.key 2048) # 基于私钥生成一个证书,生成hel.csr,CN就是用户账号名 openssl req -new -key hel.key -out hel.csr -subj "/CN=hel" # 签发证书,生成hel.crt,-days:表示证书的过期时间,x509:生成x509格式证书,yogacfssl安装的ca证书为ca.pem,私钥为ca-key.pem openssl x509 -req -in hel.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out hel.crt -days 365 # 查看证书内容 openssl x509 -in helg.crt -text -noout # 把用户账户信息添加到当前集群中,embed-certs=true隐藏证书信息 kubectl config set-credentials hel --client-certificate=hel.crt --client-key=hel.key --embed-certs=true # 设置该用户可以访问kubernetes集群 kubectl config set-context hel@kubernetes --cluster=kubernetes --user=hel # 切换到hel用户,登录k8s,可以看到hel用户没有管理器权限 kubectl config use-context hel@kubernetes # 切回k8s管理员 kubectl config use-context kubernetes-admin@kubernetes # 创建一个新的k8s集群,--kubeconfig:指定集群配置文件存放位置 kubectl config set-cluster mycluster --kubeconfig=/tmp/test.conf --server="https://127.0.0.1:6443" --certificate-authority=/etc/kubernetes/pki/ca.crt --embed-certs=true kubectl config view --kubeconfig=/tmp/test.conf
RBAC授权:
kubectl create role pods-reader --verb=get,list,watch --resource=pods # 想要授予所有权限可以用*来表示 kubectl get role kubectl create rolebinding hel-read-pods --role=pods-reader --user=hel kubectl get rolebinding kubectl get rolebinding hel-read-pods kubectl describe rolebinding hel-read-pods kubectl describe role pods-reader kubectl config use-context hel@k8s # 切换账号确认权限