Vault Integration with Spring boot using APPROLE pull method - spring

I'm new to the Vault. I'm trying to integrate Vault with spring boot using APPROLE as the authentication method. My configuration of bootstrap.yml is as follows:
spring:
application:
name: <application-name>
cloud:
vault:
host: <host-url>
scheme : https
port: <port>
kv-version: 2
namespace: <namespace-name>
authentication: APPROLE
app-role:
role-id: <role-id>
role: <role-name>
app-role-path: <path>
when I'm running using this configuration. I'm getting error
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'vaultTemplate' defined in class path resource [org/springframework/cloud/vault/config/VaultAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.vault.core.VaultTemplate]: Factory method 'vaultTemplate' threw exception; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'vaultSessionManager' defined in class path resource [org/springframework/cloud/vault/config/VaultAutoConfiguration.class]: Unsatisfied dependency expressed through method 'vaultSessionManager' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'clientAuthentication' defined in class path resource [org/springframework/cloud/vault/config/VaultAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.vault.authentication.ClientAuthentication]: Factory method 'clientAuthentication' threw exception; nested exception is java.lang.IllegalArgumentException: Token (spring.cloud.vault.token) must not be empty
I'm wondering why it's asking for TOKEN if I used the authentication method as APPROLE.
Also, is it possible to use full pull mode for APPROLE authentication since secret-id is of dynamic nature and can't be stored in the configuration file?

The sample yaml for spring cloud configuration using APPROLE authentication is described below. There are a few things that are misspelled in the config you have mentioned
cloud:
vault:
uri: https:<vault-uri>
authentication: APPROLE
app-role:
roleId: <roleId>
secretId: <secretId>

Related

Spring Cloud Config Server with GIT Repo configured is not starting up successfully

I am building Spring Cloud Config server with Sprint Boot v2.6.12 and Spring Cloud Config Server v3.1.1. Below is the application.yml configuration,
spring:
application:
name: config-server
main:
allow-bean-definition-overriding: true
cloud:
config:
server:
git:
uri: git#github.aus.thenational.com:demo/case_configuration.git
skip-ssl-validation: true
default-label: master
clone-on-start: true
clone-submodules: true
force-pull: true
refresh-rate: 60
search-paths:
- case/folder1
- case/folder2
Exception we are getting while server startup is as below,
2022-12-21 09:51:10.827 WARN 11524 --- [main] [CID:] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'healthContributorRegistry' defined in class path resource [org/springframework/boot/actuate/autoconfigure/health/HealthEndpointConfiguration.class]: Unsatisfied dependency expressed through method 'healthContributorRegistry' parameter 2; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'configServerHealthIndicator' defined in class path resource [org/springframework/cloud/config/server/config/EnvironmentRepositoryConfiguration$ConfigServerActuatorConfiguration.class]: Unsatisfied dependency expressed through method 'configServerHealthIndicator' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'searchPathCompositeEnvironmentRepository' defined in class path resource [org/springframework/cloud/config/server/config/CompositeConfiguration.class]: Unsatisfied dependency expressed through method 'searchPathCompositeEnvironmentRepository' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'defaultEnvironmentRepository' defined in class path resource [org/springframework/cloud/config/server/config/DefaultRepositoryConfiguration.class]: Unsatisfied dependency expressed through method 'defaultEnvironmentRepository' parameter 1; nested exception is org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named 'multipleJGitEnvironmentProperties' is expected to be of type 'org.springframework.cloud.config.server.environment.MultipleJGitEnvironmentProperties' but was actually of type 'com.sun.proxy.$Proxy140'
***************************
APPLICATION FAILED TO START
***************************
Description:
The bean 'multipleJGitEnvironmentProperties' could not be injected because it is a JDK dynamic proxy
The bean is of type 'com.sun.proxy.$Proxy140' and implements:
org.springframework.cloud.config.server.support.HttpEnvironmentRepositoryProperties
org.springframework.cloud.config.server.support.EnvironmentRepositoryProperties
org.springframework.aop.SpringProxy
org.springframework.aop.framework.Advised
org.springframework.core.DecoratingProxy
Expected a bean of type 'org.springframework.cloud.config.server.environment.MultipleJGitEnvironmentProperties' which implements:
Action:
Consider injecting the bean as one of its interfaces or forcing the use of CGLib-based proxies by setting proxyTargetClass=true on #EnableAsync and/or #EnableCaching.
I tried configuring http and https proxy settings along with other GIT configurations. But that didnt work.
Expectation is, config server should be up successfully.
Tried to solve the issue by configuring spring AOP related configurations in application.yml , but that didnt work too.
Seems like something something to do with libraries versions.

Why my spring boot app couldn't access service of the redis node provided by sentinel but that redis node is actually healthy

Platform: Windows 10
JDK: 11
Command to start redis and sentinel:
cd PATH_TO_REDIS\redis_s6379
redis-server.exe redis.windows.conf
redis-server.exe sentinel.conf --sentinel
Redis client: jedis
Detailed log
partial log
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.micrometer.spring.web.servlet.WebMvcMetricsFilter]: Factory method 'webMetricsFilter' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'endpointHandlerMapping' defined in class path resource [org/springframework/boot/actuate/autoconfigure/EndpointWebMvcManagementContextConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.endpoint.mvc.EndpointHandlerMapping]: Factory method 'endpointHandlerMapping' threw exception; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mvcEndpoints' defined in class path resource [org/springframework/boot/actuate/autoconfigure/EndpointWebMvcManagementContextConfiguration.class]: Invocation of init method failed; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'healthMvcEndpoint' defined in class path resource [org/springframework/boot/actuate/autoconfigure/EndpointWebMvcManagementContextConfiguration.class]: Unsatisfied dependency expressed through method 'healthMvcEndpoint' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.boot.actuate.autoconfigure.EndpointAutoConfiguration': Bean instantiation via constructor failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.autoconfigure.EndpointAutoConfiguration$$EnhancerBySpringCGLIB$$700f4ba6]: Constructor threw exception; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.actuate.autoconfigure.HealthIndicatorAutoConfiguration$RedisHealthIndicatorConfiguration': Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jedisConnectionFactory' defined in class path resource [com/corp_name/corp_config/RedisConfig.class]: Invocation of init method failed; nested exception is redis.clients.jedis.exceptions.JedisConnectionException: All sentinels down, cannot determine where is mymaster master is running...
The solution for this one is to make sure your sentinel.conf file have the right config.
Add 127.0.0.1 redis-server in your host file. Use "redis-server" as the host value of redis for both the configurations of file("redis.windows.conf") and file("sentinel.conf").
The above solution is inferred from reading the source code file("Connection.java").
redis/clients/jedis/Connection.java:184
Some prerequisite:
windows doesn't support ping the host itself using ipv4 address but mac does.

Install reportportal on kube get error : starting Tomcat context. Exception: org...message: Error creating bean with name 'servletEndpointRegistrar'

I've installed reportportal 5.7.0 to kubernetes cluster. I've implemented it from doc:https://github.com/reportportal/kubernetes/tree/develop/reportportal. From the doc,I have to install rabbitmq, postgres and minio for reportportal. I've successfully installed abbitmq, postgres and minio. All pods were running but when I've installed reportportal. Report-portal-api pods was error. I've get logs form the pods then the pods logs shown that
o.s.b.web.embedded.tomcat.TomcatStarter : Error starting Tomcat
context. Exception: org.springframework
.beans.factory.BeanCreationException. Message: Error creating bean
with name 'servletEndpointRegistrar' defined in class path resource
[org/springframework/bo
ot/actuate/autoconfigure/endpoint/web/ServletEndpointManagementContextConfiguration$WebMvcServletEndpointManagementContextConfiguration.class]:
Bean instantia tion via factory method failed; nested exception is
org.springframework.beans.BeanInstantiationException: Failed to
instantiate [org.springframework.boot.actu
ate.endpoint.web.ServletEndpointRegistrar]: Factory method
'servletEndpointRegistrar' threw exception; nested exception is
org.springframework.beans.factory.B eanCreationException: Error
creating bean with name 'infoEndpoint' defined in class path resource
[org/springframework/boot/actuate/autoconfigure/info/InfoEnd
pointAutoConfiguration.class]: Bean instantiation via factory method
failed; nested exception is
org.springframework.beans.BeanInstantiationException: Failed to
instantiate [org.springframework.boot.actuate.info.InfoEndpoint]:
Factory method 'infoEndpoint' threw exception; nested exception is
org.springframework.be ans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'infoContributorComposite' defined in
URL [jar:file:/service-api-5.7.0-exec.jar!/BOO
T-INF/classes!/com/epam/ta/reportportal/info/InfoContributorComposite.class]:
Unsatisfied dependency expressed through constructor parameter 0;
nested excepti on is
org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name 'analyzerInfoContributor' defined in URL
[jar:file:/serv
ice-api-5.7.0-exec.jar!/BOOT-INF/classes!/com/epam/ta/reportportal/info/AnalyzerInfoContributor.class]:
Unsatisfied dependency expressed through constructor p arameter 0;
nested exception is
org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'managementTemplate' defined in class p ath
resource
[com/epam/ta/reportportal/core/configs/rabbit/AnalyzerRabbitMqConfiguration.class]:
Bean instantiation via factory method failed; nested exceptio n is
org.springframework.beans.BeanInstantiationException: Failed to
instantiate
[com.epam.ta.reportportal.core.analyzer.auto.client.RabbitMqManagementClient]
: Factory method 'managementTemplate' threw exception; nested
exception is com.epam.ta.reportportal.exception.ReportPortalException:
Unclassified Report Porta l Error
I suspected that reportportal connect to rabbitmq was error but I'm not sure. What should I do?
That's true. Double-check your rabbitmq configuration: connection URL, open ports, etc. We have a step-by-step guide on Kubernetes deployment: https://github.com/reportportal/kubernetes/tree/develop/reportportal

Cassandra-3.7 connection from Spring boot 2.1.2/2.1.6

We have an application developed in spring boot and we do use cassandra.
Our application was suing spring boot 1.4, cassandra 3.7 and JDK 1.8
Now we are tryign to upgrade spring boot to 2.1.2/2.1.6 and JDK 1.8 to Open JDK 11.0.2 and cassandra is as : 3.7
So when we are trying, we are recieving the
Caused by: com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed.
(com.datastax.driver.core.exceptions.TransportException: [HOSTS] Error writing)
Not sure what is going wrong.
Couple of pointers is:
1) Application is running fine on local on eclipse and this is issue when we are trying to start the application in server
Here is the stacktrace I see:
WARN 10473 --- [ main] org.eclipse.jetty.webapp.WebAppContext : Failed startup of context o.s.b.w.e.j.JettyEmbeddedWebAppContext#75a118e6{application,/console,[org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory$LoaderHidingResource#1d540566],UNAVAILABLE}
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletEndpointRegistrar' defined in class path resource [org/springframework/boot/actuate/autoconfigure/endpoint/web/ServletEndpointManagementContextConfiguration$WebMvcServletEndpointManagementContextConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.endpoint.web.ServletEndpointRegistrar]: Factory method 'servletEndpointRegistrar' threw exception;
nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'healthEndpoint' defined in class path resource [org/springframework/boot/actuate/autoconfigure/health/HealthEndpointConfiguration.class]: Unsatisfied dependency expressed through method 'healthEndpoint' parameter 1;
nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'healthIndicatorRegistry' defined in class path resource [org/springframework/boot/actuate/autoconfigure/health/HealthIndicatorAutoConfiguration.class]: Bean instantiation via factory method failed;
nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.actuate.health.HealthIndicatorRegistry]: Factory method 'healthIndicatorRegistry' threw exception;
nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'org.springframework.boot.actuate.autoconfigure.cassandra.CassandraHealthIndicatorAutoConfiguration': Unsatisfied dependency expressed through constructor parameter 0;
nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cassandraTemplate' defined in class path resource [CassandraDatabaseConfig.class]: Bean instantiation via factory method failed;
nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.cassandra.core.CassandraAdminTemplate]: Factory method 'cassandraTemplate' threw exception;
nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [CassandraDatabaseConfig.class]: Bean instantiation via factory method failed;
nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.cassandra.SessionFactory]: Factory method 'sessionFactory' threw exception;
nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'session' defined in class path resource [CassandraDatabaseConfig.class]: Invocation of init method failed;
nested exception is com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: host1:port1 (com.datastax.driver.core.exceptions.TransportException: [host1:port1] Error writing))
at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:627)
Please let me know if any more additional details needed.
Tried to changed version of Cassandra driver version, explicilty trying to logging to Cassandra
This is our CassandraConfig class where we create the cluster object.
CassandraClusterFactoryBean cluster = new CassandraClusterFactoryBean();
cluster.setContactPoints(contactPoints);
cluster.setPort(Integer.valueOf(port));
cluster.setUsername(userName);
cluster.setPassword(password);
return cluster;
Server should start by connecting to cassandra

org.springframework.beans.factory.UnsatisfiedDependencyException:oracle driver not found

I am using SPRING BOOT ORACLE JPA with GRADLE a simple project but while running I am getting:
org.springframework.beans.factory.UnsatisfiedDependencyException:
Error creating bean with name
'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration':
Unsatisfied dependency expressed through constructor parameter 0;
nested exception is
org.springframework.beans.factory.BeanCreationException: Error
creating bean with name 'dataSource' defined in class path resource
[org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Hikari.class]:
Bean instantiation via factory method failed; nested exception is
org.springframework.beans.BeanInstantiationException: Failed to
instantiate [com.zaxxer.hikari.HikariDataSource]: Factory method
'dataSource' threw exception; nested exception is
java.lang.IllegalStateException: Cannot load driver class:
oracle.jdbc.driver.OracleDriver
My application.properties are:
server.port=8082 # create n drop tables, loads import.sql
spring.jpa.hibernate.ddl-auto=create-drop
spring.datasource.url=jdbc:oracle:thin:#//138.69.14.63:1521/drbadev
spring.datasource.username=$$$$$$$$$$ spring.datasource.password=$$$$$$
spring.datasource.driver-class-name=oracle.jdbc.driver.OracleDriver
What can I do to solve this?

Resources