Я пытаюсь понять, как использовать Hashicorp's Vault
с пружинной загрузкой.
Сначала я пытался следовать руководству:
https://spring.io/guides/gs/vault-config/#scratch
Но из-за изменений API я использовал следующую команду в CLI хранилища:
vault kv put secret/gs-vault-config example.username=demouser example.password=demopassword
, который сохранил оба, и я могу получить его с помощью следующей команды
vault kv get secret/gs-vault-config
Затем я создал Application.java
и MyConfiguration.java
, как описано в руководстве. Сначала я запустил программу, не запустив сервер хранилища, что привело к connection refused
.
Затем я запустил сервер хранилища и ввел имя пользователя и пароль из CLI. Из журнала я вижу, что он действительно входит в приложение и выписывает Здесь мы goooo
@SpringBootApplication
public class Application implements CommandLineRunner {
@Autowired
private VaultTemplate vaultTemplate;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
public void run(String... strings) throws Exception {
// You usually would not print a secret to stdout
System.out.println("Here we gooooo");
VaultResponse response = vaultTemplate.read("secret/gs-vault-config");
System.out.println("Value of username");
System.out.println("-------------------------------");
System.out.println(response.getData().get("example.username"));
System.out.println("-------------------------------");
System.out.println();
Но я не могу получить какие-либо данные из Vault - возможно, из-за проблем V1 и V2
2018-08-30 17:10:07.375 ERROR 21582 --- [ main] o.s.boot.SpringApplication : Application run failed
java.lang.IllegalStateException: Failed to execute CommandLineRunner
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:800) [spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:781) [spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:335) [spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1255) [spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1243) [spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
at hello.Application.main(Application.java:23) [classes!/:na]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_181]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_181]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_181]
at java.lang.reflect.Method.invoke(Method.java:498) ~[na:1.8.0_181]
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:48) [gs-vault-config-0.1.0.jar:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:87) [gs-vault-config-0.1.0.jar:na]
at org.springframework.boot.loader.Launcher.launch(Launcher.java:50) [gs-vault-config-0.1.0.jar:na]
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51) [gs-vault-config-0.1.0.jar:na]
Caused by: java.lang.NullPointerException: null
at hello.Application.run(Application.java:34) [classes!/:na]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:797) [spring-boot-2.0.3.RELEASE.jar!/:2.0.3.RELEASE]
... 13 common frames omitted
Кто-нибудь знает, есть ли подобное руководство к фрагменту кода spring-boot
, где данные извлекаются из хранилища, которое было введено с помощью механизма kv?