Невозможно прочитать значения свойств с помощью приложения config-client из службы сервера конфигурации PCF - PullRequest
0 голосов
/ 09 января 2019

В моих журналах PCF приложение config-client дает "ConfigServicePropertySourceLocator: не удалось найти PropertySource: 401 Несанкционированный "

У меня есть репозиторий gitlab для предоставления файлов свойств на конфигурационном сервере PCF. Если я проверяю Config Server -> управлять -> это дает " Конфиг сервер находится в сети "

Где мне не хватает конфигурации?

bootstrap.yml config-client-app

spring:
  application:
    name: <config-client-name>
  cloud:
    config:
      enabled: true
      name: <config-server-instance-name>
      uri: <uri details from view credential modal>
#      username: <tried different permutations to get it working>
#      password: <tried different permutations to get it working>
management: 
  security: 
    enabled: false

manifest.yml config-client-app

applications:
- name: <app-name>
  host: <app-name>
  memory: 1024M
  instances: 1
  path: /target/<app-name>-0.0.1-SNAPSHOT.jar
  buildpack: java_buildpack_offline
  services:
    - <pcf config server instance name>
  env:
    SPRING_PROFILES_ACTIVE: dev

Я проделал большую работу, чтобы получить некоторый результат, но не повезло, пример приложения работает нормально. Я попробовал свой собственный config-сервер и клиентское приложение config с репозиторием github, и это сработало.

Но в PCF я полностью застрял, пожалуйста, помогите.

Ответы [ 2 ]

0 голосов
/ 11 января 2019

@ Avhi - ваш ответ мне помог.

Моя ошибка заключалась в том, что я использовал неправильную зависимость и добавлял ненужную информацию. в bootstrap.yml

spring:
  application:
    name: <config-client-name>
  cloud:
    config:
      enabled: true
      name: <config-server-instance-name>
      uri: <uri details from view credential modal>
#      username: <tried different permutations to get it working> 
#      password: <tried different permutations to get it working>
management: 
  security: 
    enabled: false

name: <config-server-instance-name> нам нужно настроить имя файла свойств, которое мы собираемся указать из клиентского приложения, я предоставлял имя экземпляра config-server. Примечание: я узнал, что мы можем указать несколько файлов свойств, разделенных запятой.

uri: <uri details from view credential modal>
#      username: <tried different permutations to get it working> 
#      password: <tried different permutations to get it working>

Выше три свойства были бесполезны, и я потратил большую часть своего времени из-за этого.

Нам не нужно устанавливать эти значения, если мы не хотим связывать службу config-server в нашем приложении localhost: 8080.

Нет никакого вреда в предоставлении имени службы в нашем manifest.yml, и, поскольку оно не является частью приложения, это не создаст никаких проблем. Кстати, мы можем использовать веб-консоль CLI или PCF App Manager для создания и привязки сервиса к нашему приложению.

После настройки всего, мы можем ожидать, что веб-страница Spring Security введет имя пользователя и пароль (которые мы, очевидно, не знаем). если настроена пружинная защита, тогда нормально или мы можем отключить во время тестирования.

Я сделал две вещи, чтобы отключить и активировать все конечные точки привода (как я использую пружинную загрузку 2.x)

добавлены зависимости, как показано ниже:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-test</artifactId>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-rsa</artifactId>
    <!-- <version>1.0.5.RELEASE</version> -->
</dependency>

и создал SecurityConfiguration для явного отключения безопасности

@Configuration
@EnableWebSecurity
public class SecurityConfiguration  extends WebSecurityConfigurerAdapter{
    @Override
    protected void configure(HttpSecurity http) throws Exception{
        http.csrf().disable();
        http.authorizeRequests().antMatchers("/").permitAll();
    }
}

Чтобы сделать доступными все конечные точки исполнительных механизмов, я сделал следующее:

management: 
  endpoints: 
    web: 
      exposure: 
        include: "*"
0 голосов
/ 10 января 2019

Ничего не выглядит неправильно в вашей конфигурации. если вы видите, что сервер Config подключен к сети в PCF, это означает, что служба конфигурации правильно инициализирована и готова к использованию.

Но давайте попробуем с примером приложения, которое работает хорошо для вас.

Добавьте следующую информацию в вас build.gradle, если вы используете сборку Gradle (или добавьте pom.xml соответственно.)

  1. SCS (сервисы Spring Cloud) (упомянутые версии совместимы с springBootVersion = '2.0.6.RELEASE' Проверьте на совместимость, если вы используете другую версию spring-boot.)

    импорт {

        mavenBom "io.pivotal.spring.cloud:spring-cloud-services-dependencies:2.0.1.RELEASE"
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:Finchley.RELEASE"
    
     }
    
  2. включает зависимость config-client

compile("io.pivotal.spring.cloud:spring-cloud-services-starter-config-client")

Теперь давайте перейдем к bootstrap.yml: для выбора свойств достаточно только следующей информации

spring:
  application:
    name: <config-client-name>

Никаких изменений не требуется в application.yml, если вы используете тот же активный профиль при нажатии на PCF.

...