创建用户认证授权的kubeconfig文件

Posted by     "Richie" on Sunday, January 20, 2019

当我们安装好集群后, 如果想要把kubectl命令交给用户使用, 就需要对用户身份进行认证和对权限做限制. 下面举例说明创建用户zrq. 可以手动一步一步操作,也可以通过playbook直接执行,下面先使用手动创建方式:

创建CA 证书和秘钥

## 创建一个zrq-csr.json文件, 将文件放到之前playbooks下面的k8s/files/ssl下面
{
  "CN": "zrq",
  "hosts": [],
  "key": {
    "algo": "rsa",
    "size": 2048
  },
  "names": [
    {
      "C": "CN",
      "L": "BeiJing",
      "ST": "BeiJing",
      "O": "system:masters",
      "OU": "System"
    }
  ]
}

生成CA证书和私钥

## 在生成证书前k8s/files/ssl下面有以下文件
ca-key.pem  ca.pem ca-config.json zrq-csr.json
## 执行命令生成证书
$ cfssl gencert -ca=ca.pem -ca-key=ca-key.pem -config=ca-config.json -profile=kubernetes zrq-csr.json | cfssljson -bare zrq 
## 生成以下文件
zrq-csr.json
zrq-key.pem
zrq.csr
zrq.pem

创建kubeconfig文件

# 设置集群参数
export KUBE_APISERVER="https://10.10.215.69:6443"
kubectl config set-cluster kubernetes \
--certificate-authority=/etc/kubernetes/ssl/ca.pem \
--embed-certs=true \
--server=${KUBE_APISERVER} \
--kubeconfig=zrq.kubeconfig

# 设置客户端认证参数
kubectl config set-credentials zrq \
--client-certificate=/etc/kubernetes/ssl/zrq.pem \
--client-key=/etc/kubernetes/ssl/zrq-key.pem \
--embed-certs=true \
--kubeconfig=zrq.kubeconfig

# 设置上下文参数
kubectl config set-context kubernetes \
--cluster=kubernetes \
--user=zrq \
--namespace="" \
--kubeconfig=zrq.kubeconfig

# 设置默认上下文
kubectl config use-context kubernetes --kubeconfig=zrq.kubeconfig

** 将生成的zrq.kubeconfig 替换到$HOME/.kube/config 即可使用这个配置文件

cp k8s/files/ssl/zrq.kubeconfig ~/.kube/config

RoleBinding

如果我们想限制zrq用户的权限, 需要使用RBAC创建角绑定用来将该用户的行为限制到一个或者多个namespace空间范围内 示例:

kubectl create rolebinding zrq-admin-binding --clusterrole=admin --user=zrq
kubectl create rolebinding zrq-admin-binding --clusterrole=admin --user=zrq --namespace=dev

「真诚赞赏,手留余香」

Richie Time

真诚赞赏,手留余香

使用微信扫描二维码完成支付