kubeconfig的使用
1. kubeconfig说明
默认情况下,kubectl 在 $HOME/.kube 目录下查找名为 config 的文件。 你可以通过设置 KUBECONFIG 环境变量或者设置 --kubeconfig参数来指定其他 kubeconfig 文件。
kubeconfig内容示例:
以下证书以文件的形式读取。
2. 将 Kubeconfig 中的证书文件转为证书数据
2.1. 证书文件转为证书数据
如果需要将证书文件替换为证书数据格式,可以通过base64的命令解码成data数据,同时修改相应的参数。
获取证书文件的 base64 编码:
将输出结果的换行符去掉,填到对应证书的data中。
-
将
certificate-authority改为certificate-authority-data,并且将*/ca.crt证书文件经 base64 编码后的字符串填入该位置。 -
将
client-certificate改为client-certificate-data,并且将*/client.crt证书文件经 base64 编码后的字符串填入该位置。 -
将
client-key改为client-key-data,并且将*/client.key证书文件 base64 编码后的字符串填入该位置。
例如:
2.2. 证书数据转成证书文件
3. 生成集群级别的kubeconfig
3.1. 创建ServiceAccount
3.2. 创建和绑定权限
如果不创建自定义权限,可以使用自带的ClusterRole: cluster-admin/admin/edit/view。如果需要生成集群admin的权限,可以绑定 cluster-admin的权限。建议权限授权时遵循最小权限原则。即需要使用的权限授权,不需要使用的权限不授权,对于删除等敏感权限慎重授权。
如果要创建自定义权限,使用ClusterRole和ClusterRoleBinding的对象。
-
只读权限:verbs: ["get","list","watch"]
-
可写权限:verbs: ["create","update","patch","delete","deletecollection"]
-
全部权限:verbs: ["*"]
3.3. 创建kubeconfig
4. 生成namespace的kubeconfig
4.1. 创建ServiceAccount
创建ServiceAccout同上,没有区别。
4.2. 创建和绑定权限
创建namespace级别的权限用Role和RoleBinding的对象。一个ServiceAccount可以绑定多个权限,可以通过创建ClusterRoleBinding或RoleBinding来实现对多个namespace的权限控制。
4.3. 创建kubeconfig
5. 创建token来访问apiserver
以上方式是通过创建ServiceAccount的Secret的方式来获取token,该token是永久生效的,如果要使token失效可以删除对应的Secret对象,
如果要使用指定过期期限的token权限,可以通过以下命令生成:
参考:
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.