为什么在配置映射时不需要对k8s机密进行base64编码?
在创建配置图时,您只需执行以下操作:
apiVersion: v1
kind: ConfigMap
metadata:
name: my-configmap
data:
SOME_KEY: a string value
但是当你想要创建一个秘密时,你必须使用echo -n "some secret string" | base64
,然后将其结果放在一个文件中,如下所示:
apiVersion: v1
kind: Secret
metadata:
name: my-secret
type: Opaque
data:
SOME_KEY: c29tZSBzZWNyZXQgc3RyaW5n
我真的好奇为什么会有这种差异? kubernetes秘密只是base64编码的字符串?我希望秘密在kubernetes中加密存储。
秘密可以包含二进制数据(类型为map[string][]byte
),字节数组在JSON序列化中进行base64编码。
ConfigMaps只包含字符串数据(类型为map[string]string
),因此JSON序列化只输出字符串。
在1.10中,ConfigMaps有一个新的binaryData
字段,允许存储二进制数据,这是基本的64编码,就像秘密一样。 https://github.com/kubernetes/kubernetes/pull/57938