Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Endpoints incorrectly generated for services with IPv6 Addresses. #1812

Closed
sptmhall opened this issue Oct 8, 2020 · 6 comments · Fixed by #2461
Closed

Endpoints incorrectly generated for services with IPv6 Addresses. #1812

sptmhall opened this issue Oct 8, 2020 · 6 comments · Fixed by #2461
Labels
kind/bug Categorizes issue or PR as related to a bug. lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness.

Comments

@sptmhall
Copy link

sptmhall commented Oct 8, 2020

In a dual-stack Kubernetes environment, Services with IPv6 addresses have endpoints generated with a record type of "A".

external-dns configuration:
image: k8s.gcr.io/external-dns/external-dns:v0.7.3
- --txt-owner-id=mosel-kube
- --registry=txt
- --provider=rfc2136
- --rfc2136-host=10.109.176.2
- --rfc2136-port=53
- --rfc2136-zone=externaldns.test.com
- --rfc2136-tsig-secret=4F4wC4ypP65u/misCqpApYyY49Bg0tqAdYm3xU3AQDY=
- --rfc2136-tsig-secret-alg=hmac-sha256
- --rfc2136-tsig-keyname=externaldns
- --rfc2136-tsig-axfr
- --source=ingress
- --source=service
- --domain-filter=externaldns.test.com
- --service-type-filter=LoadBalancer
- --log-level=debug
- --fqdn-template={{.Name}}.externaldns.test.com

Services:

kubectl get svc

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-kubernetes-dnsanno-v4 LoadBalancer 172.25.125.56 10.109.180.129 80:30092/TCP 5m1s
hello-kubernetes-dnsanno-v6 LoadBalancer fd0f:ac19::1d04 fd00:6ad:b480::2 80:30343/TCP 5m1s
hello-kubernetes-dnsannowithv6-v6 LoadBalancer fd0f:ac19::fd01 fd00:6ad:b480::3 80:32374/TCP 5m1s
hello-kubernetes-dnstemplate-v4 LoadBalancer 172.25.74.176 10.109.180.128 80:32661/TCP 5m1s
hello-kubernetes-dnstemplate-v6 LoadBalancer fd0f:ac19::a9e9 fd00:6ad:b480::1 80:32575/TCP 5m1s

Test services:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-kubernetes
spec:
replicas: 2
selector:
matchLabels:
app: hello-kubernetes
template:
metadata:
labels:
app: hello-kubernetes
spec:
containers:
- name: hello-kubernetes
image: paulbouwer/hello-kubernetes:1.8
ports:
- containerPort: 8080

apiVersion: v1
kind: Service
metadata:
name: hello-kubernetes-dnstemplate-v6
spec:
ipFamily: IPv6
selector:
app: hello-kubernetes
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancer

apiVersion: v1
kind: Service
metadata:
name: hello-kubernetes-dnstemplate-v4
spec:
ipFamily: IPv4
selector:
app: hello-kubernetes
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancer


apiVersion: v1
kind: Service
metadata:
name: hello-kubernetes-dnsanno-v6
annotations:
external-dns.alpha.kubernetes.io/hostname: hellok.externaldns.test.com
spec:
ipFamily: IPv6
selector:
app: hello-kubernetes
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancer

apiVersion: v1
kind: Service
metadata:
name: hello-kubernetes-dnsannowithv6-v6
annotations:
external-dns.alpha.kubernetes.io/hostname: hellok.externaldns.test.com
external-dns.alpha.kubernetes.io/ipv6: "true"
spec:
ipFamily: IPv6
selector:
app: hello-kubernetes
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancer

apiVersion: v1
kind: Service
metadata:
name: hello-kubernetes-dnsanno-v4
annotations:
external-dns.alpha.kubernetes.io/hostname: hellok.externaldns.test.com
spec:
ipFamily: IPv4
selector:
app: hello-kubernetes
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: LoadBalancer

External-dns logs:
time="2020-10-08T16:28:50Z" level=debug msg="Fetching records for 'externaldns.test.com.'"
time="2020-10-08T16:28:50Z" level=debug msg="Record=externaldns.test.com.\t86400\tIN\tSOA\texternaldns.test.com. mark.hall.externaldns.test.com. 430476 1800 60 86400 300"
time="2020-10-08T16:28:50Z" level=debug msg="Record=externaldns.test.com.\t86400\tIN\tNS\tdhcp-dns.set.calenglab.spirentcom.com."
time="2020-10-08T16:28:50Z" level=debug msg="Record=hello-kubernetes-dnstemplate-v4.externaldns.test.com.\t0\tIN\tTXT\t"heritage=external-dns,external-dns/owner=mosel-kube,external-dns/resource=service/default/hello-kubernetes-dnstemplate-v4""
time="2020-10-08T16:28:50Z" level=debug msg="Record=hello-kubernetes-dnstemplate-v4.externaldns.test.com.\t0\tIN\tA\t10.109.180.130"
time="2020-10-08T16:28:50Z" level=debug msg="Record=hello-kubernetes-dnstemplate-v6.externaldns.test.com.\t0\tIN\tTXT\t"heritage=external-dns,external-dns/owner=mosel-kube,external-dns/resource=service/default/hello-kubernetes-dnstemplate-v6""
time="2020-10-08T16:28:50Z" level=debug msg="Record=hellok.externaldns.test.com.\t0\tIN\tTXT\t"heritage=external-dns,external-dns/owner=mosel-kube,external-dns/resource=service/default/hello-kubernetes-dnsanno-v4""
time="2020-10-08T16:28:50Z" level=debug msg="Record=hellok.externaldns.test.com.\t0\tIN\tA\t10.109.180.131"
time="2020-10-08T16:28:50Z" level=debug msg="Record=my-service-v4.externaldns.test.com.\t0\tIN\tTXT\t"heritage=external-dns,external-dns/owner=mosel-kube,external-dns/resource=service/default/my-service-v4""
time="2020-10-08T16:28:50Z" level=debug msg="Record=my-service-v4.externaldns.test.com.\t0\tIN\tA\t10.109.180.128"
time="2020-10-08T16:28:50Z" level=debug msg="Record=my-service-v6.externaldns.test.com.\t0\tIN\tTXT\t"heritage=external-dns,external-dns/owner=mosel-kube,external-dns/resource=service/default/my-service-v6""
time="2020-10-08T16:28:50Z" level=debug msg="Record=externaldns.test.com.\t86400\tIN\tSOA\texternaldns.test.com. mark.hall.externaldns.test.com. 430476 1800 60 86400 300"
time="2020-10-08T16:28:50Z" level=debug msg="ApplyChanges (Create: 0, UpdateOld: 0, UpdateNew: 0, Delete: 6)"
time="2020-10-08T16:28:50Z" level=debug msg="RemoveRecord.ep=hello-kubernetes-dnstemplate-v4.externaldns.test.com 0 IN A 10.109.180.130 []"
time="2020-10-08T16:28:50Z" level=info msg="Removing RR: hello-kubernetes-dnstemplate-v4.externaldns.test.com 0 A 10.109.180.130"
time="2020-10-08T16:28:50Z" level=debug msg="RemoveRecord.ep=hellok.externaldns.test.com 0 IN A 10.109.180.131 []"
time="2020-10-08T16:28:50Z" level=info msg="Removing RR: hellok.externaldns.test.com 0 A 10.109.180.131"
time="2020-10-08T16:28:50Z" level=debug msg="RemoveRecord.ep=my-service-v4.externaldns.test.com 0 IN A 10.109.180.128 []"
time="2020-10-08T16:28:50Z" level=info msg="Removing RR: my-service-v4.externaldns.test.com 0 A 10.109.180.128"
time="2020-10-08T16:28:50Z" level=debug msg="RemoveRecord.ep=hello-kubernetes-dnstemplate-v4.externaldns.test.com 0 IN TXT "heritage=external-dns,external-dns/owner=mosel-kube,external-dns/resource=service/default/hello-kubernetes-dnstemplate-v4" []"
time="2020-10-08T16:28:50Z" level=info msg="Removing RR: hello-kubernetes-dnstemplate-v4.externaldns.test.com 0 TXT "heritage=external-dns,external-dns/owner=mosel-kube,external-dns/resource=service/default/hello-kubernetes-dnstemplate-v4""
time="2020-10-08T16:28:50Z" level=debug msg="RemoveRecord.ep=hellok.externaldns.test.com 0 IN TXT "heritage=external-dns,external-dns/owner=mosel-kube,external-dns/resource=service/default/hello-kubernetes-dnsanno-v4" []"
time="2020-10-08T16:28:50Z" level=info msg="Removing RR: hellok.externaldns.test.com 0 TXT "heritage=external-dns,external-dns/owner=mosel-kube,external-dns/resource=service/default/hello-kubernetes-dnsanno-v4""
time="2020-10-08T16:28:50Z" level=debug msg="RemoveRecord.ep=my-service-v4.externaldns.test.com 0 IN TXT "heritage=external-dns,external-dns/owner=mosel-kube,external-dns/resource=service/default/my-service-v4" []"
time="2020-10-08T16:28:50Z" level=info msg="Removing RR: my-service-v4.externaldns.test.com 0 TXT "heritage=external-dns,external-dns/owner=mosel-kube,external-dns/resource=service/default/my-service-v4""
time="2020-10-08T16:28:50Z" level=debug msg=SendMessage
time="2020-10-08T16:28:50Z" level=debug msg=SendMessage.success
time="2020-10-08T16:29:50Z" level=debug msg="Fetching records for 'externaldns.test.com.'"
time="2020-10-08T16:29:50Z" level=debug msg="Record=externaldns.test.com.\t86400\tIN\tSOA\texternaldns.test.com. mark.hall.externaldns.test.com. 430477 1800 60 86400 300"
time="2020-10-08T16:29:50Z" level=debug msg="Record=externaldns.test.com.\t86400\tIN\tNS\tdhcp-dns.set.calenglab.spirentcom.com."
time="2020-10-08T16:29:50Z" level=debug msg="Record=hello-kubernetes-dnstemplate-v6.externaldns.test.com.\t0\tIN\tTXT\t"heritage=external-dns,external-dns/owner=mosel-kube,external-dns/resource=service/default/hello-kubernetes-dnstemplate-v6""
time="2020-10-08T16:29:50Z" level=debug msg="Record=my-service-v6.externaldns.test.com.\t0\tIN\tTXT\t"heritage=external-dns,external-dns/owner=mosel-kube,external-dns/resource=service/default/my-service-v6""
time="2020-10-08T16:29:50Z" level=debug msg="Record=externaldns.test.com.\t86400\tIN\tSOA\texternaldns.test.com. mark.hall.externaldns.test.com. 430477 1800 60 86400 300"
time="2020-10-08T16:29:50Z" level=debug msg="Endpoints generated from service: default/hello-kubernetes-dnstemplate-v4: [hello-kubernetes-dnstemplate-v4.externaldns.test.com 0 IN A 10.109.180.128 []]"
time="2020-10-08T16:29:50Z" level=debug msg="Endpoints generated from service: default/hello-kubernetes-dnsanno-v6: [hellok.externaldns.test.com 0 IN A fd00:6ad:b480::2 []]"
time="2020-10-08T16:29:50Z" level=debug msg="Endpoints generated from service: default/hello-kubernetes-dnsanno-v4: [hellok.externaldns.test.com 0 IN A 10.109.180.129 []]"
time="2020-10-08T16:29:50Z" level=debug msg="Endpoints generated from service: default/hello-kubernetes-dnstemplate-v6: [hello-kubernetes-dnstemplate-v6.externaldns.test.com 0 IN A fd00:6ad:b480::1 []]"
time="2020-10-08T16:29:50Z" level=debug msg="Endpoints generated from service: default/hello-kubernetes-dnsannowithv6-v6: [hellok.externaldns.test.com 0 IN A fd00:6ad:b480::3 []]"
time="2020-10-08T16:29:50Z" level=debug msg="ApplyChanges (Create: 6, UpdateOld: 0, UpdateNew: 0, Delete: 0)"
time="2020-10-08T16:29:50Z" level=debug msg="AddRecord.ep=hello-kubernetes-dnstemplate-v4.externaldns.test.com 0 IN A 10.109.180.128 []"
time="2020-10-08T16:29:50Z" level=info msg="Adding RR: hello-kubernetes-dnstemplate-v4.externaldns.test.com 0 A 10.109.180.128"
time="2020-10-08T16:29:50Z" level=debug msg="AddRecord.ep=hellok.externaldns.test.com 0 IN A 10.109.180.129 []"
time="2020-10-08T16:29:50Z" level=info msg="Adding RR: hellok.externaldns.test.com 0 A 10.109.180.129"
time="2020-10-08T16:29:50Z" level=debug msg="AddRecord.ep=hello-kubernetes-dnstemplate-v6.externaldns.test.com 0 IN A fd00:6ad:b480::1 []"
time="2020-10-08T16:29:50Z" level=info msg="Adding RR: hello-kubernetes-dnstemplate-v6.externaldns.test.com 0 A fd00:6ad:b480::1"
time="2020-10-08T16:29:50Z" level=debug msg="AddRecord.ep=hello-kubernetes-dnstemplate-v4.externaldns.test.com 0 IN TXT "heritage=external-dns,external-dns/owner=mosel-kube,external-dns/resource=service/default/hello-kubernetes-dnstemplate-v4" []"
time="2020-10-08T16:29:50Z" level=info msg="Adding RR: hello-kubernetes-dnstemplate-v4.externaldns.test.com 0 TXT "heritage=external-dns,external-dns/owner=mosel-kube,external-dns/resource=service/default/hello-kubernetes-dnstemplate-v4""
time="2020-10-08T16:29:50Z" level=debug msg="AddRecord.ep=hellok.externaldns.test.com 0 IN TXT "heritage=external-dns,external-dns/owner=mosel-kube,external-dns/resource=service/default/hello-kubernetes-dnsanno-v4" []"
time="2020-10-08T16:29:50Z" level=info msg="Adding RR: hellok.externaldns.test.com 0 TXT "heritage=external-dns,external-dns/owner=mosel-kube,external-dns/resource=service/default/hello-kubernetes-dnsanno-v4""
time="2020-10-08T16:29:50Z" level=debug msg="AddRecord.ep=hello-kubernetes-dnstemplate-v6.externaldns.test.com 0 IN TXT "heritage=external-dns,external-dns/owner=mosel-kube,external-dns/resource=service/default/hello-kubernetes-dnstemplate-v6" []"
time="2020-10-08T16:29:50Z" level=info msg="Adding RR: hello-kubernetes-dnstemplate-v6.externaldns.test.com 0 TXT "heritage=external-dns,external-dns/owner=mosel-kube,external-dns/resource=service/default/hello-kubernetes-dnstemplate-v6""
time="2020-10-08T16:29:50Z" level=debug msg=SendMessage
time="2020-10-08T16:29:50Z" level=debug msg=SendMessage.success

I would expect the record type to be determined by the address. A valid IPv4 address should always have a record type of "A", and a valid IPv6 address should always have a record type of "AAAA".

@sptmhall sptmhall added the kind/bug Categorizes issue or PR as related to a bug. label Oct 8, 2020
@fejta-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jan 6, 2021
@unixfox
Copy link

unixfox commented Feb 5, 2021

/remove-lifecycle stale

@k8s-ci-robot k8s-ci-robot removed the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Feb 5, 2021
@fejta-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-contributor-experience at kubernetes/community.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label May 6, 2021
@morremeyer
Copy link
Contributor

/lifecycle hold

@morremeyer
Copy link
Contributor

/lifecycle frozen

@k8s-ci-robot k8s-ci-robot added lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels May 6, 2021
@morremeyer
Copy link
Contributor

Relates to #2051, I'll track the state of it and thaw the lifecycle once appropriate

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
kind/bug Categorizes issue or PR as related to a bug. lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness.
Projects
None yet
5 participants