Added configmap option to disable IPv6 in nginx DNS resolver (#1992)

This commit is contained in:
Luke Jolly 2018-02-02 14:53:28 -05:00 committed by Manuel Alejandro de Brito Fontes
parent ad2238ca94
commit 42076e8ed0
7 changed files with 46 additions and 17 deletions

View file

@ -163,11 +163,16 @@ func formatIP(input string) string {
}
// buildResolvers returns the resolvers reading the /etc/resolv.conf file
func buildResolvers(input interface{}) string {
func buildResolvers(res interface{}, disableIpv6 interface{}) string {
// NGINX need IPV6 addresses to be surrounded by brackets
nss, ok := input.([]net.IP)
nss, ok := res.([]net.IP)
if !ok {
glog.Errorf("expected a '[]net.IP' type but %T was returned", input)
glog.Errorf("expected a '[]net.IP' type but %T was returned", res)
return ""
}
no6, ok := disableIpv6.(bool)
if !ok {
glog.Errorf("expected a 'bool' type but %T was returned", disableIpv6)
return ""
}
@ -178,14 +183,21 @@ func buildResolvers(input interface{}) string {
r := []string{"resolver"}
for _, ns := range nss {
if ing_net.IsIPV6(ns) {
if no6 {
continue
}
r = append(r, fmt.Sprintf("[%v]", ns))
} else {
r = append(r, fmt.Sprintf("%v", ns))
}
}
r = append(r, "valid=30s;")
r = append(r, "valid=30s")
return strings.Join(r, " ")
if no6 {
r = append(r, "ipv6=off")
}
return strings.Join(r, " ") + ";"
}
// buildLocation produces the location string, if the ingress has redirects