无法在Kubernetes中创建Secret:输入时存在非法的base64数据 [英] Can't create Secret in Kubernetes: illegal base64 data at input
问题描述
我想为我的kubernetes集群创建一个秘密.因此,我编写了以下dummy-secret.yaml
文件:
I want to create a secret for my kubernetes cluster. So I composed following dummy-secret.yaml
file:
apiVersion: v1
kind: Secret
metadata:
name: dummy-secret
type: Opaque
data:
API_KEY: bWVnYV9zZWNyZXRfa2V5
API_SECRET: cmVhbGx5X3NlY3JldF92YWx1ZTE=
当我运行kubectl create -f dummy-secret.yaml
时,我收到以下消息:
When I run kubectl create -f dummy-secret.yaml
I receive back following message:
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|...
不确定为什么会发生.
Not sure why it happens.
据我了解,我需要对yaml文件中data
键下的所有值进行编码.所以我做了base64编码,但是kubernetes仍然无法像我期望的那样处理yaml秘密文件.
As I understood, I need to encode all values under the data
key in the yaml file. So I did base64 encoding, but kubernetes still doesn't handle the yaml secret file as I expect.
更新:
我使用此命令在Mac上对data
值进行编码:
I used this command to encode data
values on my mac:
echo -n 'mega_secret_key' | openssl base64
推荐答案
我从编码数据中获得了解码后的值"mega_secret_key"和"really_secret_value1".似乎它们的编码方式不正确.因此,以正确的方式对数据进行编码:
I got the decoded values "mega_secret_key" and "really_secret_value1" from from your encoded data. Seems they are not encoded in right way. So, encode your data in right way:
$ echo "mega_secret_key" | base64
bWVnYV9zZWNyZXRfa2V5Cg==
$ echo "really_secret_value1" | base64
cmVhbGx5X3NlY3JldF92YWx1ZTEK
然后检查它们是否正确编码:
Then check whether they are encoded properly:
$ echo "bWVnYV9zZWNyZXRfa2V5Cg==" | base64 -d
mega_secret_key
$ echo "cmVhbGx5X3NlY3JldF92YWx1ZTEK" | base64 -d
really_secret_value1
这样就可以了.现在,在您的dummy-secret.yaml
中使用它们:
So they are ok. Now use them in your 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
.
这篇关于无法在Kubernetes中创建Secret:输入时存在非法的base64数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!