代码之家  ›  专栏  ›  技术社区  ›  Alex Fruzenshtein

无法在kubernetes中创建秘密:输入处的base64数据非法

  •  1
  • Alex Fruzenshtein  · 技术社区  · 6 年前

    我想为我的Kubernetes集群创建一个秘密。所以我写了以下 dummy-secret.yaml 文件:

    apiVersion: v1
    kind: Secret
    metadata:
      name: dummy-secret
    type: Opaque
    data:
      API_KEY: bWVnYV9zZWNyZXRfa2V5
      API_SECRET: cmVhbGx5X3NlY3JldF92YWx1ZTE=
    

    当我奔跑 kubectl create -f dummy-secret.yaml 我收到以下信息:

    Error from server (BadRequest): error when creating "dummy-secret.yaml": Secret in version "v1" cannot be handled as a Secret: v1.Secret: Data: decode base64: illegal base64 data at input byte 8, error found in #10 byte of ...|Q89_Hj1Aq","API_SECR|..., bigger context ...|sion":"v1","data":{"API_KEY":"af76fsdK_cQ89_Hj1Aq","API_SECRET":"bsdfmkwegwegwe"},"kind":"Secret","m|...
    

    不知道为什么会这样。

    正如我所理解的,我需要在 data 输入yaml文件。所以我做了base64编码,但是kubernetes仍然没有像我预期的那样处理yaml秘密文件。

    更新:

    我用这个命令来编码 数据 Mac上的值:

    echo -n 'mega_secret_key' | openssl base64
    
    2 回复  |  直到 6 年前
        1
  •  4
  •   Shudipta Sharma Prafull Ladha    6 年前

    我从你的编码数据中得到解码后的值“mega-secret-key”和“really-secret-value1”。似乎它们的编码方式不对。因此,以正确的方式对数据进行编码:

    $ echo "mega_secret_key" | base64
    bWVnYV9zZWNyZXRfa2V5Cg==
    
    $ echo "really_secret_value1" | base64
    cmVhbGx5X3NlY3JldF92YWx1ZTEK
    

    然后检查它们是否正确编码:

    $ echo "bWVnYV9zZWNyZXRfa2V5Cg==" | base64 -d
    mega_secret_key
    
    $ echo "cmVhbGx5X3NlY3JldF92YWx1ZTEK" | base64 -d
    really_secret_value1
    

    所以他们没事。现在用在你的 dummy-secret.yaml :

    apiVersion: v1
    kind: Secret
    metadata:
      name: dummy-secret
    type: Opaque
    data:
      API_KEY: bWVnYV9zZWNyZXRfa2V5Cg==
      API_SECRET: cmVhbGx5X3NlY3JldF92YWx1ZTEK
    

    并运行 $ kubectl create -f dummy-secret.yaml .

        2
  •  1
  •   Rico    6 年前

    似乎您的错误消息与其他 dummy-secret.yaml .

    apiVersion: v1
    kind: Secret
    metadata:
      name: dummy-secret
    type: Opaque
    data:
      API_KEY: af76fsdK_cQ89_Hj1Aq
      API_SECRET: bsdfmkwegwegwe
    

    然后:

    $ kubectl create -f s.yaml
    Error from server (BadRequest): error when creating "dummy-secret.yaml": Secret in version "v1" cannot be handled as a Secret: v1.Secret.Data: decode base64: illegal base64 data at input byte 8, error found in #10 byte of ...|Q89_Hj1Aq","API_SECR|..., bigger context ...|sion":"v1","data":{"API_KEY":"af76fsdK_cQ89_Hj1Aq","API_SECRET":"bsdfmkwegwegwe"},"kind":"Secret","m|...
    

    如果我使用你的原版,它会很好地工作:

    apiVersion: v1
    kind: Secret
    metadata:
      name: dummy-secret
    type: Opaque
    data:
      API_KEY: bWVnYV9zZWNyZXRfa2V5
      API_SECRET: cmVhbGx5X3NlY3JldF92YWx1ZTE=
    

    然后:

    $ kubectl create -f dummy-secret.yaml
    secret/dummy-secret created
    

    我正在使用以下版本:

    $ kubectl version
    Client Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.2", GitCommit:"17c77c7898218073f14c8d573582e8d2313dc740", GitTreeState:"clean", BuildDate:"2018-10-30T21:39:38Z", GoVersion:"go1.11.1", Compiler:"gc", Platform:"darwin/amd64"}
    Server Version: version.Info{Major:"1", Minor:"12", GitVersion:"v1.12.1", GitCommit:"4ed3216f3ec431b140b1d899130a69fc671678f4", GitTreeState:"clean", BuildDate:"2018-10-05T16:36:14Z", GoVersion:"go1.10.4", Compiler:"gc", Platform:"linux/amd64"}