【问题标题】:Kubectl create multiline secretKubectl 创建多行密码
【发布时间】:2020-08-04 11:51:28
【问题描述】:

我正在尝试将服务帐户设置为机密 - 我在一年前做过,它可以工作,但现在 - 无论我如何处理它,应用程序都看不到它,并说有 @987654321 @ - 创建普通秘密时,我知道你必须换行,所以

echo -n "secret" | base64

并将该值保密并应用,但我的多行文件

cat secret.json
{
  "type": "service_account",
  "project_id": "smth-smth",
  "private_key_id": "blabla"
...
}

无论我如何处理 - 无论是像第一个示例中那样手动放置,还是使用

cat secret.json | base64

# or 

base64 < secret.json

秘密已创建,但应用程序抛出

Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Input byte array has incorrect ending byte at 3104

当我将新密钥与服务帐户的最后一个密钥进行比较时,区别在于输出的样子

工作是这样的——当我尝试解密 base64 时

echo -n "<long string of base64 encrypred sa> | base64 -D
    { "type": "service_account", "project_id": "blabla"... }

所以它在一行中,我尝试解密的新 SA 以文件中的格式输出 - 所以 json 的每一部分都在新行中 - 我尝试手动将它们全部放在一行中但没有成功

有人知道吗?如何正确地将多行文件放入秘密(base64)中?

【问题讨论】:

  • 您是在使用Google Kubernetes Engine - 云提供商还是只使用 Kubernetes?您使用的是什么 Kubernetes 版本?你是如何创造这个秘密的?
  • 是的 GKE,只是将变量中的普通 base64 直接从文档中放入一个秘密中,那里没有魔法,秘密的格式在 kuberentes 版本中改变了那么多吗?运行最新或可能是一个月前的版本,所以不要认为这是问题

标签: kubernetes google-kubernetes-engine kubernetes-helm


【解决方案1】:

从文件创建机密的最简单方法是使用kubectl create secret generic

将您的文件secret.json 放入文件夹config,然后运行:

kubectl create secret generic my-secret --from-file=config

您将获得一个秘密 my-secret 和一个密钥 secret.json,其中包含您的文件(然后您可以将其挂载到 pod 卷)。

【讨论】:

    猜你喜欢
    • 2021-02-26
    • 2019-09-06
    • 1970-01-01
    • 2016-12-22
    • 2018-06-09
    • 2017-08-25
    • 2014-09-13
    • 2019-08-26
    • 1970-01-01
    相关资源
    最近更新 更多