为什么在配置映射时不需要对k8s机密进行base64编码?

问题描述 投票:10回答:1

为什么在配置映射时不需要对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中加密存储。

base64 kubernetes
1个回答
11
投票

秘密可以包含二进制数据(类型为map[string][]byte),字节数组在JSON序列化中进行base64编码。

ConfigMaps只包含字符串数据(类型为map[string]string),因此JSON序列化只输出字符串。

在1.10中,ConfigMaps有一个新的binaryData字段,允许存储二进制数据,这是基本的64编码,就像秘密一样。 https://github.com/kubernetes/kubernetes/pull/57938

© www.soinside.com 2019 - 2024. All rights reserved.