有没有办法在Kubernetes中为普通用户创建令牌?

mon*_*mon 1 token kubernetes

有一种方法可以创建服务帐户并获取令牌,如如何将用户添加到Kubernetes(kubectl)?但有没有办法为普通用户获取或创建令牌?

背景

其次配置RBAC在你Kubernetes集群,创造了普通用户.

如下所示将群集角色绑定到用户(不确定这是正确的,欣赏建议).我想为用户创建一个令牌,并使用它来访问仪表板但不知道该怎么做.

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  namespace: kube-system
  name: dashboard-admin-role
rules:
- apiGroups: ["*"]
  resources: ["*"]
  verbs: ["get", "list", "watch"]

kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:
  name: dashboard-admin-rolebinding
  namespace: office
subjects:
- kind: User
  name: myuser
  apiGroup: "rbac.authorization.k8s.io"
roleRef:
  kind: ClusterRole
  name: dashboard-admin-role
  apiGroup: "rbac.authorization.k8s.io"
Run Code Online (Sandbox Code Playgroud)

Jos*_*sto 6

API请求与普通用户或服务帐户绑定,或者被视为匿名请求.

  • 假设普通用户由外部独立服务(私钥,Google帐户等第三方,甚至包含用户名和密码列表的文件)管理.Kubernetes没有表示普通用户帐户的对象.
  • 服务帐户是由Kubernetes API管理的用户,绑定到特定名称空间.服务帐户与存储为Secrets的一组凭据相关联.服务帐户承载令牌完全有效,可在群集外部使用,并可用于为希望与Kubernetes API通信的长期作业创建身份.要手动创建服务帐户,只需使用该kubectl create serviceaccount ACCOUNT_NAME命令即可.这将在当前命名空间中创建一个服务帐户,并创建一个关联的秘密,用于保存API服务器的公共CA和签名的JSON Web令牌(JWT).

因此,您可以创建serviceaccount,然后使用该令牌验证对API的请求.

与此示例类似的东西

$ kubectl create serviceaccount jenkins
serviceaccount "jenkins" created
$ kubectl get serviceaccounts jenkins -o yaml
apiVersion: v1
kind: ServiceAccount
metadata:
  # ...
secrets:
- name: jenkins-token-1yvwg
Run Code Online (Sandbox Code Playgroud)

然后获取令牌

$ kubectl get secret jenkins-token-1yvwg -o yaml
apiVersion: v1
data:
  ca.crt: (APISERVER'S CA BASE64 ENCODED)
  namespace: ZGVmYXVsdA==
  token: (BEARER TOKEN BASE64 ENCODED)
kind: Secret
metadata:
  # ...
type: kubernetes.io/service-account-token
Run Code Online (Sandbox Code Playgroud)