Azure ACS - How to create ingress controller with internal load balancer

3/26/2018

I want to create ingress controller in my ACS cluster to access services.

Using helm I can achieve this (with below command), but the ingress controller is exposed to internet through External Load Balancer.

helm install stable/nginx-ingress 

All services in the cluster are internal and dont need to be exposed to internet. They will be accessed from applications running in same vnet.

How do I create a ingress controller that is not public but instead can be accessed through a Internal Load Balancer?

-- Sachin
acs
azure
kubernetes-helm
kubernetes-ingress

1 Answer

5/28/2018

helm fetch stable/nginx-ingress to download the ingress helm chart. Unzip and go to the templates Directory. Edit the controller-service.yaml remove the condition and add the line service.beta.kubernetes.io/azure-load-balancer-internal: "true" it should now look like;

apiVersion: v1
kind: Service
metadata:
  annotations:
    service.beta.kubernetes.io/azure-load-balancer-internal: "true"
labels:

apply the local helm chart and you will get a ingress controller with a internal IP address. perform a kubectl get svc -n xxxxx (namespace you install the nginx-ingress controller into). It should eventually look something like this.

factual-bat-nginx-ingress-controller LoadBalancer 10.0.65.21 10.136.0.7

-- mark holverson
Source: StackOverflow