spring-boot - 如何使用 Spring Boot 将来自 Google Secret Manager 的 secret 作为环境变量注入(inject) Kubernetes Pod?

标签 spring-boot kubernetes google-secret-manager

为了布莱恩的一生,我该怎么做?Terraform用于在 GCP 中创建 SQL Server 实例。
Root密码和用户密码是随机生成的,然后放入Google Secret Manager。
数据库的 IP 通过私有(private) DNS 区域公开。
我现在如何获取用户名和密码以将数据库访问到我的 K8s 集群?在此处运行 Spring Boot 应用程序。
这是我想到的一个选择:
在我的部署中,我添加了一个 initContainer :

- name: secrets
  image: gcr.io/google.com/cloudsdktool/cloud-sdk
  args: 
  - echo "DB_PASSWORD=$(gcloud secrets versions access latest --secret=\"$NAME_OF_SECRET\")" >> super_secret.env
好的,现在怎么办?如何从这里将它放入我的应用程序容器中?
还有一些选项,如 bitnami/sealed-secrets ,我不喜欢,因为设置使用 Terraform已经并将 secret 保存在 GCP 中。使用 sealed-secrets 时我可以跳过使用 secret 管理器。与 Vault 相同国际海事组织。

最佳答案

除了评论中的其他答案和建议之外,我还想推荐两个您可能会感兴趣的工具。
第一个是secret-init :

secrets-init is a minimalistic init system designed to run as PID 1 inside container environments and it`s integrated with multiple secrets manager services, e.x. Google Secret Manager


第二个是kube-secrets-init :

The kube-secrets-init is a Kubernetes mutating admission webhook, that mutates any K8s Pod that is using specially prefixed environment variables, directly or from Kubernetes as Secret or ConfigMap.


它还支持与 Google Secret Manager 的集成:
用户可以将 Google secret 名称(以 gcp:secretmanager: 为前缀)作为环境变量值。 secrets-init将使用指定名称将任何环境值解析为引用的 secret 值。
这是一个很好的article关于它是如何工作的。

关于spring-boot - 如何使用 Spring Boot 将来自 Google Secret Manager 的 secret 作为环境变量注入(inject) Kubernetes Pod?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63923379/

相关文章:

java - 使用默认配置的 Spring Boot 应用程序的文件位置

linux - DotNet Core 2.1 在 Linux 中囤积内存

docker - Kubernetes PullImageError 使用带有私有(private)镜像的 Docker Hub

google-cloud-platform - 有没有办法在 GCP 中存储 secret ,类似于 Azure 保管库?

node.js - 将 env 变量从 Google 的 Secret Manager 加载到在 Google Cloud Run 上运行但未通过 Cloud Build 部署的 Docker 容器中?

java - Spring oauth2/oauth/token 凭证无效

spring-boot - keycloak 是否支持 mongodb 作为数据库?

java - 无法将 dockerized spring boot 应用程序连接到 dockerized postgresql

nginx - Kubernetes Nginx Ingress Controller 应该在什么命名空间?