mirror of
https://github.com/kubernetes-sigs/external-dns.git
synced 2025-08-05 17:16:59 +02:00
refactor: handle internal IPv6 addresses on nodeport services consistently with --expose-internal-ipv6 flag (#5652)
This commit is contained in:
parent
48760e653b
commit
30cbbc0e75
@ -742,13 +742,19 @@ func (sc *serviceSource) extractNodePortTargets(svc *v1.Service) (endpoint.Targe
|
||||
access := getAccessFromAnnotations(svc.Annotations)
|
||||
switch access {
|
||||
case "public":
|
||||
return append(externalIPs, ipv6IPs...), nil
|
||||
if sc.exposeInternalIPv6 {
|
||||
return append(externalIPs, ipv6IPs...), nil
|
||||
}
|
||||
return externalIPs, nil
|
||||
case "private":
|
||||
return internalIPs, nil
|
||||
}
|
||||
|
||||
if len(externalIPs) > 0 {
|
||||
return append(externalIPs, ipv6IPs...), nil
|
||||
if sc.exposeInternalIPv6 {
|
||||
return append(externalIPs, ipv6IPs...), nil
|
||||
}
|
||||
return externalIPs, nil
|
||||
}
|
||||
|
||||
return internalIPs, nil
|
||||
|
@ -1735,7 +1735,7 @@ func TestServiceSourceNodePortServices(t *testing.T) {
|
||||
expected: []*endpoint.Endpoint{
|
||||
{DNSName: "_foo._tcp.foo.example.org", Targets: endpoint.Targets{"0 50 30192 foo.example.org"}, RecordType: endpoint.RecordTypeSRV},
|
||||
{DNSName: "foo.example.org", Targets: endpoint.Targets{"54.10.11.1", "54.10.11.2"}, RecordType: endpoint.RecordTypeA},
|
||||
{DNSName: "foo.example.org", Targets: endpoint.Targets{"2001:DB8::1", "2001:DB8::2"}, RecordType: endpoint.RecordTypeAAAA},
|
||||
{DNSName: "foo.example.org", Targets: endpoint.Targets{"2001:DB8::1", "2001:DB8::3"}, RecordType: endpoint.RecordTypeAAAA},
|
||||
},
|
||||
nodes: []*v1.Node{{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
@ -1745,7 +1745,8 @@ func TestServiceSourceNodePortServices(t *testing.T) {
|
||||
Addresses: []v1.NodeAddress{
|
||||
{Type: v1.NodeExternalIP, Address: "54.10.11.1"},
|
||||
{Type: v1.NodeInternalIP, Address: "10.0.1.1"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::1"},
|
||||
{Type: v1.NodeExternalIP, Address: "2001:DB8::1"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::2"},
|
||||
},
|
||||
},
|
||||
}, {
|
||||
@ -1756,7 +1757,8 @@ func TestServiceSourceNodePortServices(t *testing.T) {
|
||||
Addresses: []v1.NodeAddress{
|
||||
{Type: v1.NodeExternalIP, Address: "54.10.11.2"},
|
||||
{Type: v1.NodeInternalIP, Address: "10.0.1.2"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::2"},
|
||||
{Type: v1.NodeExternalIP, Address: "2001:DB8::3"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::4"},
|
||||
},
|
||||
},
|
||||
}},
|
||||
@ -1779,7 +1781,8 @@ func TestServiceSourceNodePortServices(t *testing.T) {
|
||||
Addresses: []v1.NodeAddress{
|
||||
{Type: v1.NodeExternalIP, Address: "54.10.11.1"},
|
||||
{Type: v1.NodeInternalIP, Address: "10.0.1.1"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::1"},
|
||||
{Type: v1.NodeExternalIP, Address: "2001:DB8::1"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::2"},
|
||||
},
|
||||
},
|
||||
}, {
|
||||
@ -1790,7 +1793,8 @@ func TestServiceSourceNodePortServices(t *testing.T) {
|
||||
Addresses: []v1.NodeAddress{
|
||||
{Type: v1.NodeExternalIP, Address: "54.10.11.2"},
|
||||
{Type: v1.NodeInternalIP, Address: "10.0.1.2"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::2"},
|
||||
{Type: v1.NodeExternalIP, Address: "2001:DB8::3"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::4"},
|
||||
},
|
||||
},
|
||||
}},
|
||||
@ -1806,7 +1810,7 @@ func TestServiceSourceNodePortServices(t *testing.T) {
|
||||
expected: []*endpoint.Endpoint{
|
||||
{DNSName: "_foo._tcp.foo.bar.example.com", Targets: endpoint.Targets{"0 50 30192 foo.bar.example.com"}, RecordType: endpoint.RecordTypeSRV},
|
||||
{DNSName: "foo.bar.example.com", Targets: endpoint.Targets{"54.10.11.1", "54.10.11.2"}, RecordType: endpoint.RecordTypeA},
|
||||
{DNSName: "foo.bar.example.com", Targets: endpoint.Targets{"2001:DB8::1", "2001:DB8::2"}, RecordType: endpoint.RecordTypeAAAA},
|
||||
{DNSName: "foo.bar.example.com", Targets: endpoint.Targets{"2001:DB8::1", "2001:DB8::3"}, RecordType: endpoint.RecordTypeAAAA},
|
||||
},
|
||||
nodes: []*v1.Node{{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
@ -1816,7 +1820,8 @@ func TestServiceSourceNodePortServices(t *testing.T) {
|
||||
Addresses: []v1.NodeAddress{
|
||||
{Type: v1.NodeExternalIP, Address: "54.10.11.1"},
|
||||
{Type: v1.NodeInternalIP, Address: "10.0.1.1"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::1"},
|
||||
{Type: v1.NodeExternalIP, Address: "2001:DB8::1"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::2"},
|
||||
},
|
||||
},
|
||||
}, {
|
||||
@ -1827,7 +1832,8 @@ func TestServiceSourceNodePortServices(t *testing.T) {
|
||||
Addresses: []v1.NodeAddress{
|
||||
{Type: v1.NodeExternalIP, Address: "54.10.11.2"},
|
||||
{Type: v1.NodeInternalIP, Address: "10.0.1.2"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::2"},
|
||||
{Type: v1.NodeExternalIP, Address: "2001:DB8::3"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::4"},
|
||||
},
|
||||
},
|
||||
}},
|
||||
@ -1880,7 +1886,7 @@ func TestServiceSourceNodePortServices(t *testing.T) {
|
||||
expected: []*endpoint.Endpoint{
|
||||
{DNSName: "_foo._tcp.foo.example.org", Targets: endpoint.Targets{"0 50 30192 foo.example.org"}, RecordType: endpoint.RecordTypeSRV},
|
||||
{DNSName: "foo.example.org", Targets: endpoint.Targets{"54.10.11.2"}, RecordType: endpoint.RecordTypeA},
|
||||
{DNSName: "foo.example.org", Targets: endpoint.Targets{"2001:DB8::2"}, RecordType: endpoint.RecordTypeAAAA},
|
||||
{DNSName: "foo.example.org", Targets: endpoint.Targets{"2001:DB8::3"}, RecordType: endpoint.RecordTypeAAAA},
|
||||
},
|
||||
nodes: []*v1.Node{{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
@ -1890,7 +1896,8 @@ func TestServiceSourceNodePortServices(t *testing.T) {
|
||||
Addresses: []v1.NodeAddress{
|
||||
{Type: v1.NodeExternalIP, Address: "54.10.11.1"},
|
||||
{Type: v1.NodeInternalIP, Address: "10.0.1.1"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::1"},
|
||||
{Type: v1.NodeExternalIP, Address: "2001:DB8::1"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::2"},
|
||||
},
|
||||
},
|
||||
}, {
|
||||
@ -1901,7 +1908,8 @@ func TestServiceSourceNodePortServices(t *testing.T) {
|
||||
Addresses: []v1.NodeAddress{
|
||||
{Type: v1.NodeExternalIP, Address: "54.10.11.2"},
|
||||
{Type: v1.NodeInternalIP, Address: "10.0.1.2"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::2"},
|
||||
{Type: v1.NodeExternalIP, Address: "2001:DB8::3"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::4"},
|
||||
},
|
||||
},
|
||||
}},
|
||||
@ -1924,7 +1932,7 @@ func TestServiceSourceNodePortServices(t *testing.T) {
|
||||
expected: []*endpoint.Endpoint{
|
||||
{DNSName: "_foo._tcp.foo.example.org", Targets: endpoint.Targets{"0 50 30192 foo.example.org"}, RecordType: endpoint.RecordTypeSRV},
|
||||
{DNSName: "foo.example.org", Targets: endpoint.Targets{"54.10.11.2"}, RecordType: endpoint.RecordTypeA},
|
||||
{DNSName: "foo.example.org", Targets: endpoint.Targets{"2001:DB8::2"}, RecordType: endpoint.RecordTypeAAAA},
|
||||
{DNSName: "foo.example.org", Targets: endpoint.Targets{"2001:DB8::3"}, RecordType: endpoint.RecordTypeAAAA},
|
||||
},
|
||||
nodes: []*v1.Node{{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
@ -1934,7 +1942,8 @@ func TestServiceSourceNodePortServices(t *testing.T) {
|
||||
Addresses: []v1.NodeAddress{
|
||||
{Type: v1.NodeExternalIP, Address: "54.10.11.1"},
|
||||
{Type: v1.NodeInternalIP, Address: "10.0.1.1"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::1"},
|
||||
{Type: v1.NodeExternalIP, Address: "2001:DB8::1"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::2"},
|
||||
},
|
||||
},
|
||||
}, {
|
||||
@ -1945,7 +1954,8 @@ func TestServiceSourceNodePortServices(t *testing.T) {
|
||||
Addresses: []v1.NodeAddress{
|
||||
{Type: v1.NodeExternalIP, Address: "54.10.11.2"},
|
||||
{Type: v1.NodeInternalIP, Address: "10.0.1.2"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::2"},
|
||||
{Type: v1.NodeExternalIP, Address: "2001:DB8::3"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::4"},
|
||||
},
|
||||
},
|
||||
}},
|
||||
@ -2098,7 +2108,7 @@ func TestServiceSourceNodePortServices(t *testing.T) {
|
||||
}},
|
||||
},
|
||||
{
|
||||
title: "access=public annotation NodePort services return an endpoint with public IP addresses of the cluster's nodes",
|
||||
title: "access=public annotation NodePort services return an endpoint with external IP addresses of the cluster's nodes if exposeInternalIPv6 is unset",
|
||||
svcNamespace: "testing",
|
||||
svcName: "foo",
|
||||
svcType: v1.ServiceTypeNodePort,
|
||||
@ -2111,7 +2121,7 @@ func TestServiceSourceNodePortServices(t *testing.T) {
|
||||
expected: []*endpoint.Endpoint{
|
||||
{DNSName: "_foo._tcp.foo.example.org", Targets: endpoint.Targets{"0 50 30192 foo.example.org"}, RecordType: endpoint.RecordTypeSRV},
|
||||
{DNSName: "foo.example.org", Targets: endpoint.Targets{"54.10.11.1", "54.10.11.2"}, RecordType: endpoint.RecordTypeA},
|
||||
{DNSName: "foo.example.org", Targets: endpoint.Targets{"2001:DB8::1", "2001:DB8::2"}, RecordType: endpoint.RecordTypeAAAA},
|
||||
{DNSName: "foo.example.org", Targets: endpoint.Targets{"2001:DB8::1", "2001:DB8::3"}, RecordType: endpoint.RecordTypeAAAA},
|
||||
},
|
||||
nodes: []*v1.Node{{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
@ -2121,7 +2131,8 @@ func TestServiceSourceNodePortServices(t *testing.T) {
|
||||
Addresses: []v1.NodeAddress{
|
||||
{Type: v1.NodeExternalIP, Address: "54.10.11.1"},
|
||||
{Type: v1.NodeInternalIP, Address: "10.0.1.1"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::1"},
|
||||
{Type: v1.NodeExternalIP, Address: "2001:DB8::1"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::2"},
|
||||
},
|
||||
},
|
||||
}, {
|
||||
@ -2132,9 +2143,53 @@ func TestServiceSourceNodePortServices(t *testing.T) {
|
||||
Addresses: []v1.NodeAddress{
|
||||
{Type: v1.NodeExternalIP, Address: "54.10.11.2"},
|
||||
{Type: v1.NodeInternalIP, Address: "10.0.1.2"},
|
||||
{Type: v1.NodeExternalIP, Address: "2001:DB8::3"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::4"},
|
||||
},
|
||||
},
|
||||
}},
|
||||
},
|
||||
{
|
||||
title: "access=public annotation NodePort services return an endpoint with public IP addresses of the cluster's nodes if exposeInternalIPv6 is set to true",
|
||||
svcNamespace: "testing",
|
||||
svcName: "foo",
|
||||
svcType: v1.ServiceTypeNodePort,
|
||||
svcTrafficPolicy: v1.ServiceExternalTrafficPolicyTypeCluster,
|
||||
labels: map[string]string{},
|
||||
annotations: map[string]string{
|
||||
hostnameAnnotationKey: "foo.example.org.",
|
||||
accessAnnotationKey: "public",
|
||||
},
|
||||
exposeInternalIPv6: true,
|
||||
expected: []*endpoint.Endpoint{
|
||||
{DNSName: "_foo._tcp.foo.example.org", Targets: endpoint.Targets{"0 50 30192 foo.example.org"}, RecordType: endpoint.RecordTypeSRV},
|
||||
{DNSName: "foo.example.org", Targets: endpoint.Targets{"54.10.11.1", "54.10.11.2"}, RecordType: endpoint.RecordTypeA},
|
||||
{DNSName: "foo.example.org", Targets: endpoint.Targets{"2001:DB8::1", "2001:DB8::2", "2001:DB8::3", "2001:DB8::4"}, RecordType: endpoint.RecordTypeAAAA},
|
||||
},
|
||||
nodes: []*v1.Node{{
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "node1",
|
||||
},
|
||||
Status: v1.NodeStatus{
|
||||
Addresses: []v1.NodeAddress{
|
||||
{Type: v1.NodeExternalIP, Address: "54.10.11.1"},
|
||||
{Type: v1.NodeInternalIP, Address: "10.0.1.1"},
|
||||
{Type: v1.NodeExternalIP, Address: "2001:DB8::1"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::2"},
|
||||
},
|
||||
},
|
||||
}, {
|
||||
ObjectMeta: metav1.ObjectMeta{
|
||||
Name: "node2",
|
||||
},
|
||||
Status: v1.NodeStatus{
|
||||
Addresses: []v1.NodeAddress{
|
||||
{Type: v1.NodeExternalIP, Address: "54.10.11.2"},
|
||||
{Type: v1.NodeInternalIP, Address: "10.0.1.2"},
|
||||
{Type: v1.NodeExternalIP, Address: "2001:DB8::3"},
|
||||
{Type: v1.NodeInternalIP, Address: "2001:DB8::4"},
|
||||
},
|
||||
},
|
||||
}},
|
||||
},
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user