集群管理员 :负责管理 Kubernetes 集群的用户,拥有最高权限,可以对集群中的资源进行任何操作。
开发者 :在 Kubernetes 集群中部署和管理自己的应用,可能有限制的权限,仅能管理特定的命名空间或资源。
第三方服务 :需要与 Kubernetes 集群交互的外部系统或服务,如监控、日志管理等。
日常工作中尽量不适用root权限(权限太大,我们使用普通用户进行操作)
配置普通用户操作:
1、准备证书
普通用户需要通过证书进行验证,然后通过RBAC授权。因此需要先创建证书,创建证书有两种方式,通过k8s csr申请,直接通过命令创建
创建证书请求文件 lyj-csr.json
{
"CN": "lyj",
"hosts": [],
"key": {
"algo": "rsa",
"size": 2048
},
"names": [
{
"C": "CN",
"ST": "BeiJing",
"L": "BeiJing",
"O": "k8s",
"OU": "System"
}
]
}
生成证书
cfssl gencert -ca=/data/tls/k8s/ca.pem -ca-key=/data/tls/k8s/ca-key.pem -config=/data/tls/k8s/ca-config.json -profile=kubernetes lyj-csr.json | cfssljson -bare client
设置名为kubernetes集群
kubectl config set-cluster kubernetes \
--certificate-authority=/data/kubernetes/ssl/ca.pem \
--embed-certs=true \
--server="https://192.168.7.100:6443" \
--kubeconfig=lyj-config
设置用户
kubectl config set-credentials lyj \
--client-certificate=./client.pem \
--client-key=./client-key.pem \
--embed-certs=true \
--kubeconfig=lyj-config
设置上下文信息
kubectl config set-context default \
--cluster=kubernetes \
--user=lyj \
--kubeconfig=lyj-config
切换上下文
kubectl config use-context default --kubeconfig=lyj-config
为用户授权:
mkdir /home/lyj/.kube
cp /root/.kube/config /home/lyj/.kube/
chown -R lyj:lyj lyj/
权即创建角色,并将角色与对象绑定
创建lyj-rbac.yaml 文件并进行应用
Kubectl apply -f lyj-rbac.yaml
--
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: test
rules:
- apiGroups: ["*"] # "" 表示所有api组
resources: ["pods","pods/log","deployments"] #*表示所有资源
verbs: ["list","watch","get","create","delete"]
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: testclusterrolebinding
subjects:
你可以指定不止一个"subject(主体)"
- kind: User
name: lyj # "name" 是区分大小写的
apiGroup: rbac.authorization.k8s.io
roleRef:
"roleRef" 指定与某 Role 或 ClusterRole 的绑定关系
kind: ClusterRole # 此字段必须是 Role 或 ClusterRole
name: test # 此字段必须与你要绑定的 Role 或 ClusterRole 的名称匹配
apiGroup: rbac.authorization.k8s.io
再验证下切换用户到普通用户lyj,进行集群命令操作