我想知道是否可以在 Secret.yml 中存储键值对。我希望能够将加密密钥存储为值,并将 id 存储为其密钥,我可以使用它来检索存储在 Secret.yml 中的加密密钥。
Kubernetes 是否提供此类功能?
编辑 我应该在我的原始消息中说,我希望能够在我的应用程序的生命周期内存储多个对并添加对,并在没有/最小更新我的应用程序的情况下即时使用不同的加密密钥。
我想知道是否可以在 Secret.yml 中存储键值对。我希望能够将加密密钥存储为值,并将 id 存储为其密钥,我可以使用它来检索存储在 Secret.yml 中的加密密钥。
Kubernetes 是否提供此类功能?
编辑 我应该在我的原始消息中说,我希望能够在我的应用程序的生命周期内存储多个对并添加对,并在没有/最小更新我的应用程序的情况下即时使用不同的加密密钥。
是的,秘密是键值对。您可以使用 kubectl 创建它们:
kubectl create secret the-secret-name --from-literal=KEY=VALUE
然后,您可以通过查看/编辑 yaml 规范
#get
kubectl get secret the-secret-name -o yaml
#edit
kubectl edit secret the-secret-name
一个秘密看起来像这样:
apiVersion: v1
kind: Secret
metadata:
name: the-secret-name
type: Opaque
data:
# the value is base64 encoded
KEY: VkFMVUUK
大多数情况下,最好在您的情况下使用两个键值对。原因是查找名称未知的键比查找键下的值更复杂/昂贵。
谢谢你们的回答。我发现在 Secret.yaml 中使用以下格式效果很好:
encryptionKey |
KeyName: 123456abcdef
SecondKeyName: abcdef123456
然后,我会在我的 Java 应用程序中将键值对作为 Map 并对其进行处理,例如,我可以搜索键KeyName
并获取我需要的值。
Kubernetes secret 将数据存储为键值对(参考:https ://kubernetes.io/docs/concepts/configuration/secret/ )。
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
key: dmFsdWU=
这里的值是 base64 编码的。