使用 K8s configmaps 传递应用程序配置

passing application configuration using K8s configmaps

如何使用 configmapsapplication.properties 传递给 Spring 启动应用程序。由于application.yml文件包含敏感信息,因此需要传入secretsconfigmaps。在这种情况下,我们必须将敏感和非敏感配置数据都传递给 Spring boot pod 的选项是什么。 我目前正在使用 Spring 云配置服务器,Spring 云配置服务器可以使用 encrypt.key 加密敏感数据并解密密钥。

您可以将 Secret 作为卷挂载,与 ConfigMaps 相同。例如:

创建密钥。

kubectl create secret generic ssh-key-secret --from-file=application.properties

然后挂载为卷:

apiVersion: v1
kind: Pod
metadata:
  name: secret-test-pod
  labels:
    name: secret-test
spec:
  volumes:
  - name: secret-volume
    secret:
      secretName: ssh-key-secret
  containers:
  - name: ssh-test-container
    image: mySshImage
    volumeMounts:
    - name: secret-volume
      readOnly: true
  mountPath: "/etc/secret-volume"

更多信息见https://kubernetes.io/docs/concepts/configuration/secret/

@paltaa 描述的 ConfigMaps 可以解决非敏感信息的问题。对于敏感信息,我会使用 sealedSecret.

Sealed Secrets 由两部分组成:

  • 集群端控制器/操作员
  • 客户端实用程序:kubeseal

kubeseal 实用程序使用非对称加密来加密只有控制器才能解密的秘密。

这些加密的秘密编码在 SealedSecret 资源中,您可以将其视为创建秘密的秘诀。

安装后,您可以像往常一样创建您的秘密,然后您可以:

kubeseal --format=yaml < secret.yaml > sealed-secret.yaml

您可以安全地将您的 sealedSecret 推送到 github 等

这个正常的 kubernetes 秘密将在几秒钟后出现在集群中,您可以像使用您直接创建的任何秘密一样使用它(例如,从 Pod 引用它)。