我们的服务在kubernetes集群中运行。 我正在尝试使我们的服务受到SSL的保护。 为此,我添加到application.properties: 我想从集群中定义的kubernetes secret中获取密钥库密码。 服务开始运行时,出现错误Password verifi ...
提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供 中文繁体 英文版本 中英对照 版本,有任何建议请联系yoyou2525@163.com。
我正在按照本指南使用机密: https : //docs.spring.io/spring-cloud-kubernetes/docs/current/reference/html/index.html#secrets-propertysource 。
说的很粗略。
保存秘密
deployment.yml 文件中的引用机密
containers: - env: - name: DB_USERNAME valueFrom: secretKeyRef: name: db-secret key: username - name: DB_PASSWORD valueFrom: secretKeyRef: name: db-secret key: password
然后它说“您可以通过多种方式选择要使用的 Secret:”并给出 3 个示例。 但是,如果不执行任何这些步骤,我仍然可以完美地看到我的 env 中的秘密。 此外,第 1 步和第 2 步中的操作独立于 spring boot(将机密保存并移动到环境变量中)
我的问题:
您可以通过以下方式从 secret 挂载所有 env 变量:
containers:
- name: app
envFrom:
- secretRef:
name: db-secret
至于 Spring 从哪里获取秘密 - 我不是 Spring 的专家,但您提供的链接中似乎已经有解释:
启用后,Fabric8SecretsPropertySource 从以下来源查找 Kubernetes 的 Secret:
从秘密坐骑递归读取
以应用程序命名(由 spring.application.name 定义)
匹配一些标签
所以它从秘密挂载中获取秘密(如果你将它们作为卷挂载)。 它还扫描 Kubernetes API 中的秘密(我猜在应用程序运行的相同命名空间中)。 它可以通过使用 Kubernetes serviceaccount 令牌来实现,该令牌默认始终挂载到 pod 中。 这取决于 Kubernetes RBAC 权限授予 pod 的 serviceaccount。
因此它尝试使用 Kubernetes API 搜索机密并将它们与应用程序名称或应用程序标签进行匹配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.