kubernetes - 一个用于获取 secret 名称和 secret token 的 liner 命令

标签 kubernetes kubectl jsonpath kubernetes-secrets kubernetes-dashboard

替换如下 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/

相关文章:

ssl - 无法与 Kubernetes 中的 Go gRPC 服务通信

kubernetes - RabbitMQ节点无法彼此发现并加入集群

go - 将 go 接口(interface)对象转换/类型转换为具体类型

image - 如何删除 kubernetes 中的部署/镜像

kubernetes - 在 kubernetes .yaml 文件中从 cronjob 创建作业

json - 使用 REST Assured,我如何检查一个字段是否存在于 json 对象类型的响应数组中?

ubuntu - 在 Google 计算上的 ubuntu 上设置 Kubernetes

javascript - 从数组 JSON 输入返回所有字段的 JSON 路径?

java - 使用 Jsonpath 获取列表

kubernetes - kubectl 补丁无法应用于 ConfigMap 数据