替换如下 2 个命令以获取 Kubernetes secret token 的一个 liner 命令是什么?示例用例将从 kubernetes-dashboard-admin 的 secret 获取 token 以登录和查看 kubernetes-dashboard。
命令示例:
$ kubectl describe serviceaccount default
Name: default
Namespace: default
Labels: <none>
Annotations: <none>
Image pull secrets: <none>
Mountable secrets: default-token-zvxf4
Tokens: default-token-zvxf4
Events: <none>
$ kubectl describe secret default-token-zvxf4
Name: default-token-zvxf4
Namespace: default
Labels: <none>
Annotations: kubernetes.io/service-account.name: default
kubernetes.io/service-account.uid: 809835e7-2564-439f-82f3-14762688ca80
Type: kubernetes.io/service-account-token
Data
====
ca.crt: 1025 bytes
namespace: 7 bytes
token: TOKENHERE
最佳答案
我发现的答案如下。通过使用 jsonpath检索和 xargs将 secret 名称/输出传递给第二个命令。将需要使用 base64 解码加密 token 在末尾。
$ kubectl get serviceaccount default -o=jsonpath='{.secrets[0].name}' | xargs kubectl get secret -ojsonpath='{.data.token}' | base64 --decode
TOKENHERE%
尾随 % 不是 token 的一部分
这应该能够在 MacOS 上运行而无需安装其他应用程序,例如 jq这应该能够做同样的事情。希望这对其他人有帮助。
关于kubernetes - 一个用于获取 secret 名称和 secret token 的 liner 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62360542/