k8s中的鉴权(举例)

创建一个用户 只能管理soul命名空间下的所有资源

在master节点上

useradd souluser && passwd souluser

mkdir -p /usr/local/install-k8s/cert/souluser

cd !$

vim souluser-csr.json

{

  "CN": "souluser",

  "hosts": [],                        #可以访问的主机,空为所有

  "key": {

    "algo": "rsa",

    "size": 2048

  },

  "names": [

    {

      "C": "CN",

      "ST": "BeiJing",

      "L": "BeiJing",

      "O": "k8s",

      "OU": "System"

    }

  ]

}


1.下载证书生成工具

cd /usr/local/bin

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

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

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

mv cfssl_linux-amd64 cfssl && mv cfssljson_linux-amd64 cfssljson && mv cfssl-certinfo_linux-amd64 cfssl-certinfo

chmod a+x *

cd /etc/kubernetes/pki

cfssl gencert -ca=ca.crt -ca-key=ca.key -profile=kubernetes /usr/loacl/install-k8s/cert/souluser/souluser-csr.json | cfssljson -bare devuser

生成了souluser.csr和souluser-key.pem,证书请求和证书私钥。

2.设置群集参数

cd /usr/local/install-k8s/cert/souluser

声明环境变量 export KUBE_APISERVER="https://IP:6443"

kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/pki/ca.crt --embed-certs=ture --server=${KUBE_APISERVER} --kubeconfig=souluser.kubeconfig

(PS: 指定ca的证书,指定是否要加密认证,指定服务器信息,指定创建出来的文件)

生成了souluser.kubeconfig文件

3.设置客户端认证参数

kubectl config set-credentials souluser --client-certificate=/etc/kubernetes/pki/souluser.pem --client-key=/etc/kubetnetes/pki/souluser-key.pem --embed-certs=true --kubeconfig=souluser.kubeconfig

(PS: 指定客户端的证书,指定私钥,开启加密认证,写到souluser.kubeconfig文件中)

4.设置上下文参数

kubectl create namespace soul

绑定至某一个名称空间(本文示例soul的namespace)
kubectl config set-context kubernetes --cluster=kubernetes --user=souluser --namespace=soul --kubeconfig=souluser.kubeconfig

(PS: 指定集群,指定用户,指定名称空间,写到souluser.kubeconfig文件中)

5.设置默认上下文

创建一个rolebinding,下放权限(rolebinding我也不是很明白- -.)

kubectl create rolebinding souluser-admin-binding --clusterrole=admin --user=souluser --namespace=soul


mkdir /home/souluser/.kube

cp souluser.kubeconfig /home/souluser/.kube/config

chown souluser:souluser /home/souluser/.kube/config

切换上下文,让kubectl读取到配置信息

kubectl config use-context kubernetes --kubeconfig=/home/souluser/.kube/config

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容