## TL;DR
external-dns only creates records for sources it is configured to watch, and only when they carry the hostname annotation. Add the `external-dns.alpha.kubernetes.io/hostname` annotation with the desired DNS name, confirm the source is enabled, and the record appears.

## Error
```text
external-dns: no endpoints found for service
```

## Steps
1. Check the annotation: describe the Service or Ingress and look for the hostname annotation. Expected: it is missing or misspelled, which explains the skip.
2. Add the annotation with the fully qualified DNS name you want. Expected: the object now advertises the desired hostname.
3. Verify sources: check the external-dns deployment args for `--source` flags covering your object type (service, ingress, etc.). Expected: your object type is in the source list.
4. Check the logs: run with `--log-level=debug` or inspect events for the "no endpoints" decision. Expected: the log confirms the annotation or source gap.
5. Wait one sync interval and query DNS. Expected: the record resolves to the service endpoint.

## When to use
- external-dns logs "no endpoints found" for a service
- New services that never get DNS records
- After changing external-dns sources

## When not to use
- DNS provider API credential failures (auth issue)
- Records created but not resolving (provider propagation)

## Tool compatibility
- external-dns (`--source`, hostname annotation); DNS providers

## Variant phrasings
### external-dns skipping my ingress
Add the hostname annotation; without it external-dns ignores the ingress.

### no dns record for kubernetes service
Confirm the service type is supported by your `--source` setting and the annotation is present.

## Why it happens
external-dns is deliberately opt-in per object via the annotation, so it never invents DNS names. A missing annotation or a source type the deployment does not watch means the object is invisible to the sync loop by design.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_t265Djr9B7cqkv0PLq8o3g
