我如何解决这个问题;从json解码时出错:输入字节0处的非法base64数据;为了库伯内特斯的秘密?

我如何解决这个问题;从json解码时出错:输入字节0处的非法base64数据;为了库伯内特斯的秘密?,json,kubernetes,yaml,Json,Kubernetes,Yaml,我目前正在为我们的项目添加一个新的秘密,这个秘密通常存储在Kubernetes中。我几乎模仿了我能找到的所有其他秘密,所以看起来一切都应该是正确的。但是,它不起作用,给了我“kubernetes/template/secrets.yml”的:从json解码错误:输入字节0处的非法base64数据。我不确定这是Kubernetes内部的问题还是我的脚本中的问题 机密文件如下所示: kubectl --record --namespace=${...} --token ${...} --clus

我目前正在为我们的项目添加一个新的秘密,这个秘密通常存储在Kubernetes中。我几乎模仿了我能找到的所有其他秘密,所以看起来一切都应该是正确的。但是,它不起作用,给了我“kubernetes/template/secrets.yml”的
:从json解码错误:输入字节0处的非法base64数据
。我不确定这是Kubernetes内部的问题还是我的脚本中的问题

机密文件如下所示:

  kubectl --record --namespace=${...} --token ${...} --cluster ${...} apply -f 
  kubernetes/template/secrets.yml
  Error from server: error when applying patch:
  [inset output from above, but with:
    {\"SECRET_A\":\"abcdefghijklmnopqrstuvwxyz123456\",\"SECRET_B\":\"$SECRET_B\"}]
  to:
  [transformed output from above, but with:
    Object: &{map["apiVersion":"v1" "data":map["SECRET_A":"abcdefghijklmnopqrstuvwxyz123456\" "SECRET_B":"abcdefghijklmnopqrstuvwxyz1234567890abcd"]]

秘密

部署k8.sh

当我运行
kubectl get secret my secret-o json
时,我得到类似的结果:

{
    "apiVersion": "v1",
    "data": {
        "SECRET_A": "abcdefghijklmnopqrstuvwxyz123456",
        "SECRET_B": "abcdefghijklmnopqrstuvwxyz1234567890abcd"
    },
    "kind": "Secret",
    "metadata": {
        "annotations": {
            "kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"data\":{\"SECRET_A\":\"abcdefghijklmnopqrstuvwxyz123456\"},\"kind\":\"Secret\",\"metadata\":{\"annotations\":{\"kubernetes.io/change-cause\":\"kubectl apply --record=true --namespace=ns --token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --cluster=my_cluster --filename=kubernetes/template/secrets.yml\"},\"labels\":{\"app\":\"my-app\",\"env\":\"dev\"},\"name\":\"my-app-dev\",\"namespace\":\"ns\"},\"type\":\"Opaque\"}\n",
            "kubernetes.io/change-cause": "kubectl apply --record=true --namespace=ns --token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx--cluster=my_cluster --filename=kubernetes/template/secrets.yml"
        },
        "creationTimestamp": "20XX-XX-XXTXX:XX:XXZ",
        "labels": {
            "app": "my-app",
            "env": "dev"
        },
        "name": "my-app-dev",
        "namespace": "ns",
        "resourceVersion": "0000000000",
        "selfLink": "/api/v1/namespaces/ns/secrets/my-app-dev",
        "uid": "00000000-0000-0000-0000-000000000000"
    },
    "type": "Opaque"
}
整个错误如下所示:

  kubectl --record --namespace=${...} --token ${...} --cluster ${...} apply -f 
  kubernetes/template/secrets.yml
  Error from server: error when applying patch:
  [inset output from above, but with:
    {\"SECRET_A\":\"abcdefghijklmnopqrstuvwxyz123456\",\"SECRET_B\":\"$SECRET_B\"}]
  to:
  [transformed output from above, but with:
    Object: &{map["apiVersion":"v1" "data":map["SECRET_A":"abcdefghijklmnopqrstuvwxyz123456\" "SECRET_B":"abcdefghijklmnopqrstuvwxyz1234567890abcd"]]


我真的很感激你能帮我解决这个问题

您可以使用所述的stringData字段。这样,您就不必以输入为基础。请注意,该字段仅为写字段。

我想我找到了解决问题的方法。事实证明,我从中提取的环境变量发生了变化(即,
SECRET\u B
应该是
B
)。因此,从技术上讲,
秘密B
并不存在。更改此选项可以解决我的问题。感谢所有试图帮忙的人

@curiosa这只是一个占位符,而不是真正的价值。尽管如此,我可以在上面输入这两个值,但对于SECRET_B(而不是SECRET_A),仍然会得到相同的错误。我希望在更改后,建议查看secrets.yml不会太琐碎?看看我在稍微弄乱代码时遇到的另一个错误,就是验证数据时出现的错误:ValidationError(SECRET.data.SECRET_B):io.k8s.api.core.v1.Secret.data的类型无效:获取“映射”,应为“字符串”
它似乎来自我上面添加的
secrets.yml
文件。
  kubectl --record --namespace=${...} --token ${...} --cluster ${...} apply -f 
  kubernetes/template/secrets.yml
  Error from server: error when applying patch:
  [inset output from above, but with:
    {\"SECRET_A\":\"abcdefghijklmnopqrstuvwxyz123456\",\"SECRET_B\":\"$SECRET_B\"}]
  to:
  [transformed output from above, but with:
    Object: &{map["apiVersion":"v1" "data":map["SECRET_A":"abcdefghijklmnopqrstuvwxyz123456\" "SECRET_B":"abcdefghijklmnopqrstuvwxyz1234567890abcd"]]