kubernetes创建只读用户

一、配置文件说明

1、kubeconfig文件

/root/.kube/config文件内容如下:

apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUM1后面的省略了。。。。。
    server: https://192.168.1.10:6443
  name: kubernetes
contexts:
- context:
    cluster: kubernetes
    user: kubernetes-admin
    namespace: default
  name: kubernetes-admin@kubernetes
current-context: kubernetes-admin@kubernetes
kind: Config
preferences: {}
users:
- name: kubernetes-admin
  user:
    client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURFekNDQWZ1Z0F3SUJBZ0lJW后面的省略了。。。。。
    client-key-data: LS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQpNSUlFb3dJQkFBS0NBUUVBb2RHMl后面的省略了。。。。。

文件分为三大部分:clusters、contexts、users

clusters 部分

定义集群信息,包括 api-server 地址、certificate-authority-data: 用于服务端证书认证的自签名 CA 根证书(master 节点 /etc/kubernetes/pki/ca.crt 文件内容 )。

contexts 部分

集群信息和用户的绑定,kubectl 通过上下文提供的信息连接集群。

users 部分

多种用户类型,默认是客户端证书(x.509 标准的证书)和证书私钥,也可以是 ServiceAccount Token

client-certificate-data:

base64 加密后的客户端证书

client-key-data:

base64 加密后的证书私钥

二、新建只读用户配置文件

1、生成客户端 TLS 证书

创建证书私钥:

openssl genrsa -out developer.key 2048

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

 k8s 集群(API Server)的 CA 根证书文件,一般会在 master 节点的 /etc/kubernetes/pki/  路径下,会有两个文件,一个是 CA 根证书(ca.crt),一个是 CA 私钥(ca.key)

2、通过集群的 CA 根证书和第 2 步创建的 csr 文件,来为用户颁发证书

openssl x509 -req -in developer.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out developer.crt -days 365

至此,客户端证书颁发完毕

三、基于RBAC 授予只读权限

kubectl create clusterrolebinding kubernetes-viewer --clusterrole=view --user=developer

四、基于客户端证书生成 Kubeconfig 文件

拷贝 $HOME/.kube.config,生成新文件名为 developer-config 

/root/.kube/文件夹下操作:

cp -a config developer-config

contexts 部分 user 字段改为 developer,name 字段改为 developer@kubernetes

users 部分 name 字段改为 developer,client-certificate-data 字段改为 developer.crt base64 加密后的内容,client-key-data 改为 developer.key base64 加密后的内容

证书 base64 加密时指定 --wrap=0 参数
cat developer.crt | base64 --wrap=0
cat developer.key | base64 --wrap=0

五、验证

执行命令:

kubectl --kubeconfig developer-config --context=developer@kubernetes -n default get pod

可以正常查到数据,如图:

接下来我们尝试删除一个POD:

kubectl --kubeconfig developer-config --context=developer@kubernetes delete pod flaskapp-1-84fbb4f499-48s7b

提示developer用户删除操作被禁止。

配置完毕。

 

 

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值