解码 Kubernetes 秘密

新手上路,请多包涵

我继承了一个 Kubernetes/Docker 设置,我不小心通过更改与 DB 密码相关的内容使 pod 崩溃。

我正在尝试解决此问题。

我没有太多 Kubernetes 或 Docker 经验,所以我还在学习如何做事。

我相信该值包含在 db-user-pass 凭据中,这是一个不透明类型的机密。

我在描述它:

 kubectl describe secrets/db-user-pass
Name:         db-user-pass
Namespace:    default
Labels:       <none>
Annotations:  <none>

Type:  Opaque

Data
====
password:  16 bytes
username:  13 bytes

但我不知道如何从这个秘密中获取任何数据。 Kubernetes 站点上的示例似乎假设我将有一个 base64 编码的字符串,但我什至无法理解。我如何获得这个价值?

原文由 Steven Matthews 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 311
2 个回答

您可以使用 kubectl get secrets/db-user-pass -o yaml-o json 您将看到 base64 编码的 usernamepassword 然后,您可以复制该值并使用 echo <ENCODED_VALUE> | base64 -D (Mac OS X) 之类的内容对其进行解码。

一个更紧凑的单线:

 kubectl get secrets/db-user-pass --template={{.data.password}} | base64 -D

同样对于用户名:

 kubectl get secrets/db-user-pass --template={{.data.username}} | base64 -D

注意:在 GNU/Linux 上,base64 标志是 -d ,而不是 -D

原文由 Amit Kumar Gupta 发布,翻译遵循 CC BY-SA 4.0 许可协议

我建议使用这个方便的命令。它利用了 go-templates 的强大功能。它遍历所有值,解码它们,并将它们与键一起打印。它还处理未设置的值。

 kubectl get secret name-of-secret -o go-template='
{{range $k,$v := .data}}{{printf "%s: " $k}}{{if not $v}}{{$v}}{{else}}{{$v | base64decode}}{{end}}{{"\n"}}{{end}}'

## In your case it would output
# password: decoded_password
# username: decoded_username

如果您不喜欢 go-templates,您可以使用不同的输出格式,例如 yamljson ,但这将输出由 base64 编码的秘密。

原文由 Břetislav Hájek 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题