Kubernetes自定义权限

428 字
2 分钟
Kubernetes自定义权限

1 创建账号#

1.1 创建私钥,一定要用 root 用户#

(umask 077; openssl genrsa -out test.key 2048)

image-20211012090216993
image-20211012090216993

1.2 基于私钥生成证书,由 k8s 集群的 ca.crt 签署#

CN 为账号名称,OU 为组

openssl req -new -key test.key -out test.csr -subj "/CN=test"

image-20211012090236113
image-20211012090236113

ca.crt 与 ca.key 是 k8s 的秘钥

openssl x509 -req -in test.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out test.crt -days 365

1.3 查看证书#

openssl x509 -in test.csr -text -noout

1.4 k8s 创建用户,并使用证书认证#

kubectl config set-credentials test --client-certificate=test.crt --client-key=test.key --embed-certs=true

1.5 查看集群#

kubectl config get-contexts

image-20211012091028778
image-20211012091028778

1.6 设置上下文,用户访问哪个集群#

kubectl config set-context test@kubernetes --cluster=kubernetes --user=test

1.7 查看配置#

kubectl config view

image-20211012090504473
image-20211012090504473

2 配置权限#

2.1 使用系统角色#

—clusterrole=view 是系统只读权限

kubectl create clusterrolebinding test-rolebinding --clusterrole=view --user=test

2.2 自定义角色#

2.2.1 创建 role#

kubectl create clusterrole test-clusterrole --verb=get,list,watch --resource=pods,deploy,svc --dry-run=client -o yaml > test/clusterrole.yaml

编辑 test/clusterrole.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: rongxin-cluster-role
rules:
- apiGroups:
- ""
resources:
- pods
- services
- pods/log
verbs:
- get
- list
- watch
- apiGroups:
- ""
resources:
- pods/exec
verbs:
- create
- apiGroups:
- apps
resources:
- deployments
verbs:
- get
- list
- watch

kubectl apply -f test/clusterrole.yaml

2.2.2 查看 role#

kubectl describe clusterrole test-cluster-role

image-20211012090710033
image-20211012090710033

2.2.3 创建 rolebinding#

我习惯备份下,也可以参考上面命令直接运行

kubectl create rolebinding test-dev-rolebinding --clusterrole=test-cluster-role --user=test --dry-run=client -o yaml > test/test-dev-rolebinding.yaml

kubectl apply -f test/test-dev-rolebinding.yaml

2.2.4 查看 rolebinding#

kubectl get rolebinding -n dev

image-20211012090931200
image-20211012090931200

kubectl describe rolebinding test-dev-rolebinding -n dev

image-20211012090904150
image-20211012090904150

2.3 查看集群#

kubectl config get-contexts

image-20211012091053636
image-20211012091053636

3 导出配置#

Terminal window
kubectl config set-context test \
--cluster=kubernetes \
--user=test \
--current-context=test \
--kubeconfig=test.config
kubectl config set-cluster kubernetes \
--certificate-authority=/data/server/certs/ca/k8s/master/ca.pem \ #与上面的ca.crt是同一个文件
--embed-certs=true \
--server=https://10.1.1.1:7443 \
--kubeconfig=test.config
kubectl config set-credentials test \
--client-certificate=./test.crt --client-key=test.key --embed-certs=true \
--kubeconfig=test.config
vim test.config
contexts:
- context:
cluster: kubernetes
user: test
name: test@kubernetes
current-context: read-ccops # 修改这里,要不然会报 The connection to the server localhost:8080......

3.1 测试 kubeconfig#

Terminal window
kubectl get pods --kubeconfig=test.config -n kube-system
NAME READY STATUS RESTARTS AGE
csi-rbdplugin-5vfrd 3/3 Running 0 79m
kubectl delete pods --kubeconfig=test.config -n kube-system csi-rbdplugin-5vfrd
Error from server (Forbidden): pods "csi-rbdplugin-5vfrd" is forbidden: User "test" cannot delete resource "pods" in API group "" in the namespace "kube-system"

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

Kubernetes自定义权限
https://ccops.cc/posts/135a8c8/
作者
蹦蹦站长
发布于
2021-10-12
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
蹦蹦站长
一个养兔子的运维
公告
感谢你的来访!希望在这里能找到对你有用的内容!
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
81
分类
6
标签
45
总字数
88,456
运行时长
0
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.12.1
文章许可
CC BY-NC-SA 4.0

文章目录