Kubernetes服务帐户没有token?

zmeyuzjn  于 2023-05-06  发布在  Kubernetes
关注(0)|答案(2)|浏览(1076)

我有几个Kubernetes服务帐户。
我想登录kubernetes dashboard。

$kubectl get sa -n kubernetes-dashboard
NAME                   SECRETS   AGE
whitebear              0         9m37s
default                0         15m
kubernetes-dashboard   0         15m

但是,服务帐户没有令牌。

$kubectl describe sa whitebear -n kubernetes-dashboard
Name:                whitebear
Namespace:           kubernetes-dashboard
Labels:              <none>
Annotations:         <none>
Image pull secrets:  <none>
Mountable secrets:   <none>
Tokens:              <none>
Events:              <none>

我如何为账户创建令牌?
我正在使用Docker for Mac,本地环境。
非常感谢。

解决方案

感谢@Sai Chandini Routhu!!
我做了token,登录成功

kubectl create token default

然而,仅仅使用 Jmeter 板是不够的
我做集群角色

kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  namespace: default
  name: service-reader
rules:
- apiGroups: [""] # "" indicates the core API group
  resources: ["*"]
  verbs: ["*"]

然后把这个绑定到我的账户上

kubectl create clusterrolebinding service-reader-pod \
  --clusterrole=service-reader  \
  --serviceaccount=default:whitebear

现在我可以登录和操作 Jmeter 板!

w8ntj3qf

w8ntj3qf1#

自Kubernetes版本1.22以来,默认情况下不会为ServiceAccounts生成令牌。要在Secret中创建长期的ServiceAccount令牌,请参阅此文档,其中说:
如果您想获得ServiceAccount的API令牌,您可以创建一个带有特殊注解kubernetes.io/service-account.name的新Secret。

kubectl apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
  name: build-robot-secret
    annotations:
        kubernetes.io/service-account.name: build-robot
        type: kubernetes.io/service-account-token
EOF

如果您使用以下方式查看Secret:

kubectl get secret/build-robot-secret -o yaml

您可以看到Secret现在包含“build-robot”ServiceAccount的API令牌。

jm2pwxwz

jm2pwxwz2#

在Kubernetes集群的pod内运行的任何进程或应用程序都可以通过从API服务器获取服务帐户身份验证来访问集群。
根据此doc由@pramodAIML
当您创建pod时,如果您没有指定服务帐户,则会自动为它分配同一命名空间中的默认服务帐户。

服务账号描述:

你需要输入以下kubectl命令:

Kubectl describe service account my- web page-sa

所以如果你仔细观察输出,你会看到Tokens属性是用值创建的。这个令牌被存储为一个secret对象,这个secret对象被附加到服务帐户:my-webpage-sa。

查看机密对象:

如果你想查看secrte对象的内容,我们可以输入以下命令

$ kubectl describe secret <token-value>

为了从Kubernetes集群API服务器获取必要的数据,可以在REST API调用中将此密钥作为身份验证承载令牌进行交换。
有关使用服务帐户令牌连接API服务器的详细信息,请参阅此doc

相关问题