k8s 创建 serviceAccount 并配置自定义ClusterRole 再授权用于 api-server 访问

复制代码
创建用户授权-webToken
webToken 用于使用 server-api 管理 k8s 集群
集群创建完成即可创建 ServiceAccount 类型的 secret(webToken),该 secret 不依赖用户证书
如果需要更新 webToken 可以删除对应的 ServiceAccount

1.创建 yaml 文件生成 webToken

bash 复制代码
# 创建用户授权的 yaml 文件
mkdir -p /opt/k8s/grant
cd /opt/k8s/grant
vim k8s_create_webToken.yaml
--------------------------
# 创建账号
---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: devuser
  namespace: test01

# 创建授权规则
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: devuser
  labels:
    rbac.zuiyoujie.com/name: devuser
rules:
  - apiGroups:
      - ""
    resources:
      - pods
      - pods/attach
      - pods/exec
      - pods/log
      - pods/status
      - configmaps
      - services
    verbs:
      - get
      - list
      - watch
      - create
      - describe
  - apiGroups:
      - extensions
      - apps
    resources:
      - deployments
    verbs:
      - get
      - list
      - watch
      - describe

# 将账号和授权绑定起来
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: devuser
  namespace: test01
  labels:
    rbac.zuiyoujie.com/name: devuser
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: devuser
subjects:
  - kind: ServiceAccount
    name: devuser
    namespace: test01
---
-----------------------------------

# 创建 webToken 的 Secret
kubectl apply -f k8s_create_webToken.yaml

2.查看 webToken 的值

  • 手动查询
bash 复制代码
# 查询 webToken 的 Secret 名称
kubectl get secret | grep token
--------------------------------
# kubectl get secret | grep token
default-token-frvq9                        kubernetes.io/service-account-token   3      7d
devuser-token-k6hnn                        kubernetes.io/service-account-token   3      5d23h
nginx-ingress-serviceaccount-token-dzrkb   kubernetes.io/service-account-token   3      7d
--------------------------------

# 查看 Secret 的 webToken 值
kubectl describe secret devuser-token-k6hnn
--------------------------------
# kubectl describe secret devuser-token-k6hnn
Name:         devuser-token-k6hnn
Namespace:    test01
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: devuser
              kubernetes.io/service-account.uid: df4f9dae-6752-48af-b95d-fbec4c543691

Type:  kubernetes.io/service-account-token

Data
====
ca.crt:     1029 bytes
namespace:  8 bytes
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6IjZSakJtQXhwYXBGVk9PSzF0MTZoYi1qMXhxUVdxT0JlS1h6VWZ2SlhOTzgifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJydGMtcHJvZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY29
--------------------------------
  • 一键查询
bash 复制代码
kubectl describe secret $(kubectl get secret -n kube-system | grep ^devuser | awk '{print $1}') -n kube-system | grep -E '^token'| awk '{print $2}'

3.重新生成 webToken

bash 复制代码
# 需要刷新 webToken 可以删掉重新生成
kubectl get ServiceAccount
kubectl get sa
kubectl delete sa xxxx
相关推荐
Sst的头号粉丝3 小时前
Docker——compose
运维·docker·容器
ZZZKKKRTSAE5 小时前
rhel9快速上手Docker
运维·docker·容器
筱顾大牛5 小时前
Docker安装教程(加汉化!超详细!!!)
运维·docker·容器
九成宫5 小时前
安装和配置Docker教程(装在其他盘)
运维·docker·容器
const_qiu5 小时前
微服务测试项目架构设计与实践
微服务·云原生·架构
janthinasnail6 小时前
使用Docker安装nanobot(超轻量个人AI助手)
docker·容器
不是书本的小明7 小时前
K8s探针实战:存活、就绪与启动三重保障
云原生·k8s
恋红尘7 小时前
K8S 配置与调度-叩丁狼
云原生·容器·kubernetes
掘根7 小时前
【微服务即时通讯】用户管理子服务1
微服务·云原生·架构
恋红尘8 小时前
K8S Pod 基础解析-分篇-叩丁狼
云原生·容器·kubernetes·pod