Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
1a5ab81
chore(deps): bump the dev-dependencies group with 2 updates (#5946)
dependabot[bot] Nov 11, 2025
0dbead2
docs(core-dns): update tutorial (#5926)
ivankatliarchuk Nov 11, 2025
6a1a053
chore(deps): bump the dev-dependencies group across 1 directory with …
dependabot[bot] Nov 11, 2025
19bd7e6
test(source): fqdn for source/service/nodeport/srv records (#5554)
ivankatliarchuk Nov 11, 2025
948f964
chore(deps): bump the dev-dependencies group across 1 directory with …
dependabot[bot] Nov 13, 2025
1b553e9
Build(tool) remove vacuum (#5955)
szuecs Nov 13, 2025
5c27873
chore(ci): fix releaser script (#5953)
mloiseleur Nov 14, 2025
627ba0a
chore(release): updates kustomize & docs with v0.20.0 (#5958)
mloiseleur Nov 14, 2025
16f3b19
chore(deps): bump github.com/digitalocean/godo (#5956)
dependabot[bot] Nov 16, 2025
031dc9f
chore(deps): bump renovatebot/github-action (#5950)
dependabot[bot] Nov 16, 2025
62f4d7d
feat: add support for ingress backed GlooEdge Gateway (#5909)
cucxabong Nov 16, 2025
cfe7481
feat: end to end testing with coredns provider (#5933)
Raffo Nov 19, 2025
af8e5ba
chore(deps): bump the dev-dependencies group across 1 directory with …
dependabot[bot] Nov 20, 2025
7eb77fe
chore(deps): bump golang.org/x/crypto from 0.44.0 to 0.45.0 (#5969)
dependabot[bot] Nov 20, 2025
fde978f
fix: append dot to the target of SRV records as required by RFC 2782 …
frittentheke Nov 21, 2025
0c39b6e
docs: add UniFi webhook provider to README (#5967)
lexfrei Nov 22, 2025
03ea1eb
chore(deps): bump the dev-dependencies group across 1 directory with …
dependabot[bot] Nov 29, 2025
689b3f9
chore(deps): bump github.com/goccy/go-yaml in the dev-dependencies gr…
dependabot[bot] Dec 1, 2025
7789935
chore: add Simply webhook provider to README (#5979)
uozalp Dec 2, 2025
00e04e9
refactor(plan): reduce Calculate() cyclomatic complexity (#5961)
vflaux Dec 2, 2025
8085ce2
feat(coredns): use txt-owner-id to strictly separated external-dns in…
farodin91 Dec 2, 2025
9737fc4
chore(deps): bump github.com/aws/smithy-go in the dev-dependencies gr…
dependabot[bot] Dec 2, 2025
098b9e4
chore(deps): bump the dev-dependencies group with 10 updates (#5990)
dependabot[bot] Dec 3, 2025
2dc1b1b
chore(deps): bump the dev-dependencies group across 1 directory with …
dependabot[bot] Dec 5, 2025
222b95f
fix(docs): Fixing typos in docs and comments (#5995)
thetillhoff Dec 5, 2025
e22cd73
chore(deps): bump the dev-dependencies group with 2 updates (#5962)
dependabot[bot] Dec 5, 2025
9480a2b
docs: remove link to external-dns-routeros-provider (#5996)
benfiola Dec 7, 2025
71c64e5
docs: add instructions for local testing (#5887)
mloiseleur Dec 7, 2025
f8c2781
docs(ownerid): provide more details on migration (#5999)
ivankatliarchuk Dec 8, 2025
fe23feb
chore(deps): bump the dev-dependencies group with 12 updates (#6001)
dependabot[bot] Dec 9, 2025
3fe0d7d
Update to go 1.25.5 for CVE-2025-61729 and CVE-2025-61727 (#6000)
goat-ssh Dec 9, 2025
6703e3a
fix(pdns): ensure trailing dot for NS records (#5992)
blsho Dec 9, 2025
8d7f279
chore(deps): bump the dev-dependencies group with 10 updates (#6010)
dependabot[bot] Dec 10, 2025
fa1de21
fix typo (#6011)
dongjiang1989 Dec 10, 2025
cb1911c
Remove IBM Cloud DNS from README (#6007)
prb112 Dec 10, 2025
9536332
fix(charts): add schema for provider.webhook.serviceMonitor (#5932)
chrisbsmith Dec 10, 2025
f399955
chore(deps): bump the dev-dependencies group across 1 directory with …
dependabot[bot] Dec 12, 2025
bf8bc46
fix(cloudflare): dns records pagination (#5986)
rkferreira Dec 12, 2025
2e65603
fix(flags): restore min-ttl flag (#6014)
vflaux Dec 12, 2025
e6ebc1b
refactor(source): use less memory on deduplication (#6020)
mloiseleur Dec 14, 2025
690259f
feat(service): ignore unschedulable (#6002)
ivankatliarchuk Dec 14, 2025
580380f
chore(deps): bump renovatebot/github-action (#6027)
dependabot[bot] Dec 15, 2025
e94df42
feat(registry/txt): enable support for SRV and NAPTR (#6023)
alexbakker-quandago Dec 15, 2025
aa511d5
chore: sync with upstream v0.20.0
langecode Dec 16, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@ ExternalDNS allows you to keep selected zones (via `--domain-filter`) synchroniz
- [Akamai Edge DNS](https://learn.akamai.com/en-us/products/cloud_security/edge_dns.html)
- [GoDaddy](https://www.godaddy.com)
- [Gandi](https://www.gandi.net)
- [IBM Cloud DNS](https://www.ibm.com/cloud/dns)
- [Plural](https://www.plural.sh/)
- [Pi-hole](https://pi-hole.net/)
- [Alibaba Cloud DNS](https://www.alibabacloud.com/help/en/dns)
Expand Down Expand Up @@ -110,11 +109,12 @@ from the usage of any externally developed webhook.
| Netic | https://github.com/neticdk/external-dns-tidydns-webhook |
| OpenStack Designate | https://github.com/inovex/external-dns-designate-webhook |
| OpenWRT | https://github.com/renanqts/external-dns-openwrt-webhook |
| RouterOS | https://github.com/benfiola/external-dns-routeros-provider |
| SAKURA Cloud | https://github.com/sacloud/external-dns-sacloud-webhook |
| Simply | https://github.com/uozalp/external-dns-simply-webhook |
| STACKIT | https://github.com/stackitcloud/external-dns-stackit-webhook |
| Unbound | https://github.com/guillomep/external-dns-unbound-webhook |
| Unifi | https://github.com/kashalls/external-dns-unifi-webhook |
| UniFi | https://github.com/lexfrei/external-dns-unifios-webhook |
| Volcengine Cloud | https://github.com/volcengine/external-dns-volcengine-webhook |
| Vultr | https://github.com/vultr/external-dns-vultr-webhook |
| Yandex Cloud | https://github.com/ismailbaskin/external-dns-yandex-webhook/ |
Expand Down
8 changes: 8 additions & 0 deletions charts/external-dns/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

- Add option to set `annotationPrefix` ([#5889](https://github.com/kubernetes-sigs/external-dns/pull/5889)) _@lexfrei_

### Changed

- Grant `networking.k8s.io/ingresses` and `gateway.solo.io/gateways` permissions when using `gloo-proxy` source. ([#5909](https://github.com/kubernetes-sigs/external-dns/pull/5909)) _@cucxabong_

### Fixed

- Fixed the missing schema for `.provider.webhook.serviceMonitor` configs ([#5932](https://github.com/kubernetes-sigs/external-dns/pull/5932)) _@chrisbsmith_

## [v1.19.0] - 2025-09-08

### Added
Expand Down
4 changes: 2 additions & 2 deletions charts/external-dns/templates/clusterrole.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ rules:
resources: ["endpointslices"]
verbs: ["get","watch","list"]
{{- end }}
{{- if or (has "ingress" .Values.sources) (has "istio-gateway" .Values.sources) (has "istio-virtualservice" .Values.sources) (has "contour-httpproxy" .Values.sources) (has "openshift-route" .Values.sources) (has "skipper-routegroup" .Values.sources) }}
{{- if or (has "ingress" .Values.sources) (has "istio-gateway" .Values.sources) (has "istio-virtualservice" .Values.sources) (has "contour-httpproxy" .Values.sources) (has "openshift-route" .Values.sources) (has "skipper-routegroup" .Values.sources) (has "gloo-proxy" .Values.sources) }}
- apiGroups: ["extensions","networking.k8s.io"]
resources: ["ingresses"]
verbs: ["get","watch","list"]
Expand Down Expand Up @@ -99,7 +99,7 @@ rules:
{{- end }}
{{- if has "gloo-proxy" .Values.sources }}
- apiGroups: ["gloo.solo.io","gateway.solo.io"]
resources: ["proxies","virtualservices"]
resources: ["proxies","virtualservices","gateways"]
verbs: ["get","watch","list"]
{{- end }}
{{- if has "kong-tcpingress" .Values.sources }}
Expand Down
9 changes: 9 additions & 0 deletions charts/external-dns/tests/json-schema_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -62,3 +62,12 @@ tests:
readinessProbe: null
asserts:
- notFailedTemplate: {}

- it: should not fail when provider webhook serviceMonitor interval is not null
set:
provider:
webhook:
serviceMonitor:
interval: 30s
asserts:
- notFailedTemplate: {}
24 changes: 24 additions & 0 deletions charts/external-dns/tests/rbac_test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -520,3 +520,27 @@ tests:
resources: ["virtualservices"]
verbs: ["get","watch","list"]
template: clusterrole.yaml
- it: should create default RBAC rules for 'GlooEdge' when 'gloo-proxy' is set
set:
sources:
- gloo-proxy
asserts:
- template: clusterrole.yaml
equal:
path: rules
value:
- apiGroups: [""]
resources: ["nodes"]
verbs: ["list","watch"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["get","watch","list"]
- apiGroups: [""]
resources: ["services"]
verbs: ["get","watch","list"]
- apiGroups: ["extensions","networking.k8s.io"]
resources: ["ingresses"]
verbs: ["get","watch","list"]
- apiGroups: ["gloo.solo.io","gateway.solo.io"]
resources: ["proxies","virtualservices","gateways"]
verbs: ["get","watch","list"]
20 changes: 16 additions & 4 deletions charts/external-dns/values.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -502,10 +502,16 @@
"type": "object",
"properties": {
"bearerTokenFile": {
"type": "null"
"type": [
"string",
"null"
]
},
"interval": {
"type": "null"
"type": [
"string",
"null"
]
},
"metricRelabelings": {
"type": "array"
Expand All @@ -514,10 +520,16 @@
"type": "array"
},
"scheme": {
"type": "null"
"type": [
"string",
"null"
]
},
"scrapeTimeout": {
"type": "null"
"type": [
"string",
"null"
]
},
"tlsConfig": {
"type": "object"
Expand Down
8 changes: 4 additions & 4 deletions charts/external-dns/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -296,11 +296,11 @@ provider: # @schema type: [object, string]
# -- Optional [Service Monitor](https://prometheus-operator.dev/docs/operator/design/#servicemonitor) configuration for the `webhook` container.
# @default -- See _values.yaml_
serviceMonitor:
interval:
scheme:
interval: # @schema type:[string, null]; default: null
scheme: # @schema type:[string, null]; default: null
tlsConfig: {}
bearerTokenFile:
scrapeTimeout:
bearerTokenFile: # @schema type:[string, null]; default: null
scrapeTimeout: # @schema type:[string, null]; default: null
metricRelabelings: []
relabelings: []

Expand Down
2 changes: 1 addition & 1 deletion controller/execute.go
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@ func buildProvider(
case "dnsimple":
p, err = dnsimple.NewDnsimpleProvider(domainFilter, zoneIDFilter, cfg.DryRun)
case "coredns", "skydns":
p, err = coredns.NewCoreDNSProvider(domainFilter, cfg.CoreDNSPrefix, cfg.DryRun)
p, err = coredns.NewCoreDNSProvider(domainFilter, cfg.CoreDNSPrefix, cfg.TXTOwnerID, cfg.CoreDNSStrictlyOwned, cfg.DryRun)
case "exoscale":
p, err = exoscale.NewExoscaleProvider(
cfg.ExoscaleAPIEnvironment,
Expand Down
8 changes: 4 additions & 4 deletions docs/20190708-external-dns-incubator.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

[ExternalDNS](https://github.com/kubernetes-sigs/external-dns) is a project that synchronizes Kubernetes' Services, Ingresses and other Kubernetes resources to DNS backends for several DNS providers.

The projects was started as a Kubernetes Incubator project in February 2017 and being the Kubernetes incubation initiative officially over, the maintainers want to propose the project to be moved to the kubernetes GitHub organization or to kubernetes-sigs, under the sponsorship of sig-network.
The project was started as a Kubernetes Incubator project in February 2017 and being the Kubernetes incubation initiative officially over, the maintainers want to propose the project to be moved to the kubernetes GitHub organization or to kubernetes-sigs, under the sponsorship of sig-network.

## Motivation

Expand Down Expand Up @@ -62,7 +62,7 @@ Given that the kubernetes-sigs organization will eventually be shut down, the po

- Move the project elsewhere

We believe that those alternatives would result in a worse outcome for the community compared to moving the project to the any of the other official Kubernetes organizations.
We believe that those alternatives would result in a worse outcome for the community compared to moving the project to any of the other official Kubernetes organizations.
In fact, shutting down ExternalDNS can cause:

- The community to rebuild the same solution as already happened multiple times before the project was launched. Currently ExternalDNS is easy to be found, referenced in many articles/tutorials and for that reason not exposed to that risk.
Expand All @@ -89,7 +89,7 @@ We have evidence that many companies are using ExternalDNS in production, but it

The project was quoted by a number of tutorials on the web, including the [official tutorials from AWS](https://aws.amazon.com/blogs/opensource/unified-service-discovery-ecs-kubernetes/).

ExternalDNS can't be consider to be "done": while the core functionality has been implemented, there is lack of integration testing and structural changes that are needed.
ExternalDNS can't be considered to be "done": while the core functionality has been implemented, there is lack of integration testing and structural changes that are needed.

Those are identified in the project roadmap, which is roughly made of the following items:

Expand Down Expand Up @@ -132,7 +132,7 @@ The release pipeline for the project is currently fully owned by Zalando. It run

The docker registry service is provided as best effort with no sort of SLA and the maintainers team openly suggests the users to build and maintain their own docker image based on the provided Dockerfiles.

Providing a vanity URL for the docker images was consider a non goal till now, but the community seems to be wanting official images from a GCR domain, similarly to what is available for other parts of official Kubernetes projects.
Providing a vanity URL for the docker images was considered a non goal till now, but the community seems to be wanting official images from a GCR domain, similarly to what is available for other parts of official Kubernetes projects.

ExternalDNS does not follow a specific release cycle. Releases are made often when there are major contributions (i.e. new providers) or important bug fixes. That said, the default branch is considered stable and can be used as well to build images.

Expand Down
2 changes: 1 addition & 1 deletion docs/advanced/configuration-precedence.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ flowchart TD

3. **Environment Variables**
- May override defaults, and in some cases may take precedence over CLI flags and annotations.
- Behavior depends on how the variable is mapped in the code. Where or not it replicates CLI flag or provider specific. Example: `kubectl` or `cloudflare`.
- Behavior depends on how the variable is mapped in the code. Whether or not it replicates CLI flag or provider specific. Example: `kubectl` or `cloudflare`.

4. **Defaults**
- If none of the above specify a value, ExternalDNS falls back to its defaults.
2 changes: 1 addition & 1 deletion docs/advanced/fqdn-templating.md
Original file line number Diff line number Diff line change
Expand Up @@ -241,7 +241,7 @@ This is helpful in scenarios such as:
- You must still ensure the resulting FQDN is valid and unique.
- Since Go templates can be error-prone, test your template with simple examples before deploying. Mismatched field names or nil values (e.g., missing labels) will result in errors or skipped entries.

## FaQ
## FAQ

### Can I specify multiple global FQDN templates?

Expand Down
102 changes: 98 additions & 4 deletions docs/annotations/annotations.md
Original file line number Diff line number Diff line change
Expand Up @@ -151,14 +151,108 @@ If the annotation is not present, use the domains from both the spec and annotat

## external-dns.alpha.kubernetes.io/ingress

This annotation allows ExternalDNS to work with Istio Gateways that don't have a public IP.
This annotation allows ExternalDNS to work with Istio & GlooEdge Gateways that don't have a public IP.

It can be used to address a specific architectural pattern, when a Kubernetes Ingress directs all public traffic to the Istio Gateway:
It can be used to address a specific architectural pattern, when a Kubernetes Ingress directs all public traffic to an Istio or GlooEdge Gateway:

- **The Challenge**: By default, ExternalDNS sources the public IP address for a DNS record from a Service of type LoadBalancer.
However, in some service mesh setups, the Istio Gateway's Service is of type ClusterIP, with all public traffic routed to it via a separate Kubernetes Ingress object. This setup leaves the Gateway without a public IP that ExternalDNS can discover.
However, in some setups, the Gateway's Service is of type ClusterIP, with all public traffic routed to it via a separate Kubernetes Ingress object. This setup leaves the Gateway without a public IP that ExternalDNS can discover.

- **The Solution**: The annotation on the Istio Gateway tells ExternalDNS to ignore the Gateway's Service IP. Instead, it directs ExternalDNS to a specified Ingress resource to find the target LoadBalancer IP address.
- **The Solution**: The annotation on the Istio/GlooEdge Gateway tells ExternalDNS to ignore the Gateway's Service IP. Instead, it directs ExternalDNS to a specified Ingress resource to find the target LoadBalancer IP address.

### Use Cases for `external-dns.alpha.kubernetes.io/ingress` annotation

#### Getting target from Ingress backed Gloo Gateway

```yml
apiVersion: gateway.solo.io/v1
kind: Gateway
metadata:
annotations:
external-dns.alpha.kubernetes.io/ingress: gateway-proxy
labels:
app: gloo
name: gateway-proxy
namespace: gloo-system
spec:
bindAddress: '::'
bindPort: 8080
options: {}
proxyNames:
- gateway-proxy
ssl: false
useProxyProto: false
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: gateway-proxy
namespace: gloo-system
spec:
ingressClassName: alb
rules:
- host: cool-service.example.com
http:
paths:
- backend:
service:
name: gateway-proxy
port:
name: http
path: /
pathType: Prefix
status:
loadBalancer:
ingress:
- hostname: k8s-alb-c4aa37c880-740590208.us-east-1.elb.amazonaws.com
---
# This object is generated by GlooEdge Control Plane from Gateway and VirtualService.
# We have no direct control on this resource
apiVersion: gloo.solo.io/v1
kind: Proxy
metadata:
labels:
created_by: gloo-gateway
name: gateway-proxy
namespace: gloo-system
spec:
listeners:
- bindAddress: '::'
bindPort: 8080
httpListener:
virtualHosts:
- domains:
- cool-service.example.com
metadataStatic:
sources:
- observedGeneration: "6652"
resourceKind: '*v1.VirtualService'
resourceRef:
name: cool-service
namespace: gloo-system
name: cool-service
routes:
- matchers:
- prefix: /
metadataStatic:
sources:
- observedGeneration: "6652"
resourceKind: '*v1.VirtualService'
resourceRef:
name: cool-service
namespace: gloo-system
upgrades:
- websocket: {}
metadataStatic:
sources:
- observedGeneration: "6111"
resourceKind: '*v1.Gateway'
resourceRef:
name: gateway-proxy
namespace: gloo-system
name: listener-::-8080
useProxyProto: false
```

## external-dns.alpha.kubernetes.io/internal-hostname

Expand Down
2 changes: 1 addition & 1 deletion docs/contributing/design.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ You can pick which `Source` and `Provider` to use at runtime via the `--source`

## Adding a DNS Provider

A typical way to start on, e.g. a CoreDNS provider, would be to add a `coredns.go` to the providers package and implement the interface methods. Then you would have to register your provider under a name in `main.go`, e.g. `coredns`, and would be able to trigger it's functions via setting `--provider=coredns`.
A typical way to start on, e.g. a CoreDNS provider, would be to add a `coredns.go` to the providers package and implement the interface methods. Then you would have to register your provider under a name in `main.go`, e.g. `coredns`, and would be able to trigger its functions via setting `--provider=coredns`.

Note, how your provider doesn't need to know anything about where the DNS records come from, nor does it have to figure out the difference between the current and the desired state, it merely executes the actions calculated by the plan.

Expand Down
11 changes: 8 additions & 3 deletions docs/contributing/dev-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ Building and/or testing `external-dns` requires additional tooling.

## First Steps

***Configure Development Environment**
***Configure Development Environment***

You must have a working [Go environment](https://go.dev/doc/install), compile the build, and set up testing.

Expand Down Expand Up @@ -78,6 +78,11 @@ func TestMe(t *testing.T) {
}
```

## Complete test on local env

It's possible to run ExternalDNS locally. CoreDNS can be used for easier testing.
See the [related tutorials](../tutorials/coredns-etc.md) for full instructions.

### Continuous Integration

When submitting a pull request, you'll notice that we run several automated processes on your proposed change. Some of these processes are tests to ensure your contribution aligns with our standards. While we strive for accuracy, some users may find these tests confusing.
Expand Down Expand Up @@ -154,7 +159,7 @@ When building local images with ko you can't specify the registry used to create
❯❯ export KO_DOCKER_REPO=ko.local
❯❯ export VERSION=v1
❯❯ docker context use rancher-desktop ## (optional) this command is only required when using rancher-desktop
❯❯ ls -al /var/run/docker.sock ## (optional) validate tha docker runtime is configured correctly and symlink exist
❯❯ ls -al /var/run/docker.sock ## (optional) validate that docker runtime is configured correctly and symlink exists

❯❯ ko build --tags ${VERSION}
❯❯ docker images
Expand Down Expand Up @@ -275,7 +280,7 @@ This helm chart comes with a JSON schema generated from values with [helm schema
❯❯ scripts/helm-tools.sh --docs
```

6. Run helm unittets.
6. Run helm unittests.

```sh
❯❯ make helm-test
Expand Down
6 changes: 3 additions & 3 deletions docs/faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ Under certain circumstances you want to force ExternalDNS to create CNAME record
Why should I want to force ExternalDNS to create CNAME records for ELB/ALB? Some motivations of users were:

> "Our hosted zones records are synchronized with our enterprise DNS. The record type ALIAS is an AWS proprietary record type and AWS allows you to set a DNS record directly on AWS resources.
> Since this is not a DNS RfC standard and therefore can not be transferred and created in our enterprise DNS. So we need to force CNAME creation instead."
> Since this is not a DNS RFC standard and therefore can not be transferred and created in our enterprise DNS. So we need to force CNAME creation instead."

or

Expand Down Expand Up @@ -251,14 +251,14 @@ If you need to search for multiple ingress classes, you can specify the flag mul
`--ingress-class=internal --ingress-class=external`.

The `--ingress-class` flag will check both the `spec.ingressClassName` field and the deprecated `kubernetes.io/ingress.class` annotation.
The `spec.ingressClassName` tasks precedence over the annotation if both are supplied.
The `spec.ingressClassName` takes precedence over the annotation if both are supplied.

**Backward compatibility**

The previous `--annotation-filter` flag can still be used to restrict which objects ExternalDNS considers; for example, `--annotation-filter=kubernetes.io/ingress.class in (public,dmz)`.

However, beware when using annotation filters with multiple sources, e.g. `--source=service --source=ingress`, since `--annotation-filter` will filter every given source object.
If you need to use annotation filters against a specific source you have to run a separated external dns service containing only the wanted `--source` and `--annotation-filter`.
If you need to use annotation filters against a specific source you have to run a separated external dns service containing only the wanted `--source` and `--annotation-filter`.

Note: the `--ingress-class` flag cannot be used at the same time as the `--annotation-filter=kubernetes.io/ingress.class in (...)` flag; if you do this an error will be raised.

Expand Down
Loading