需求

给用户idea,只有 test命名空间权限

在 test 命名空间创建 serviceaccount

用户名为: idea

apiVersion: v1
kind: ServiceAccount
metadata:
  name: idea
  namespace: test

保存为sa.yaml
执行命令

kubectl apply -f sa.yaml

查看是否创建成功

kubectl get ServiceAccount -n test

输出

NAME      SECRETS   AGE
idea      1         88s

在 test 命名空间创建 role

创建角色: test-role

apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: test-role
  namespace: test
rules:
  - apiGroups:
      - apps
      - ''
    resources:
      - deployments
      - replicasets
      - statefulsets
      - daemonsets
      - services
      - pods
      - pods/log
      - pods/exec
      - namespaces
    verbs:
      - list
      - get
      - create

保存为role.yaml
执行命令

kubectl apply -f role.yaml

查看是否创建成功

kubectl get Role -n test

输出

NAME        CREATED AT
test-role   2022-06-10T02:13:58Z

在 test 命名空间创建 人员角色关系 rolebinding

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: test-role
  namespace: test
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: test-role
subjects:
- kind: ServiceAccount
  name: idea
  namespace: test

保存为RoleBinding.yaml
执行命令

kubectl apply -f RoleBinding.yaml

查看是否创建成功

kubectl get RoleBinding -n test

输出

NAME        ROLE             AGE
test-role   Role/test-role   105s

获取 test命名空间中用户 idea 的token

echo $(kubectl -n test get secret $(kubectl -n test get secret | grep idea | awk '{print $1}') -o go-template='{{.data.token}}' | base64 -d)

输出的就是 idea 的token

配置 kubectl config

有需要的可以 配置使用

kubectl config set-credentials idea --token=结果token
kubectl config set-cluster mycluster --insecure-skip-tls-verify=true --server=https://192.168.0.254:6443
kubectl config set-context mycontext --cluster=mycluster --user=idea

#
kubectl config use-context mycontext
#查看test命名空间下pods
kubectl get pods -n test

–token : 上一步得出token
–server:集群地址,正常情况下如果没有更改集群默认端口,那么只要把https://192.168.0.254:6443 中的 192.168.0.254改为你的集群IP地址即可,如果有防火墙,记得开启该端口
–user:集群设置用户

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐