Я собираю доказательство концепции, чтобы помочь идентифицировать gotchas, используя Spring Boot/Netflix OSS и Kubernetes вместе. Это также должно выработать связанные технологии, такие как Prometheus и Graphana.
У меня есть сервис Eureka, который начинается без каких-либо проблем в моем кластере Kubernetes. Это называется обнаружением и ему было присвоено имя "discovery-1551420162-iyz2c" при добавлении в K8 с использованием
kubectl run discovery --image=xyz/discovery-microservice --replicas=1 --port=8761
Для моего сервера конфигурации я пытаюсь использовать Eureka на основе логического URL-адреса, поэтому в моем bootstrap.yml у меня есть
server:
port: 8889
eureka:
instance:
hostname: configserver
client:
registerWithEureka: true
fetchRegistry: true
serviceUrl:
defaultZone: http://discovery:8761/eureka/
spring:
cloud:
config:
server:
git:
uri: https://github.com/xyz/microservice-config
и я начинаю использовать это
kubectl run configserver --image=xyz/config-microservice --replicas=1 --port=8889
Эта служба заканчивается запуском с именем configserver-3481062421-tmv4d. Затем я вижу исключения в журналах конфигурационного сервера, пытаясь найти экземпляр eureka и не могу.
У меня есть одна и та же настройка для этого, используя docker-compose локально со ссылками, и он запускает различные контейнеры без проблем.
discovery:
image: xyz/discovery-microservice
ports:
- "8761:8761"
configserver:
image: xyz/config-microservice
ports:
- "8888:8888"
links:
- discovery
Как я могу настроить что-то вроде eureka.client.serviceUri, чтобы мои микросервисы могли находить своих сверстников, не зная фиксированных IP-адресов в кластере K8?