Report this

What is the reason for this report?

Kubernetes (AKS) : Expose multiple ports of different service to common load balancer listening on same path

Posted on April 17, 2019

I am setting up Kubernetes cluster on Azure (using AKS) to host Elasticsearch, Kibana, custom api, UI, nginx, etc.

As I don’t want separate public IP per service, I need a way to setup a common load balancer/Ingress and then just add the port numbers to there and setup routing.

I tried using the approach mentioned in this stackoverflow question - How to expose multiple port using a load balancer services in kubernetes but didn’t work out.

As there are technology clients connecting to my cluster, I need to have service per technology.

Basically I need to expose 9200, 5601, 80 - all on same IP but on accessing the IP with port, user must be re-directed to appropriate technology service.

Below is sample configuration for what am looking for.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: myingress
spec:
  rules:
  - host: myurl.domain.com
    http:
      paths:
      - path: /
        backend:
          serviceName: elasticsearch
          servicePort: 9200
      - path: /
        backend:
          serviceName: kibana
          servicePort: 5602


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

You can use Traefik as a Ingress Controller.

https://docs.traefik.io/configuration/backends/kubernetes/

That should work. I have one similar solution implemented.

https://cdn-images-1.medium.com/max/1000/1*laQBZYKVPlcAxrv3Vuo65w.png

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.