Kubernetes Nginx Ingress Rabbitmq Управление и Кибана - PullRequest
1 голос
/ 23 июня 2019

В моем кластере AKS у меня есть входной контроллер Nginx, который я использовал для обратного прокси-сервиса моей службы kibana, работающей на AKS. Однако я хочу добавить другие http-сервисы через консоль управления rabbitmq.

Я не могу заставить оба работать со следующей конфигурацией:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-aegis
  namespace: dev
  annotations:
    kubernetes.io/ingress.class: nginx
    certmanager.k8s.io/cluster-issuer: letsencrypt-prod
    nginx.ingress.kubernetes.io/rewrite-target: /    
spec:
  tls:
  - hosts:
    - dev.endpoint.net
    secretName: dev-secret   
  rules:
  - host: dev.endpoint.net
    http:
      paths:
      - path: /
        backend:
          serviceName: kibana-kibana
          servicePort: 5601
      - path: /rabbit
        backend:
          serviceName: rabbitmq
          servicePort: 15672

Kibana отлично работает в root, однако RabbitMQ не может загрузить 503 с любым путем, кроме /. Если путь RabbitMQ равен /, то он работает нормально, но тогда Kibana не будет работать.

Я предполагаю, что это происходит из-за того, что внутри они находятся в корневом каталоге, называемом localhost: 15672, поэтому он перенаправляет на / на dev.endpoint.net.

Как мне иметь несколько служб, таких как Kibana и RabbitmQ, работающих с одной конечной точки?

Ответы [ 2 ]

2 голосов
/ 25 июня 2019

Что вам нужно сделать, это установить basePath для кибаны на /kibana

См. Ниже URL

https://www.elastic.co/guide/en/kibana/current/settings.html

Вы хотите настроить server.basePath на /kibana. Затем это решит проблемы с обратным проксированием, и вы можете оставить MQ прямо на root /

Вы также можете установить переменную окружения SERVER_BASEPATH в вашем модуле kibana, и он автоматически выберет базовый путь из этой переменной

0 голосов
/ 23 июня 2019

Одной из идей было бы создание правил на основе имени хоста для переключения бэкэндов. Однако для этого потребуется подстановочный знак или сертификат SAN SSL.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-aegis
  namespace: dev
  annotations:
    kubernetes.io/ingress.class: nginx
    certmanager.k8s.io/cluster-issuer: letsencrypt-prod
    nginx.ingress.kubernetes.io/rewrite-target: /    
spec:
  tls:
  - hosts:
    - dev.endpoint.net
    - rabbit.endpoint.net
    secretName: dev-secret   
  rules:
  - host: dev.endpoint.net
    http:
      paths:
      - path: /
        backend:
          serviceName: kibana-kibana
          servicePort: 5601
  - host: rabbit.endpoint.net
    http:
      paths:
      - path: /
        backend:
          serviceName: rabbitmq
...