一键创建k8s用户并授于查看pod日志权限

「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战」。

✍️前言

✨本文一键脚本 根据 juejin.cn/post/701773… 这位小哥的文章,二次开发而来,小哥的内容说得比较详细,如果看了本文脚本,不明其意的同学,可以看看这位小哥的文章

🙋‍♂️本着凡是自动化能解决的,决不一条一条命令去敲,博主决定写个一键创建用户,然后授于查看pod权限的脚本

🙆‍♂️下图为脚本运行截图,可见非常方便。。还可以集成到Golang和php代码中哦。
image.png

✍️脚本内容如下

命名为: create_user.sh 执行: bash create_user.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
js复制代码#!/bin/bash

#异常直接中断流程,退出脚本
set -e

#接收两个参数,第1个参数为用户名,第2个参数为命令空间(可选)
name=$1
namespace=$2

#如果不设置用户名,默认为dmp+随机数
if [ -z $name ];then
name=dmp`date +%N`
fi

#如果不设置namespace,默认为test命令空间
if [ -z $namespace ];then
namespace="test"
fi

group=peach
caPath=/etc/kubernetes/pki/

#1. 创建用户证书私钥
openssl genrsa -out ${name}.key 2048

#2. 创建证书签名文件
openssl req -new -key ${name}.key -out ${name}.csr -subj "/CN=${name}/O=${group}"

#3. 生成最终证书文件
openssl x509 -req -in ${name}.csr -CA ${caPath}ca.crt -CAkey ${caPath}ca.key -CAcreateserial -out ${name}.crt -days 3650

#4. 创建集群凭证
kubectl config set-credentials ${name} --client-certificate=${name}.crt --client-key=${name}.key

#5. 创建集群上下文context
cluster=`kubectl config get-clusters | grep -v NAME`
kubectl config set-context ${name}-context --cluster=${cluster} --namespace=${namespace} --user=${name}

#6. 创建用户成功提示
echo "----------------"
echo "创建用户成功\n"
echo "用户名: ${name} namespace: $namespace\n"
#查看当前已创建的users和contexts
echo "------显示user列表-------" && kubectl config get-users
echo "------显示context列表-------" && kubectl config get-contexts
echo "----------------"
echo "接下来创建k8s集群角色和权限"

#7. 编写角色配置文件
cat >> role.yaml << EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: ${namespace}
name: ${name}-log-role
rules:
- apiGroups: [""]
resources: ["pods", "pods/log"]
verbs: ["get", "list"]

EOF

# 替换角色配置(可选)
#sed 's/NS/${namespace}/g' role.yaml
#8. 创建角色
kubectl apply -f role.yaml

#9. 编写角色权限绑定配置文件
cat >> rolebinding.yaml << EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: ${name}-hangzhou-rolebinding
namespace: ${namespace}
subjects:
- kind: User
name: ${name}
apiGroup: ""
roleRef:
kind: Role
name: ${namespace}-log-role
apiGroup: ""
EOF

#10. 创建角色权限绑定
kubectl apply -f rolebinding.yaml

#11. 创建权限成功提示
echo "----------------"
echo "创建角色权限成功\n"
#权限测试
kubectl get pods -n ${namespace} --context=${name}-context
#查看角色和角色绑定列表并过滤用户名
echo "-----查看角色列表----"
kubectl get role -A | grep ${name}
echo "-----查看角色绑定列表----"
kubectl get rolebinding -A | grep ${name}
echo "查看pod命令: kubectl get pods -n ${namespace} --context=${name}-context"
echo "-------脚本处理完成,谢谢使用---------"

😅脚本中有非常详细的注释,方便看官们快速理解哦

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%