我目前正在将Spring Cloud Vault Config集成到Spring Boot应用程序中。从主页:
Spring Cloud Vault Config使用应用程序名称和活动配置文件从Vault读取配置属性:
/secret/{application}/{profile}
/secret/{application}
/secret/{default-context}/{profile}
/secret/{default-context}
相反,我想提供我自己的位置,从中从Vault中提取属性,该位置不以/secret开头(例如/deployments/prod)。我一直在查阅参考文档,但我还没有找到具体的方法——有可能吗?
我在我的静态编程语言
项目中解决了同样的问题。但它也适用于Java。
我想在yaml配置中指定vault路径,所以我最终得到了以下解决方案,它允许您直接在引导中指定路径。yml使用清晰的语法,如:
spring:
cloud:
vault:
paths: "secret/your-app"
package com.your.app.configuration
import org.springframework.beans.factory.annotation.Value
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
import org.springframework.cloud.vault.config.VaultConfigurer
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
@Configuration
@ConditionalOnProperty(
prefix = "spring.cloud.vault", value = ["paths"],
matchIfMissing = false
)
class VaultConfig {
@Value("\${spring.cloud.vault.paths}")
private lateinit var paths: List<String>
@Bean
fun configurer(): VaultConfigurer {
return VaultConfigurer { configurer ->
paths.forEach {
configurer.add(it)
}
configurer.registerDefaultGenericSecretBackends(false)
configurer.registerDefaultDiscoveredSecretBackends(false)
}
}
}
org.springframework.cloud.bootstrap.BootstrapConfiguration=com.your.app.configuration.VaultConfig
不要忘记指定对配置的有效引用,而不是com.your.app.configuration.VaultConfig
如文档所述,在引导上下文中发生。
spring:
cloud:
vault:
paths:
- "secret/application"
- "secret/your-app"
它应该有效。
应该这样做。
@Configuration
public class VaultConfiguration {
@Bean
public VaultConfigurer configurer() {
return new VaultConfigurer() {
@Override
public void addSecretBackends(SecretBackendConfigurer configurer) {
configurer.add("secret/my-app/path-1");
configurer.add("secret/my-app/path-2");
configurer.registerDefaultGenericSecretBackends(false);
}
};
}
}
这样,您可以扫描放置在自定义路径中的机密
问候Arun
我能够使用通用后端属性将路径转换为我要查找的路径。类似于:
spring.cloud.vault:
generic:
enabled: true
backend: deployments
profile-separator: '/'
default-context: prod
application-name: my-app
不幸的是,这也会拾取Vault位置,如部署/my app和部署/prod/activeProfile,因此请小心不要在这些位置拾取任何您不想拾取的属性。
似乎有一种愿望(和一种实现)允许以更编程的方式指定这些路径。
Secret 对象类型用来保存敏感信息,例如密码、OAuth 令牌和 ssh key。将这些信息放在 secret 中比放在 pod 的定义中或者 docker 镜像中来说更加安全和灵活。 Secret 概览 Secret 是一种包含少量敏感信息例如密码、token 或 key 的对象。这样的信息可能会被放在 Pod spec 中或者镜像中;将其放在一个 secret 对象中可以更好地控制它的用途
但当我从另一个位置(如root或其他位置)运行时,它会抛出一个错误: 线程“main”java.lang.RuntimeException中出现异常:无法在org.apache.hadoop.hive.ql.util.ResourceDownLoader.ensureDirectory(resourceDownLoader.java:123)(org.apache.hadoop.hive.ql.u
在启动应用程序时获取以下错误
我是SpringBoot的新手,我正在尝试使用microservice-a从配置服务器获取配置,但在设置服务器并重新启动microservice-a后,我看不到相应的日志信息,似乎根本无法获取。 在microservice-a中,我更改了应用程序。属性到引导。属性 pom。xml 在配置服务器中,我添加了注释@EnableConfigServer和set应用程序。属性 application.pr
但就是不管用。我也试过在-d中使用这个选项,但这也不起作用。 谢谢你的帮助
问题内容: 我当然缺少有关喷油器的一些基本知识,但是我无法理解为什么 还有这个 按预期工作,而这 会抛出 错误:[$ injector:unpr]未知提供程序:$ provideProvider <-$ provide 如下所述,与提供者有一些特殊的关系,而与实例打交道时,我不确定使块如此特别的东西。 结果,是否没有办法到达外部块,例如,使用(尽管似乎也获得了提供者实例)? 除了好奇心外,这个问题