美文网首页
Kubernetes创建普通账号

Kubernetes创建普通账号

作者: 深圳都这么冷 | 来源:发表于2022-06-06 22:16 被阅读0次

0·必要说明

  • 1.我们这里使用的是k8s的RBAC系统。
  • 2.用户,ServiceAccount和Group都是访问主体,不过前面两者只要加入某个组就拥有改组拥有的权限
  • 3.有多种角色,角色拥有某个子集的资源的某些权限,角色可以分为namespace角色(Role)和集群角色(ClusterRole)
  • 4.访问主体只有和角色绑定才能够获得权限,有两种绑定对象RoleBinding和ClusterRoleBing,前者绑定只能活得namespace角色的资源权限,后者只能绑定集群角色

下面开始操作,集群的证书在安装时自动生成在/etc/kubernetes/pki
我们主要需要以下两个文件
/etc/kubernetes/pki/ca.crt
/etc/kubernetes/pki/ca.key

1·创建个人证书

# 生成user私钥
openssl genrsa -out neozhao.key 2048

# 创建证书签署请求
openssl req -new -key neozhao.key -out neozhao.csr -subj "/O=org/CN=neozhao"

# 使用集群证书签署个人证书
openssl x509 -req -in neozhao.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out neozhao.crt -days 365

2·生成配置文件

# 设置集群参数
kubectl config set-cluster kubernetes \
  --certificate-authority=/etc/kubernetes/pki/ca.crt \
  --embed-certs=true \
  --server=https://10.96.51.8:6443 \
  --kubeconfig=./config

# 设置客户端认证参数
kubectl config set-credentials neozhao \
  --client-certificate=neozhao.crt \
  --client-key=neozhao.key \
  --embed-certs=true \
  --kubeconfig=./config

# 设置上下文参数
kubectl config set-context default \
  --cluster=kubernetes \
  --user=neozhao \
  --kubeconfig=./config

# 设置默认上下文
kubectl config use-context default \
  --kubeconfig=./config

以上步骤会在本地目录生成一个config文件,如果将这个文件复制到~/kube/config, 使用kubectl访问集群时,没有任何权限,因为没有绑定任何角色。
所以先回复以前的权限更高的config文件,走完以下操作

3·创建相应的Role和RoleBinding

创建Role

kubectl apply -f - <<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: pods-reader
  namespace: default
rules:
- apiGroups:
  - ""
  resources:
  - pods
  - pods/log
  verbs:
  - get
  - list
  - watch
EOF

创建相应的RoleBinding

kubectl apply -f - <<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: default-pods-reader
  namespace: default
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: pods-reader
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: neozhao
EOF

到这一步就可以进行验证了, 复制config~/kube/config(温馨提示,保存老的~/kube/config

kubectl get pod

现在能够读default命名空间的pod了,更多的配置,请参考官方文档

相关文章

网友评论

      本文标题:Kubernetes创建普通账号

      本文链接:https://www.haomeiwen.com/subject/jvqsmrtx.html