如何使用Java访问Kubernetes for MongoDB中的凭据?

我正在使用 Kubernetes MongoDB 上使用Java Springboot 。目前,我只是在应用程序属性中对URI进行了硬编码,我想知道

如何使用Java访问Kubernetes上的MongoDB凭据?

zhangzhuhui 回答:如何使用Java访问Kubernetes for MongoDB中的凭据?

将凭据传递到Kubernetes容器的推荐方法是使用secrets并将其作为环境变量或卷公开给应用程序。上面的链接详细描述了每种方法的工作原理。

,

如果我正确理解了这个问题,那就是专门关于在Kubernetes上运行的Java Spring Boot应用程序。

我几乎没有选择...在Kubernetes上运行时有些选项不是那么安全或专有,但在这里仍然提到:

  • 环境变量,其值在deployment/pod configuration中。有权访问配置的每个人都可以看到它们。

    使用${<env-var>} / ${<end-var>:<default-value>}访问Spring Boot的application.properties/.yaml文件中的环境变量。例如,如果DB_USERNAMEDB_PASSWORD是两个这样的环境变量:

    spring.data.mongodb.username = ${DB_USERNAME}
    spring.data.mongodb.password = ${DB_PASSWORD}
    

    ...或

    spring.data.mongodb.uri = mongodb://${DB_USERNAME}:${DB_PASSWORD}@<host>:<port>/<dbname>
    

    无论应用程序使用spring.data.mongodb.*属性还是将自定义名称的属性注入带有@Configuration的{​​{1}}类中的自定义名称,此方法都将起作用。

  • 基于在容器中启动Java应用程序的方式,可以在部署/吊舱配置中定义startup arguments,类似于上面的要点。

  • 环境变量,其值从secret(s)填充。如上所述,从SpringBoot访问环境变量。

  • Secrets as files-这些秘密将“出现”在动态添加到容器中某个位置/目录的文件中;它将需要您定义自己的@Value类,该类使用@Configuration从文件中加载用户名和密码。

  • 整个@PropertySource可以放在ConfigMap中。请注意,这些属性将采用明文形式。然后使用populate a Volume和ConfigMap,以便将application.properties添加到容器中的某个位置/目录。 Point使用application.properties作为环境启动到该位置。 var,系统属性或 program 参数。

  • Spring Cloud Vault

  • 其他一些外部保管库类型的安全存储-init container可以获取db凭据,并使它们可用于Java应用程序,该文件位于同一容器中共享卷上的文件中。

  • Spring Cloud Config ...即使您不太可能希望将db凭据放入服务器存储后端的默认实现-git中。

本文链接:https://www.f2er.com/3099762.html

大家都在问