Как IgnoredPatterns в весеннем облачном шлюзе как zuul?

Есть ли какой-то остальной интерфейс, который является внутренним в следующей службе?

Я нашел только предложение, как игнорировать сервис в весенней проблеме с облачным шлюзом. https://github.com/spring-cloud/spring-cloud-gateway/issues/185

У кого-нибудь есть хорошая идея для этого?


person Angle Tom    schedule 10.08.2019    source источник


Ответы (1)


Прошло много времени с тех пор, как вы спросили, а хорошего ответа пока нет. Я столкнулся с той же проблемой, и я не смог найти ничего лучше, чем упомянутое вами предложение.

Для протокола мне удалось скрыть нежелательные услуги, используя эту стратегию. В моем сценарии у меня есть Spring Cloud Gateway, использующий Spring Cloud Kubernetes. Таким образом, шлюз обнаруживает все службы K8s в одном пространстве имен.

Прежде всего, я добавил метку expose: "true" к тем сервисам, которые будут доступны миру через шлюз:

kind: Service
apiVersion: v1
metadata:
  name: microservice-spring-boot
  namespace: my-namespace
  labels:
    expose: "true"

Затем я использовал метку как условие в include-expression из локатора:

spring:
  cloud:
    gateway:
      discovery:
        locator:
          enabled: true # Create routes for the discovered services
          include-expression: metadata['expose'] == 'true'

Spring Cloud Kubernetes автоматически добавляет значения из меток сервиса K8s в обнаруженные метаданные сервиса. Это настраивается в этом свойстве, которое по умолчанию равно true:

spring.cloud.kubernetes.discovery.metadata.labels-prefix

Шлюз будет иметь маршруты только для сервисов K8s, соответствующих этой метке, таким образом, открывая только их и скрывая любые другие.

person Angel Pinazo Perpiñán    schedule 05.02.2021