Spring Cloud Consul - служба не регистрирует контактный адрес на K8s

Я видел несколько вопросов по этому поводу, но не смог получить четкого ответа. У меня есть кластер Consul, работающий на кластере Openshift K8s. У меня также есть набор служб, которые необходимо зарегистрировать и использовать в Consul, которые также работают в том же кластере K8s.

Моя проблема в том, что службы регистрируются с бесконтактными адресами, которые выглядят как адреса модуля, а не как адрес службы K8s для модуля.

Следовательно, служба регистрируется сама, но проверки работоспособности не работают, и служба не может быть доступна через Consul.

Ниже моя конфигурация

spring.cloud.consul.host=myserver
spring.cloud.consul.port=8500
spring.cloud.consul.discovery.prefer-ip-address=false
spring.cloud.consul.discovery.prefer-agent-address=true
spring.cloud.consul.serviceName=${spring.application.name}
spring.cloud.consul.discovery.healthCheckPath=/actuator/health
spring.cloud.consul.discovery.healthCheckInterval=15s
spring.cloud.consul.discovery.health-check-critical-timeout=30m
spring.cloud.consul.discovery.tags=app-type=spring

spring.cloud.inetutils.ignoredInterfaces=docker0

Что мне нужно сделать, чтобы служба зарегистрировала контактный адрес, то есть адрес службы K8s?

Заранее большое спасибо за вашу помощь


person olibs    schedule 20.04.2020    source источник
comment
Просто добавим, что установка параметра Prefer-ip-address в значение true позволяет Consul очищать конечные точки работоспособности, если они находятся в одном пространстве имен Openshift, но не за его пределами, что является большой проблемой для нас, поскольку все команды разработчиков сервисов имеют собственное пространство имен, следовательно нам нужно название сервиса или маршрут.   -  person olibs    schedule 20.04.2020


Ответы (1)


Нашел решение!

spring.cloud.consul.discovery.health-check-url=http://${spring.application.name}-my-openshift-route-url/actuator/health
spring.cloud.consul.discovery.hostname=${spring.application.name}-my-openshift-route-url
spring.cloud.consul.discovery.port=80
spring.cloud.consul.discovery.scheme=http

Итак, установите

spring.cloud.consul.discovery.prefer-ip-address=false
spring.cloud.consul.discovery.prefer-agent-address=false

оба на false и добавьте строки из верхнего блока, и вы должны быть золотыми. Обратите внимание, что имя spring.application.name должно совпадать с именем вашей службы OpenShift.

person olibs    schedule 21.04.2020