Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SCS Configuration Help Needed #108

Open
emreyokur opened this issue Jan 26, 2024 · 0 comments
Open

SCS Configuration Help Needed #108

emreyokur opened this issue Jan 26, 2024 · 0 comments

Comments

@emreyokur
Copy link

emreyokur commented Jan 26, 2024

Hi,

We are experiencing problem integrating scs by using spring-cloud-bindings. Whatever we have tried, we could not bind scs to our app.

We have the below argument set to true on bootstrap.yml

org:
  springframework:
    cloud:
      bindings:
        boot:
          enable: true

We have added the below dependency to pom.xml

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>

We provided the necessary scs configuration parameters to the pod via a servicebinding secret, and we can see they are mounted to spring bindings root inside the container.

When we start the application, scs is being processed before cloud bindings processor. It is trying to connect config server over localhost:8888 and fails, then bindings are being processed and application is starting. We can inspect the properties after application has started successfully by checking actuator/configprops, all binding properties are being displayed correctly, however the app is not integrated with config server.

Our spring boot version is 2.7, spring cloud version is 2021.0.6 and cloud-bindings version is 1.14.0.

Startup logs are as follows.

:: Spring Boot ::               (v2.7.11)

2024-01-26 09:50:41.343
             INFO  [main:getRemoteEnvironment] org.springframework.cloud.config.client.ConfigServicePropertySourceLocator : **Fetching config from server at : http://localhost:8888/**
2024-01-26 09:50:41.545
             INFO  [main:getRemoteEnvironment] org.springframework.cloud.config.client.ConfigServicePropertySourceLocator : Connect Timeout Exception on Url - http://localhost:8888/. Will be trying the next url if available
2024-01-26 09:50:41.545
             WARN  [main:locate] org.springframework.cloud.config.client.ConfigServicePropertySourceLocator : Could not locate PropertySource: I/O error on GET request for "http://localhost:8888/DEVOPS.APPS.devops-pas-sandbox1/default": Connection refused; nested exception is java.net.ConnectException: Connection refused
2024-01-26 09:50:41.547
             INFO  [main:logStartupProfileInfo] org.springframework.boot.SpringApplication : No active profile set, falling back to 1 default profile: "default"
2024-01-26 09:50:41.558
             INFO  [main:logTo] org.springframework.boot.logging.DeferredLog : **Creating binding-specific PropertySource from Kubernetes Service Bindings**
2024-01-26 09:50:43.467
             INFO  [main:setSerializationId] org.springframework.cloud.context.scope.GenericScope : BeanFactory id=404a518b-3bec-3cba-b9b1-c91c9daa50e9
2024-01-26 09:50:44.456
             INFO  [main:initialize] org.springframework.boot.web.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)

As per the logs, bindings are being processed after config server property fetching has finished, so we thought there is a problem with beanprocessing orderings, we checked the code, and compared the ordering values between ConfigDataEnvironmentPostProcessor.ORDER and BindingSpecificEnvironmentPostProcessor.ORDER and found that the latter is "ConfigDataEnvironmentPostProcessor.ORDER - 1;" so it should be processed with a higher precedence. However the logs shown above behaves like vice versa.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant