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
相关推荐
AI攻城狮1 小时前
Adaptive Thinking 的代价:当 AI 自己决定"想多少"
人工智能·云原生·aigc
Dontla2 小时前
Kubernetes Liveness Probe存活探针 / Readiness Probe就绪探针介绍(Startup Probe启动探针)重启容器
云原生·容器·kubernetes
格林威2 小时前
工业相机 SDK 在 Docker 容器中的部署与权限配置(含 USB/GigE)
开发语言·人工智能·数码相机·计算机视觉·docker·容器·工业相机
AI攻城狮2 小时前
Vibe Coding 时代:为什么你不应该盲目启用 AI 编码插件
人工智能·云原生·aigc
Gofarlic_OMS4 小时前
Windchill的license合规使用报告自动化生成与审计追踪系统
大数据·运维·人工智能·云原生·自动化·云计算
cyber_两只龙宝5 小时前
【Oracle】Oracle之DQL中WHERE限制条件查询
linux·运维·数据库·云原生·oracle
lvyuanj6 小时前
zookeeper_cluster
分布式·zookeeper·云原生
星梦清河7 小时前
01 微服务
微服务·云原生·架构
http阿拉丁神猫7 小时前
kubernetes知识点汇总43-47
云原生·容器·kubernetes
迷藏4947 小时前
**发散创新:基于角色与属性的混合权限模型在微服务架构中的实战落地**在现代分布式系统中,
java·python·微服务·云原生·架构