我有几个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 板!
2条答案
按热度按时间w8ntj3qf1#
自Kubernetes版本1.22以来,默认情况下不会为ServiceAccounts生成令牌。要在Secret中创建长期的ServiceAccount令牌,请参阅此文档,其中说:
如果您想获得ServiceAccount的API令牌,您可以创建一个带有特殊注解
kubernetes.io/service-account.name
的新Secret。如果您使用以下方式查看Secret:
您可以看到Secret现在包含“build-robot”ServiceAccount的API令牌。
jm2pwxwz2#
在Kubernetes集群的pod内运行的任何进程或应用程序都可以通过从API服务器获取服务帐户身份验证来访问集群。
根据此doc由@pramodAIML
当您创建pod时,如果您没有指定服务帐户,则会自动为它分配同一命名空间中的默认服务帐户。
服务账号描述:
你需要输入以下kubectl命令:
所以如果你仔细观察输出,你会看到Tokens属性是用值创建的。这个令牌被存储为一个secret对象,这个secret对象被附加到服务帐户:my-webpage-sa。
查看机密对象:
如果你想查看secrte对象的内容,我们可以输入以下命令
为了从Kubernetes集群API服务器获取必要的数据,可以在REST API调用中将此密钥作为身份验证承载令牌进行交换。
有关使用服务帐户令牌连接API服务器的详细信息,请参阅此doc