zl程序教程

您现在的位置是:首页 >  后端

当前栏目

K8S 创建 RBAC

k8s 创建 Rbac
2023-09-14 09:16:40 时间

RBAC基于角色的访问控制--全拼 Role-Based Access Control

一、创建 K8S 账号、

1、创建证书

# 创建私钥
openssl genrsa -out tom.key 2048

# 用此私钥创建一个csr(证书签名请求)文件
openssl req -new -key tom.key -subj "/CN=tom" -out tom.csr

# 拿着私钥和请求文件生成证书
openssl x509 -req -in tom.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out tom.crt -days 365

2、生成账号

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

 3、设置上下文参数 

# 设置上下文, 默认会保存在 $HOME/.kube/config
kubectl config set-context tom@kubernetes --cluster=kubernetes --user=tom --namespace=dev

# 查看
[root@master tom]# kubectl config get-contexts
CURRENT   NAME                          CLUSTER      AUTHINFO           NAMESPACE
*         kubernetes-admin@kubernetes   kubernetes   kubernetes-admin   
          tom@kubernetes                kubernetes   tom                dev

4、设置 默认上下文 

kubectl config use-context tom@kubernetes

# 再次查看,已经切换成功
[root@master tom]# kubectl config get-contexts
CURRENT   NAME                          CLUSTER      AUTHINFO           NAMESPACE
          kubernetes-admin@kubernetes   kubernetes   kubernetes-admin   
*         tom@kubernetes                kubernetes   tom                dev

二、授权

这里定义了一个 RoleBinding 把名为 admin 的 ClusterRole 与 tom 绑定,这个 ClusterRole 是系统自带的,所以不用建, 这时,tom就 拥有 dev 空间的所有权限

# 本例
vim tom-admin-binding.yaml

# 内容
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: tom-admin-binding
  namespace: dev
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: admin
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: User
  name: tom



# 也可以自定义 Role
vim tom-role.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  creationTimestamp: null
  name: pod-read
rules:
- apiGroups:
  - ""
  resources:
  - pods
  verbs:
  - list
  - get
  - watch

三、访问

1、通过 API 访问

curl --cert ./tom.crt --key ./tom.key https://192.168.2.100:6443/api/v1/namespaces/dev/pods --insecure

四、其它

1、创建新的集群

kubectl config set-cluster myk8s --server="https://192.168.2.100:6443" --certificate-authority=/etc/kubernetes/pki/ca.crt --embed-certs=true

2、其它命令

 kubectl config --help