What happened?
ExternalDNS discovers Gateway API HTTPRoutes and generates endpoints correctly, but never creates missing records in Azure Private DNS.
A test HTTPRoute was created with:
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: external-dns-test
namespace: odidob2b-calvi-apps-acc
spec:
parentRefs:
- name: gateway
namespace: istio-gateway
hostnames:
- external-dns-test.calvi-internal.com
rules:
- backendRefs:
- name: portal-4
port: 80
The route is accepted by the Gateway controller:
ExternalDNS generates the endpoint:
Endpoints generated from HTTPRoute odidob2b-calvi-apps-acc/external-dns-test:
[external-dns-test.calvi-internal.com 0 IN A 10.117.0.46 []]
However, ExternalDNS immediately reports:
All records are already up to date
No A record is created in Azure Private DNS.
Verification:
az network private-dns record-set a show `
--resource-group calvi-platform-euw-rg `
--zone-name calvi-internal.com `
--name external-dns-test
returns:
No CREATE, UPDATE, DELETE, plan or desired-change log messages are produced.
What you expected to happen?
ExternalDNS should create:
external-dns-test.calvi-internal.com -> 10.117.0.46
in Azure Private DNS.
How to reproduce it (as minimally and precisely as possible)?
-
Deploy ExternalDNS v0.21.0.
-
Configure:
--source=gateway-httproute
--provider=azure-private-dns
--policy=sync
--registry=noop
--gateway-namespace=istio-gateway
--domain-filter=calvi-internal.com
-
Create a HTTPRoute with hostname:
external-dns-test.calvi-internal.com
-
Wait for ExternalDNS reconciliation.
-
Observe:
Endpoints generated from HTTPRoute ...
All records are already up to date
-
Verify that the Azure Private DNS record does not exist.
Anything else we need to know?
The following have been verified:
-
HTTPRoute is Accepted=True.
-
Gateway is programmed and healthy.
-
ExternalDNS can list HTTPRoutes.
-
ExternalDNS can list Gateways.
-
Azure Private DNS records are successfully read.
-
Domain filter matches.
-
Azure zone, subscription and resource group are correct.
-
No annotation-filter configured.
-
No label-filter configured.
-
Behaviour is identical for newly created hostnames.
-
Searching logs for:
plan
desired
create
update
delete
returns no planner/write operations.
RBAC checks:
kubectl auth can-i list httproutes.gateway.networking.k8s.io -A \
--as=system:serviceaccount:external-dns:calvi-external-dns
yes
kubectl auth can-i list gateways.gateway.networking.k8s.io -A \
--as=system:serviceaccount:external-dns:calvi-external-dns
yes
Environment
ExternalDNS version:
Provider:
Arguments:
--log-level=debug
--log-format=text
--interval=1m
--events
--source=gateway-httproute
--policy=sync
--registry=noop
--gateway-namespace=istio-gateway
--domain-filter=calvi-internal.com
--provider=azure-private-dns
--azure-resource-group=calvi-platform-euw-rg
--azure-subscription-id=<redacted>
--managed-record-types=A,CNAME
Platform:
AKS
Azure Workload Identity
Azure Private DNS
Gateway API HTTPRoute source
What happened?
ExternalDNS discovers Gateway API HTTPRoutes and generates endpoints correctly, but never creates missing records in Azure Private DNS.
A test HTTPRoute was created with:
The route is accepted by the Gateway controller:
ExternalDNS generates the endpoint:
However, ExternalDNS immediately reports:
No A record is created in Azure Private DNS.
Verification:
returns:
No CREATE, UPDATE, DELETE, plan or desired-change log messages are produced.
What you expected to happen?
ExternalDNS should create:
in Azure Private DNS.
How to reproduce it (as minimally and precisely as possible)?
Deploy ExternalDNS v0.21.0.
Configure:
Create a HTTPRoute with hostname:
Wait for ExternalDNS reconciliation.
Observe:
Verify that the Azure Private DNS record does not exist.
Anything else we need to know?
The following have been verified:
HTTPRoute is Accepted=True.
Gateway is programmed and healthy.
ExternalDNS can list HTTPRoutes.
ExternalDNS can list Gateways.
Azure Private DNS records are successfully read.
Domain filter matches.
Azure zone, subscription and resource group are correct.
No annotation-filter configured.
No label-filter configured.
Behaviour is identical for newly created hostnames.
Searching logs for:
returns no planner/write operations.
RBAC checks:
Environment
ExternalDNS version:
Provider:
Arguments:
Platform: