如何为Azure上的Kubernetes集群生成Bearer token
Azure AKS 集群Bearer Token获取方案
场景1:临时测试使用,快速获取短期token
如果仅用于临时测试,不需要长期有效凭证,可以直接通过kubectl获取当前上下文的有效token:
- 先通过Azure CLI拉取集群访问凭据,确保本地kubectl可以正常访问集群:
执行命令:az aks get-credentials --resource-group <你的资源组名称> --name <你的AKS集群名称> - 执行以下命令打印默认ServiceAccount的token:
执行命令:kubectl get secret -o jsonpath={.items[?(@.metadata.annotations.kubernetes\.io/service-account\.name=="default")].data.token} | base64 -d
注意:如果你使用的是启用了Azure AD集成的AKS,该方法获取的是关联AD用户的短期token,有效期最长1天,不适合长期对接外部工具使用
场景2:生成长期有效、权限可控的token(生产环境对接推荐)
生产环境对接外部工具建议单独创建专用ServiceAccount,按需绑定权限后生成长期token,步骤如下:
- 创建专用ServiceAccount,示例中命名为
external-tool-sa,可自定义命名和所属命名空间:
apiVersion: v1 kind: ServiceAccount metadata: name: external-tool-sa namespace: default
保存为sa.yaml后执行命令生效:kubectl apply -f sa.yaml
2. 为ServiceAccount绑定对应权限,可按需替换为你需要的ClusterRole/Role:
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: external-tool-sa-binding subjects: - kind: ServiceAccount name: external-tool-sa namespace: default roleRef: kind: ClusterRole name: view # 仅读取权限,需要更高权限可替换为cluster-admin等自定义角色 apiGroup: rbac.authorization.k8s.io
保存为crb.yaml后执行命令生效:kubectl apply -f crb.yaml
3. 手动创建ServiceAccount对应的token Secret(K8s 1.24及以上版本默认不会自动生成该Secret):
apiVersion: v1 kind: Secret metadata: name: external-tool-sa-secret annotations: kubernetes.io/service-account.name: external-tool-sa type: kubernetes.io/service-account-token
保存为secret.yaml后执行命令生效:kubectl apply -f secret.yaml
4. 提取最终可用的Bearer token:
执行命令:kubectl get secret external-tool-sa-secret -o jsonpath='{.data.token}' | base64 -d
打印出的字符串即为需要的Bearer token。
有效性验证
可以通过curl命令验证token是否符合预期权限:curl -k <你的AKS API服务器地址>/api/v1/namespaces/default/pods -H "Authorization: Bearer <你获取到的token>"
返回结果符合你绑定的权限范围即代表token可用。
内容的提问来源于stack exchange,提问作者user11825409
相关产品推荐
相关产品推荐

