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

В моих журналах PCF приложение config-client выдает сообщение «ConfigServicePropertySourceLocator: не удалось найти PropertySource: 401 Unauthorized»

У меня есть репозиторий gitlab для предоставления файлов свойств на сервере конфигурации PCF. Если я проверю Config Server -> manage ->, появится сообщение "Config server is online"

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

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

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

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


person Shiv Prakash    schedule 09.01.2019    source источник
comment
Вы связались со службой поддержки PCF?   -  person spencergibb    schedule 09.01.2019
comment
@spencergibb Нет, я не   -  person Shiv Prakash    schedule 09.01.2019
comment
а.) Попробуйте упростить то, что вы делаете. С SCS вы сможете обойтись только spring.application.name, установленным в boostrap.yml. Многое для вас автоматизировано, так что удалите все остальное и попробуйте получить базовое работающее приложение. б.) Убедитесь, что вы следуете приведенным здесь инструкциям - ›docs.pivotal.io/spring-cloud-services/2-0/common/config-server/ и загрузите соответствующие зависимости клиента SCS. Если у вас не получается заставить это работать, начните с образца приложения, которое работает, и постепенно развивайте его. Это поможет определить, что не работает   -  person Daniel Mikusa    schedule 09.01.2019
comment
Я понимаю, что мне может не понадобиться много деталей в ma ifest.yml. но, если я не предоставлю подробностей, при запуске приложения на pcf он пытается найти сервер comfig на localhost: 8888   -  person Shiv Prakash    schedule 09.01.2019
comment
Вы используете плитку Spring Cloud Services (SCS) Pivotal, предоставленную сервером Config Server, или предоставляете свой собственный?   -  person K.AJ    schedule 09.01.2019
comment
СКС, наверное. Один идет со стандартным планом.   -  person Shiv Prakash    schedule 09.01.2019


Ответы (2)


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

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

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

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

    import {

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

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

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

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

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

person Avhi    schedule 10.01.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 -boot 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: "*"
person Shiv Prakash    schedule 11.01.2019