问题描述
如何使用 application.properties
将 configmaps
传递给 Spring 启动应用程序。由于 application.yml
文件包含敏感信息,因此需要传入 secrets
和 configmaps
。在这种情况下,我们必须将敏感和非敏感配置数据传递给 Spring 引导 Pod 的选项是什么。
我目前正在使用 Spring 云配置服务器,Spring 云配置服务器可以使用 encrypt.key
加密敏感数据并解密密钥。
解决方法
@paltaa 描述的 ConfigMaps 可以解决非敏感信息的问题。对于敏感信息,我会使用 sealedSecret。
Sealed Secrets 由两部分组成:
- 集群端控制器/操作员
- 客户端实用程序:kubeseal
kubeseal 实用程序使用非对称加密来加密只有控制器才能解密的机密。
这些加密的秘密被编码在一个 SealedSecret 资源中,您可以将其视为创建秘密的秘诀。
安装后,您可以照常创建您的秘密,然后您可以:
kubeseal --format=yaml < secret.yaml > sealed-secret.yaml
你可以安全地将你的sealedSecret推送到github等
这个普通的 kubernetes secret 将在几秒钟后出现在集群中,您可以像使用直接创建的任何 secret 一样使用它(例如,从 Pod 中引用它)。
,您可以将 Secret 挂载为卷,与 ConfigMap 相同。例如:
创建秘密。
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/ 中的更多信息