fix(docs): resove broken links, add source description (#5413)

This commit is contained in:
Lino Layani 2025-05-19 03:43:23 -04:00 committed by GitHub
parent 14ea50300e
commit 2a1ab538b8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 80 additions and 75 deletions

View File

@ -27,7 +27,7 @@ This README is a part of the complete documentation, available [here](https://ku
Inspired by [Kubernetes DNS](https://github.com/kubernetes/dns), Kubernetes' cluster-internal DNS server, ExternalDNS makes Kubernetes resources discoverable via public DNS servers. Inspired by [Kubernetes DNS](https://github.com/kubernetes/dns), Kubernetes' cluster-internal DNS server, ExternalDNS makes Kubernetes resources discoverable via public DNS servers.
Like KubeDNS, it retrieves a list of resources (Services, Ingresses, etc.) from the [Kubernetes API](https://kubernetes.io/docs/api/) to determine a desired list of DNS records. Like KubeDNS, it retrieves a list of resources (Services, Ingresses, etc.) from the [Kubernetes API](https://kubernetes.io/docs/api/) to determine a desired list of DNS records.
*Unlike* KubeDNS, however, it's not a DNS server itself, but merely configures other DNS providers accordingly—e.g. [AWS Route 53](https://aws.amazon.com/route53/) or [Google Cloud DNS](https://cloud.google.com/dns/docs/). _Unlike_ KubeDNS, however, it's not a DNS server itself, but merely configures other DNS providers accordingly—e.g. [AWS Route 53](https://aws.amazon.com/route53/) or [Google Cloud DNS](https://cloud.google.com/dns/docs/).
In a broader sense, ExternalDNS allows you to control DNS records dynamically via Kubernetes resources in a DNS provider-agnostic way. In a broader sense, ExternalDNS allows you to control DNS records dynamically via Kubernetes resources in a DNS provider-agnostic way.
@ -77,7 +77,7 @@ Note that all flags can be replaced with environment variables; for instance,
## New providers ## New providers
No new provider will be added to ExternalDNS *in-tree*. No new provider will be added to ExternalDNS _in-tree_.
ExternalDNS has introduced a webhook system, which can be used to add a new provider. ExternalDNS has introduced a webhook system, which can be used to add a new provider.
See PR #3063 for all the discussions about it. See PR #3063 for all the discussions about it.
@ -116,7 +116,7 @@ ExternalDNS supports multiple DNS providers which have been implemented by the [
Maintaining all of those in a central repository is a challenge, which introduces lots of toil and potential risks. Maintaining all of those in a central repository is a challenge, which introduces lots of toil and potential risks.
This mean that `external-dns` has begun the process to move providers out of tree. See #4347 for more details. This mean that `external-dns` has begun the process to move providers out of tree. See #4347 for more details.
Those who are interested can create a webhook provider based on an *in-tree* provider and after submit a PR to reference it here. Those who are interested can create a webhook provider based on an _in-tree_ provider and after submit a PR to reference it here.
We define the following stability levels for providers: We define the following stability levels for providers:
@ -126,34 +126,34 @@ We define the following stability levels for providers:
The following table clarifies the current status of the providers according to the aforementioned stability levels: The following table clarifies the current status of the providers according to the aforementioned stability levels:
| Provider | Status | Maintainers | | Provider | Status | Maintainers |
| -------- | ------ | ----------- | | ------------------------------- | ------ | ---------------- |
| Google Cloud DNS | Stable | | | Google Cloud DNS | Stable | |
| AWS Route 53 | Stable | | | AWS Route 53 | Stable | |
| AWS Cloud Map | Beta | | | AWS Cloud Map | Beta | |
| Akamai Edge DNS | Beta | | | Akamai Edge DNS | Beta | |
| AzureDNS | Stable | | | AzureDNS | Stable | |
| Civo | Alpha | @alejandrojnm | | Civo | Alpha | @alejandrojnm |
| CloudFlare | Beta | | | CloudFlare | Beta | |
| DigitalOcean | Alpha | | | DigitalOcean | Alpha | |
| DNSimple | Alpha | | | DNSimple | Alpha | |
| PowerDNS | Alpha | | | PowerDNS | Alpha | |
| CoreDNS | Alpha | | | CoreDNS | Alpha | |
| Exoscale | Alpha | | | Exoscale | Alpha | |
| Oracle Cloud Infrastructure DNS | Alpha | | | Oracle Cloud Infrastructure DNS | Alpha | |
| Linode DNS | Alpha | | | Linode DNS | Alpha | |
| RFC2136 | Alpha | | | RFC2136 | Alpha | |
| NS1 | Alpha | | | NS1 | Alpha | |
| TransIP | Alpha | | | TransIP | Alpha | |
| OVHcloud | Beta | @rbeuque74 | | OVHcloud | Beta | @rbeuque74 |
| Scaleway DNS | Alpha | @Sh4d1 | | Scaleway DNS | Alpha | @Sh4d1 |
| UltraDNS | Alpha | | | UltraDNS | Alpha | |
| GoDaddy | Alpha | | | GoDaddy | Alpha | |
| Gandi | Alpha | @packi | | Gandi | Alpha | @packi |
| IBMCloud | Alpha | @hughhuangzh | | IBMCloud | Alpha | @hughhuangzh |
| TencentCloud | Alpha | @Hyzhou | | TencentCloud | Alpha | @Hyzhou |
| Plural | Alpha | @michaeljguarino | | Plural | Alpha | @michaeljguarino |
| Pi-hole | Alpha | @tinyzimmer | | Pi-hole | Alpha | @tinyzimmer |
## Kubernetes version compatibility ## Kubernetes version compatibility
@ -220,7 +220,7 @@ The following tutorials are provided:
### Running Locally ### Running Locally
See the [contributor guide](docs/contributing/getting-started.md) for details on compiling See the [contributor guide](docs/contributing/dev-guide.md) for details on compiling
from source. from source.
#### Setup Steps #### Setup Steps
@ -244,7 +244,7 @@ Optionally, you can customize the TTL value of the resulting DNS record by using
kubectl annotate service nginx "external-dns.alpha.kubernetes.io/ttl=10" kubectl annotate service nginx "external-dns.alpha.kubernetes.io/ttl=10"
``` ```
For more details on configuring TTL, see [here](docs/ttl.md). For more details on configuring TTL, see [here](docs/advanced/ttl.md).
Use the internal-hostname annotation to create DNS records with ClusterIP as the target. Use the internal-hostname annotation to create DNS records with ClusterIP as the target.
@ -289,7 +289,7 @@ The **tutorials** section contains examples, including Ingress resources, and sh
# Note # Note
If using a txt registry and attempting to use a CNAME the `--txt-prefix` must be set to avoid conflicts. Changing `--txt-prefix` will result in lost ownership over previously created records. If using a txt registry and attempting to use a CNAME the `--txt-prefix` must be set to avoid conflicts. Changing `--txt-prefix` will result in lost ownership over previously created records.
If `externalIPs` list is defined for a `LoadBalancer` service, this list will be used instead of an assigned load balancer IP to create a DNS record. If `externalIPs` list is defined for a `LoadBalancer` service, this list will be used instead of an assigned load balancer IP to create a DNS record.
It's useful when you run bare metal Kubernetes clusters behind NAT or in a similar setup, where a load balancer IP differs from a public IP (e.g. with [MetalLB](https://metallb.universe.tf)). It's useful when you run bare metal Kubernetes clusters behind NAT or in a similar setup, where a load balancer IP differs from a public IP (e.g. with [MetalLB](https://metallb.universe.tf)).

View File

@ -2,16 +2,15 @@
<!-- TOC depthFrom:1 depthTo:6 withLinks:1 updateOnSave:1 orderedList:0 --> <!-- TOC depthFrom:1 depthTo:6 withLinks:1 updateOnSave:1 orderedList:0 -->
- [Move ExternalDNS out of Kubernetes incubator]((#move-externaldns-out-of-kubernetes-incubator)) - [Summary](#summary)
- [Summary](#summary) - [Motivation](#motivation)
- [Motivation](#motivation) - [Goals](#goals)
- [Goals](#goals) - [Proposal](#proposal)
- [Proposal](#proposal) - [Details](#details)
- [Details](#details) - [Graduation Criteria](#graduation-criteria)
- [Graduation Criteria](#graduation-criteria) - [Maintainers](#maintainers)
- [Maintainers](#maintainers) - [Release process, artifacts](#release-process-artifacts)
- [Release process, artifacts](#release-process-artifacts) - [Risks and Mitigations](#risks-and-mitigations)
- [Risks and Mitigations](#risks-and-mitigations)
<!-- /TOC --> <!-- /TOC -->
@ -150,9 +149,11 @@ The following are risks that were identified:
We think that the following actions will constitute appropriate mitigations: We think that the following actions will constitute appropriate mitigations:
- Decoupling the providers via an API will allow us to resolve the problem of the providers. Being the project already more than 2 years old and given that there are 18 providers implemented, we possess enough information to define an API that we can be stable in a short timeframe. - Decoupling the providers via an API will allow us to resolve the problem of the providers. Being the project already more than 2 years old and given that there are 18 providers implemented, we possess enough information to define an API that we can be stable in a short timeframe.
- Once this is stable, the problem of testing the providers can be deferred to be a provider's responsibility. This will also reduce the scope of External DNS core code, which means that there will be no need for a further increase of the maintaining team. - Once this is stable, the problem of testing the providers can be deferred to be a provider's responsibility. This will also reduce the scope of External DNS core code, which means that there will be no need for a further increase of the maintaining team.
- We added integration testing for the main cloud providers to the roadmap for the 1.0 release to make sure that we cover the mostly used ones. - We added integration testing for the main cloud providers to the roadmap for the 1.0 release to make sure that we cover the mostly used ones.
- We believe that this item should be tackled independently from the decoupling of providers as it would be capable of generating value independently from the result of the decoupling efforts. - We believe that this item should be tackled independently from the decoupling of providers as it would be capable of generating value independently from the result of the decoupling efforts.
- With the move to the Kubernetes incubation, we hope that we will be able to access the testing resources of the Kubernetes project. - With the move to the Kubernetes incubation, we hope that we will be able to access the testing resources of the Kubernetes project.

View File

@ -26,7 +26,7 @@ All sources live in package `source`.
* `ContourIngressRouteSource`: collects all Contour IngressRoutes and returns them as Endpoint objects. The desired DNS name corresponds to the `virtualhost.fqdn` listed within the spec of each IngressRoute object. * `ContourIngressRouteSource`: collects all Contour IngressRoutes and returns them as Endpoint objects. The desired DNS name corresponds to the `virtualhost.fqdn` listed within the spec of each IngressRoute object.
* `FakeSource`: returns a random list of Endpoints for the purpose of testing providers without having access to a Kubernetes cluster. * `FakeSource`: returns a random list of Endpoints for the purpose of testing providers without having access to a Kubernetes cluster.
* `ConnectorSource`: returns a list of Endpoint objects which are served by a tcp server configured through `connector-source-server` flag. * `ConnectorSource`: returns a list of Endpoint objects which are served by a tcp server configured through `connector-source-server` flag.
* `CRDSource`: returns a list of Endpoint objects sourced from the spec of CRD objects. For more details refer to [CRD source](crd-source.md) documentation. * `CRDSource`: returns a list of Endpoint objects sourced from the spec of CRD objects. For more details refer to [CRD source](../sources/crd.md) documentation.
* `EmptySource`: returns an empty list of Endpoint objects for the purpose of testing and cleaning out entries. * `EmptySource`: returns an empty list of Endpoint objects for the purpose of testing and cleaning out entries.
## Providers ## Providers

View File

@ -43,7 +43,7 @@ The proposal must clearly outline the rationale for inclusion, the impact on use
The proposal must be formalized by submitting a `docs/proposal/EDP-XXX.md` document in a Pull Request. Pull request must be labeled with `kind/proposal`. The proposal must be formalized by submitting a `docs/proposal/EDP-XXX.md` document in a Pull Request. Pull request must be labeled with `kind/proposal`.
The proposal template location is [here](docs/proposal/design-template.md). The template is quite complete, one can remove any unnecessary or irrelevant section on a specific proposal. The proposal template location is [here](./proposal/design-template.md). The template is quite complete, one can remove any unnecessary or irrelevant section on a specific proposal.
## Deprecation Process ## Deprecation Process

View File

@ -1,26 +1,30 @@
# About # About
| Source | Resources | annotation-filter | label-filter | A source in ExternalDNS defines where DNS records are discovered from within your infrastructure. Each source corresponds to a specific Kubernetes resource or external system that declares DNS names.
|---------------------------------|-------------------------------------------------------------------------------|-------------------|--------------|
| ambassador-host | Host.getambassador.io | Yes | Yes | ExternalDNS watches the specified sources for hostname information and uses it to create, update, or delete DNS records accordingly. Multiple sources can be configured simultaneously to support diverse environments.
| connector | | | |
| contour-httpproxy | HttpProxy.projectcontour.io | Yes | | | Source | Resources | annotation-filter | label-filter |
| cloudfoundry | | | | | --------------------------------------- | ----------------------------------------------------------------------------- | ----------------- | ------------ |
| crd | DNSEndpoint.externaldns.k8s.io | Yes | Yes | | ambassador-host | Host.getambassador.io | Yes | Yes |
| f5-virtualserver | VirtualServer.cis.f5.com | Yes | | | connector | | | |
| [gateway-grpcroute](gateway.md) | GRPCRoute.gateway.networking.k8s.io | Yes | Yes | | contour-httpproxy | HttpProxy.projectcontour.io | Yes | |
| [gateway-httproute](gateway.md) | HTTPRoute.gateway.networking.k8s.io | Yes | Yes | | cloudfoundry | | | |
| [gateway-tcproute](gateway.md) | TCPRoute.gateway.networking.k8s.io | Yes | Yes | | [crd](crd.md) | DNSEndpoint.externaldns.k8s.io | Yes | Yes |
| [gateway-tlsroute](gateway.md) | TLSRoute.gateway.networking.k8s.io | Yes | Yes | | [f5-virtualserver](f5-virtualserver.md) | VirtualServer.cis.f5.com | Yes | |
| [gateway-udproute](gateway.md) | UDPRoute.gateway.networking.k8s.io | Yes | Yes | | [gateway-grpcroute](gateway.md) | GRPCRoute.gateway.networking.k8s.io | Yes | Yes |
| gloo-proxy | Proxy.gloo.solo.io | | | | [gateway-httproute](gateway.md) | HTTPRoute.gateway.networking.k8s.io | Yes | Yes |
| [ingress](ingress.md) | Ingress.networking.k8s.io | Yes | Yes | | [gateway-tcproute](gateway.md) | TCPRoute.gateway.networking.k8s.io | Yes | Yes |
| istio-gateway | Gateway.networking.istio.io | Yes | | | [gateway-tlsroute](gateway.md) | TLSRoute.gateway.networking.k8s.io | Yes | Yes |
| istio-virtualservice | VirtualService.networking.istio.io | Yes | | | [gateway-udproute](gateway.md) | UDPRoute.gateway.networking.k8s.io | Yes | Yes |
| kong-tcpingress | TCPIngress.configuration.konghq.com | Yes | | | [gloo-proxy](gloo-proxy.md) | Proxy.gloo.solo.io | | |
| node | Node | Yes | Yes | | [ingress](ingress.md) | Ingress.networking.k8s.io | Yes | Yes |
| openshift-route | Route.route.openshift.io | Yes | Yes | | [istio-gateway](istio.md) | Gateway.networking.istio.io | Yes | |
| pod | Pod | | | | [istio-virtualservice](istio.md) | VirtualService.networking.istio.io | Yes | |
| [service](service.md) | Service | Yes | Yes | | [kong-tcpingress](kong.md) | TCPIngress.configuration.konghq.com | Yes | |
| skipper-routegroup | RouteGroup.zalando.org | Yes | | | [node](nodes.md) | Node | Yes | Yes |
| traefik-proxy | IngressRoute.traefik.io IngressRouteTCP.traefik.io IngressRouteUDP.traefik.io | Yes | | | [openshift-route](openshift.md) | Route.route.openshift.io | Yes | Yes |
| [pod](pod.md) | Pod | | |
| [service](service.md) | Service | Yes | Yes |
| skipper-routegroup | RouteGroup.zalando.org | Yes | |
| [traefik-proxy](traefik-proxy.md) | IngressRoute.traefik.io IngressRouteTCP.traefik.io IngressRouteUDP.traefik.io | Yes | |

View File

@ -1,6 +1,6 @@
# CRD Source # CRD Source
CRD source provides a generic mechanism to manage DNS records in your favourite DNS provider supported by external-dns. CRD source provides a generic mechanism to manage DNS records in your favorite DNS provider supported by external-dns.
## Details ## Details

View File

@ -1,6 +1,6 @@
# MX record with CRD source # MX record with CRD source
You can create and manage MX records with the help of [CRD source](../contributing/crd-source.md) You can create and manage MX records with the help of [CRD source](../sources/crd.md)
and `DNSEndpoint` CRD. Currently, this feature is only supported by `aws`, `azure`, `google` and `digitalocean` providers. and `DNSEndpoint` CRD. Currently, this feature is only supported by `aws`, `azure`, `google` and `digitalocean` providers.
In order to start managing MX records you need to set the `--managed-record-types=MX` flag. In order to start managing MX records you need to set the `--managed-record-types=MX` flag.

View File

@ -1,6 +1,6 @@
# NS record with CRD source # NS record with CRD source
You can create NS records with the help of [CRD source](../contributing/crd-source.md) You can create NS records with the help of [CRD source](../sources/crd.md)
and `DNSEndpoint` CRD. and `DNSEndpoint` CRD.
In order to start managing NS records you need to set the `--managed-record-types=NS` flag. In order to start managing NS records you need to set the `--managed-record-types=NS` flag.

View File

@ -1,6 +1,6 @@
# Creating TXT record with CRD source # Creating TXT record with CRD source
You can create and manage TXT records with the help of [CRD source](../contributing/crd-source.md) You can create and manage TXT records with the help of [CRD source](../sources/crd.md)
and `DNSEndpoint` CRD. Currently, this feature is only supported by `digitalocean` providers. and `DNSEndpoint` CRD. Currently, this feature is only supported by `digitalocean` providers.
In order to start managing TXT records you need to set the `--managed-record-types=TXT` flag. In order to start managing TXT records you need to set the `--managed-record-types=TXT` flag.

View File

@ -35,7 +35,7 @@ nav:
- FQDN Templating: docs/advanced/fqdn-templating.md - FQDN Templating: docs/advanced/fqdn-templating.md
- Contributing: - Contributing:
- Kubernetes Contributions: CONTRIBUTING.md - Kubernetes Contributions: CONTRIBUTING.md
- Release: docs/release. - Release: docs/release.md
- Deprecation Policy: docs/deprecation.md - Deprecation Policy: docs/deprecation.md
- docs/contributing/* - docs/contributing/*