diff --git a/plugin/kubernetes/kubernetes.go b/plugin/kubernetes/kubernetes.go index 8adc80c80..5bf064c3c 100644 --- a/plugin/kubernetes/kubernetes.go +++ b/plugin/kubernetes/kubernetes.go @@ -351,7 +351,11 @@ func endpointHostname(addr object.EndpointAddress, endpointNameMode bool) string return strings.ReplaceAll(addr.IP, ".", "-") } if strings.Contains(addr.IP, ":") { - return strings.ReplaceAll(addr.IP, ":", "-") + ipv6Hostname := strings.ReplaceAll(addr.IP, ":", "-") + if strings.HasSuffix(ipv6Hostname, "-") { + return ipv6Hostname + "0" + } + return ipv6Hostname } return "" } diff --git a/plugin/kubernetes/kubernetes_test.go b/plugin/kubernetes/kubernetes_test.go index 6b5a3cb76..0a517420d 100644 --- a/plugin/kubernetes/kubernetes_test.go +++ b/plugin/kubernetes/kubernetes_test.go @@ -30,6 +30,8 @@ func TestEndpointHostname(t *testing.T) { {"10.11.12.13", "epname", "epname", "hello-abcde", false}, {"10.11.12.13", "epname", "epname", "hello-abcde", true}, {"10.11.12.13", "", "hello-abcde", "hello-abcde", true}, + {"2001:db8:3333:4444:5555:6666:7777:8888", "", "2001-db8-3333-4444-5555-6666-7777-8888", "", false}, + {"2001:db8:3333:4444:5555:6666::", "", "2001-db8-3333-4444-5555-6666--0", "", false}, } for _, test := range tests { result := endpointHostname(object.EndpointAddress{IP: test.ip, Hostname: test.hostname, TargetRefName: test.podName}, test.endpointNameMode)