一个获取秘密名称和秘密令牌的班轮命令

Rya*_*yan 5 jsonpath kubernetes kubectl kubernetes-dashboard kubernetes-secrets

替换如下 2 个命令来获取 Kubernetes 秘密令牌的一个线性命令是什么?示例用例将从 kubernetes-dashboard-admin 的密钥中获取令牌以登录和查看 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
Run Code Online (Sandbox Code Playgroud)

Rya*_*yan 4

我发现的答案如下。通过使用jsonpath来检索并使用 xargs将秘密名称/输出传递给第二个命令。最后需要使用base64来解码加密令牌。

$ kubectl get serviceaccount default -o=jsonpath='{.secrets[0].name}' | xargs kubectl get secret -ojsonpath='{.data.token}' | base64 --decode
TOKENHERE%
Run Code Online (Sandbox Code Playgroud)

尾部 % 不是令牌的一部分

这应该能够在 MacOS 上运行,而无需安装其他应用程序,例如jq,它应该能够执行相同的操作。希望这对其他人有帮助。