Kubernetes 在 Secret.yml 中存储键值对

Kubernetes storing key-value pair in Secret.yml

我想知道是否可以在 Secret.yml 中存储键值对。 我希望能够将加密密钥存储为一个值,将一个 id 存储为其密钥,我可以使用它来检索存储在 Secret.yml 中的加密密钥。

Kubernetes 是否提供此类功能?

编辑 我应该在我的原始消息中说,我希望能够在我的应用程序的生命周期内存储多对和添加对,并即时使用不同的加密密钥 without/minimal 更新我的应用程序。

Kubernetes secret 将数据存储为键值对(参考:https://kubernetes.io/docs/concepts/configuration/secret/)。

apiVersion: v1
kind: Secret
metadata:
  name: mysecret
type: Opaque
data:
  key: dmFsdWU=

这里的值是base64编码的。

是的,secrets是键值对。您可以使用 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

大多数时候,在您的情况下最好使用两个键值对。这样做的原因是 complicated/expensive 查找具有未知名称的键比查找键下的值更 complicated/expensive。

谢谢大家的回答。我发现在 Secret.yaml 中使用以下格式效果很好:

encryptionKey |
KeyName: 123456abcdef
SecondKeyName: abcdef123456

然后我会在我的 Java 应用程序中将键值对作为 Map 获取,并这样对待它,例如,我可以搜索键 KeyName 并获取我需要的值.