Ingress-nginx: Specify IP addresses the Ingress controller is listening on

Created on 17 Jan 2017  路  11Comments  路  Source: kubernetes/ingress-nginx

We are running k8s on bare metal. It would be great to specify the IP addresses the nginx ingress controller is listening on.

This would enable us
1) to route traffic for specific IPV4 IPs to k8s
2) also route (http) traffic for IPV6 addresses to k8s.

AFAIK 1) can be achieved by using a service in front of the ingress ctrl with external (IPV4) addresses. But currently we do not see any possibility to achieve 2).

Might be related to #131 .

Thanks a lot!

Most helpful comment

@bowei Can we reopen this one? It was moved to ingress-gce and closed there as "irrelevant to gce".

All 11 comments

2 is related to #34; I use a daemonset with net=host to manage ipv6 ingress

you probably want to specify the name of the interface instead of the actual ip? eg if you just want to listen on cbr0 or docker0 with net=host, so the system is free to manage ipam. The way the nodecontroller assigns cidrs to nodes today, you don't know the range a given node will get.

@euank Thanks for the pointer. But isn't nginx listening on all IPV4 and IPV6 addresses which are available on the host in that setup? We are trying to migrate one IP at a time to k8s and keep the other IPs and services working outside of k8s.

@bprashanth Thanks for the suggestion. We are using a fixed /28 subnet for our incoming traffic. Therefore it would be great to specify exact listen addresses for nginx. What would also work is using the hostnames from the ingress object for the nginx listen directives. Though my attempts using a custom nginx template doing that failed utterly. ;)

@cluk33 indeed, it is for me. It's not ideal, but it's worked for me so far. Specifying only one ipv6 address would be saner.

@bprashanth on the other hand, you don't necessarily want to listen on an interface for the case of eth0 or whatever since you've potentially got multiple different ips on it.

I also use bare metal and would be great to be able to assign an external IP for ingress
and thus use the hostnames from the ingress resource for the nginx listen directives.
Currently I am not sure how I can get this working - private docker registry (2 rc replica's, talking to the same redis deployment + the same filesystem (nfs mount to all kube nodes) ) behind a nginx controller + ingress resource points to a hostname docker-registry.bla.bla . My understanding is docker-registry.bla.bla should be pointing to the nginx external IP in DNS which in its turn redirects traffic to the endpoints in round robin. But we have no way to point it to nginx, have we ? Please correct me if I am wrong somewhere there, I am a newbie to kubernetes

This issue was moved to kubernetes/ingress-gce#24

@bowei Can we reopen this one? It was moved to ingress-gce and closed there as "irrelevant to gce".

I'd also like to have the possibility to specify the IP for the controller to listen on.
I'm using a daemonset with net=host.

@bowei can this be reopned? I'm also in need of specifying on which ip it should listen on, instead of just using 0.0.0.0.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

lachlancooper picture lachlancooper  路  3Comments

smeruelo picture smeruelo  路  3Comments

natemurthy picture natemurthy  路  3Comments

jwfang picture jwfang  路  3Comments

kfox1111 picture kfox1111  路  3Comments