阿里云的 Kubernetes 配置文件(如您所提供的 YAML 格式文件)通常不会直接包含用于连接 Kubernetes 集群的令牌。而是包含了客户端证书和私钥数据,这些是用于通过证书验证而不是令牌验证的方式来与 Kubernetes API 服务器进行安全交互的。
1.创建一个 ServiceAccount:
kubectl create serviceaccount [service-account-name]
2.通过 YAML 文件创建 ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: example-clusterrolebinding
subjects:
- kind: ServiceAccount
name: example-serviceaccount
namespace: example-namespace
roleRef:
kind: ClusterRole
name: example-clusterrole
apiGroup: rbac.authorization.k8s.io
3.手动创建服务账号令牌
apiVersion: v1
kind: Secret
metadata:
name: [secret-name]
namespace: [your-namespace]
annotations:
kubernetes.io/service-account.name: [service-account-name]
type: kubernetes.io/service-account-token
4.定义pod-exec-role
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: your-namespace
name: pod-exec-role
rules:
- apiGroups: [""]
resources: ["pods/exec", "pods/log"]
verbs: ["create", "get", "list"]
5.创建ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: pod-exec-binding
namespace: your-namespace
subjects:
- kind: User
name: "your-username"
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: Role
name: pod-exec-role
apiGroup: rbac.authorization.k8s.io
6.创建view的roleBinding
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: cao-crb
subjects:
- kind: User
name: "your-username" # 替换为实际的用户名
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: view # 确保这是正确的 ClusterRole 名称
apiGroup: rbac.authorization.k8s.io