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?
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