You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem? Please describe.
The "dns-hostname" annotation appears to only work for services that utilize IPv4 addresses. However, when I attempt to use this feature with an IPv6 based service, the nitroapi interface returns an error and does not create a DNS entry.
For example, given the following service (note, demonstration addresses and domains are used for this issue):
The citrix-ingress-controller pod logs the following:
2023-10-19 20:22:25,638 - INFO - [kubernetes.py:kubernetes_service_to_nsapps:3200] (MainThread) Adding DNS entry {'service.example.com'}/2001:0db8:85a3:0000:0000:8a2e:0370:7334
2023-10-19 20:22:25,720 - WARNING - [nitrointerface.py:add_dns_entry:4468] (MainThread) Failed to add DNS entry. Exception: (1110, 'Invalid IP address [2001:0db8:85a3:0000:0000:8a2e:0370:7334]', 'ERROR')
Describe the solution you'd like
If possible, update the check_n_add_dns_entries to determine if the IP is IPv6.
If the address is IPv6, call add_dns_aaaa_entry which will invoke an IPv6 version of dnsaddrec.py
def check_n_add_dns_entries(self, hostnames, ip):
"""
This method checks the existing configuration and applies diff.
Precondition: ip must be valid
"""
if not hostnames:
logger.debug("Skipping as there is no DNS entry to process")
return
configured_hostnames = self.get_configured_hostnames(ip)
given_hostnames = hostnames
to_add_hostnames = given_hostnames - configured_hostnames
logger.debug("Started processing {} DNS entry addition".format(len(to_add_hostnames)))
for hostname in to_add_hostnames:
if hostname.startswith('*'):
logger.warning("Wildcard domain names should be added through wildcarddnsentries CRD only. Ignoring the host {} "
"to be added to address records through ingress".format(hostname))
continue
# proposed #
if is_ipv6(ip):
self.add_dns_aaaa_entry(hostname, ip)
else:
self.add_dns_entry(hostname, ip)
# end_proposed #
logger.debug("Finished processing DNS entry addition")
def is_ipv6(ip):
is_v6 = False
try:
parsed_ip = ipaddress.ip_address(ip)
if isinstance(parsed_ip, ipaddress.IPv6Address):
is_v6 = True
return is_v6
except ValueError:
return "Invalid IP Address"
Describe alternatives you've considered
Manually create AAAA records.
Additional context
It does appear that the nitroapi supports IPv6 record additions (api reference).
The text was updated successfully, but these errors were encountered:
Is your feature request related to a problem? Please describe.
The "dns-hostname" annotation appears to only work for services that utilize IPv4 addresses. However, when I attempt to use this feature with an IPv6 based service, the nitroapi interface returns an error and does not create a DNS entry.
For example, given the following service (note, demonstration addresses and domains are used for this issue):
The citrix-ingress-controller pod logs the following:
Describe the solution you'd like
If possible, update the
check_n_add_dns_entries
to determine if the IP is IPv6.If the address is IPv6, call
add_dns_aaaa_entry
which will invoke an IPv6 version ofdnsaddrec.py
Describe alternatives you've considered
Manually create AAAA records.
Additional context
It does appear that the nitroapi supports IPv6 record additions (api reference).
The text was updated successfully, but these errors were encountered: