Kubernetes RBAC 之 UserAccount
定义
Kubernetes 用户账户可以直接在终端使用,用来读写其有权限的资源或者非资源数据,而 Service Account 一般是用来绑定程序调用的。
创建用户
创建 Kubernetes 用户 kate
# 进入 Kubernetes Public Key Infrastructure(公钥设施)文件夹
cd /etc/kubernetes/pki/# 生成 kate 认证证书
openssl genrsa -out kate.key 2048
openssl req -new -key kate.key -out kate.csr -subj "/CN=kate"
openssl x509 -req -in kate.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out kate.crt -days 3650# 将 kate 账户加入 Kubernetes
kubectl config set-credentials kate --client-certificate=./kate.crt --client-key=./kate.key --embed-certs=true
kubectl config set-context kate@kubernetes --cluster=kubernetes --user=kate# 查看 Kubernetes Config
kubectl config view# 使用 kate 账户上下文
kubectl config use-context kate@kubernetes
# 这里我们会发现其没有任何权限
创建 linux 系统用户 kate,并将 Kubernetes 中 kate 配置到其账户家目录下
# 创建 kate 账户
useradd -m kate
passwd kate# 拷贝 Kubernetes Config 文件进入 /home/kate 下面
cp -ar .kube /home/kate/
chown -R kate:kate /home/kate/.kube
# 删除 kubernetes-admin 的权限和上下文信息,不然 kate 账户可以用此账户访问 K8S
绑定 default 命名空间管理权限至账户 kate
kubectl create rolebinding kate-binding -n default --clusterrole=cluster-admin --user=kate
访问 default 命名空间 Pods
su - kate
kubectl get pods
输出结果
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nfs-client-provisioner-d5bf6698d-mxjw2 1/1 Running 9 (4h ago) 48d
pod-secret 0/1 Completed 0 43d
rbac-sa 1/1 Running 2 (3h59m ago) 10d