首页 > 解决方案 > Kubernetes nginx ingress rabbitmq 管理和kibana

问题描述

在我的 AKS 集群上,我有一个 Nginx 入口控制器,用于反向代理我在 AKS 上运行的 kibana 服务。但是,我想通过入口、rabbitmq 管理控制台添加另一个 http 服务。

我无法让两者都使用以下配置:

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 在根目录下工作正常,但是 RabbitMQ 无法使用503/. 如果 RabbitMQ 的路径是,/那么它可以正常工作,但 Kibana 将无法运行。

我认为这是因为它们在内部位于根,即 localhost:15672,因此它重定向到 dev.endpoint.net 上的 /。

如何让 Kibana 和 RabbitmQ 等多项服务从一个端点运行?

标签: nginxkubernetesrabbitmqkibanaazure-aks

解决方案


您需要做的是将basePathfor kibana 设置为/kibana

请参阅以下网址

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

您正在寻找配置server.basePath/kibana. 然后这将对反向代理问题进行排序,您可以将 MQ 直接保留在 root 上/

您还可以SERVER_BASEPATH在 pod 中设置环境变量kibana,它会自动从该变量中选择基本路径


推荐阅读