mirror of
				https://github.com/kubernetes-sigs/external-dns.git
				synced 2025-11-04 12:41:00 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			97 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# Configuring ExternalDNS to use Gateway API Route Sources
 | 
						|
 | 
						|
This describes how to configure ExternalDNS to use Gateway API Route sources.
 | 
						|
It is meant to supplement the other provider-specific setup tutorials.
 | 
						|
 | 
						|
## Supported API Versions
 | 
						|
 | 
						|
As the Gateway API is still in an experimental phase, ExternalDNS makes no backwards
 | 
						|
compatibilty guarantees regarding its support. However, it currently supports a mixture of
 | 
						|
v1alpha2, v1beta1, v1 APIs. Gateways and HTTPRoutes are supported using the v1 and v1beta1 API (which is converted to v1 when using the latest CRDs).
 | 
						|
GRPCRoutes, TLSRoutes, TCPRoutes, and UDPRoutes are supported using the v1alpha2 API.
 | 
						|
 | 
						|
## Hostnames
 | 
						|
 | 
						|
HTTPRoute and TLSRoute specs, along with their associated Gateway Listeners, contain hostnames that
 | 
						|
will be used by ExternalDNS. However, no such hostnames may be specified in TCPRoute or UDPRoute
 | 
						|
specs. For TCPRoutes and UDPRoutes, the `external-dns.alpha.kubernetes.io/hostname` annotation
 | 
						|
is the recommended way to provide their hostnames to ExternalDNS. This annotation is also supported
 | 
						|
for HTTPRoutes and TLSRoutes by ExternalDNS, but it's _strongly_ recommended that they use their
 | 
						|
specs to provide all intended hostnames, since the Gateway that ultimately routes their
 | 
						|
requests/connections won't recognize additional hostnames from the annotation.
 | 
						|
 | 
						|
## Manifest with RBAC
 | 
						|
```yaml
 | 
						|
apiVersion: v1
 | 
						|
kind: ServiceAccount
 | 
						|
metadata:
 | 
						|
  name: external-dns
 | 
						|
  namespace: default
 | 
						|
---
 | 
						|
apiVersion: rbac.authorization.k8s.io/v1
 | 
						|
kind: ClusterRole
 | 
						|
metadata:
 | 
						|
  name: external-dns
 | 
						|
rules:
 | 
						|
- apiGroups: [""]
 | 
						|
  resources: ["namespaces"]
 | 
						|
  verbs: ["get","watch","list"]
 | 
						|
- apiGroups: ["gateway.networking.k8s.io"]
 | 
						|
  resources: ["gateways","httproutes","grpcroutes","tlsroutes","tcproutes","udproutes"] 
 | 
						|
  verbs: ["get","watch","list"]
 | 
						|
---
 | 
						|
apiVersion: rbac.authorization.k8s.io/v1
 | 
						|
kind: ClusterRoleBinding
 | 
						|
metadata:
 | 
						|
  name: external-dns
 | 
						|
roleRef:
 | 
						|
  apiGroup: rbac.authorization.k8s.io
 | 
						|
  kind: ClusterRole
 | 
						|
  name: external-dns
 | 
						|
subjects:
 | 
						|
- kind: ServiceAccount
 | 
						|
  name: external-dns
 | 
						|
  namespace: default
 | 
						|
---
 | 
						|
apiVersion: apps/v1
 | 
						|
kind: Deployment
 | 
						|
metadata:
 | 
						|
  name: external-dns
 | 
						|
  namespace: default
 | 
						|
spec:
 | 
						|
  strategy:
 | 
						|
    type: Recreate
 | 
						|
  selector:
 | 
						|
    matchLabels:
 | 
						|
      app: external-dns
 | 
						|
  template:
 | 
						|
    metadata:
 | 
						|
      labels:
 | 
						|
        app: external-dns
 | 
						|
    spec:
 | 
						|
      serviceAccountName: external-dns
 | 
						|
      containers:
 | 
						|
      - name: external-dns
 | 
						|
        image: registry.k8s.io/external-dns/external-dns:v0.13.5
 | 
						|
        args:
 | 
						|
        # Add desired Gateway API Route sources.
 | 
						|
        - --source=gateway-httproute
 | 
						|
        - --source=gateway-grpcroute
 | 
						|
        - --source=gateway-tlsroute
 | 
						|
        - --source=gateway-tcproute
 | 
						|
        - --source=gateway-udproute
 | 
						|
        # Optionally, limit Routes to those in the given namespace.
 | 
						|
        - --namespace=my-route-namespace
 | 
						|
        # Optionally, limit Routes to those matching the given label selector.
 | 
						|
        - --label-filter=my-route-label==my-route-value
 | 
						|
        # Optionally, limit Route endpoints to those Gateways in the given namespace.
 | 
						|
        - --gateway-namespace=my-gateway-namespace
 | 
						|
        # Optionally, limit Route endpoints to those Gateways matching the given label selector.
 | 
						|
        - --gateway-label-filter=my-gateway-label==my-gateway-value
 | 
						|
        # Add provider-specific flags...
 | 
						|
        - --domain-filter=external-dns-test.my-org.com
 | 
						|
        - --provider=google
 | 
						|
        - --registry=txt
 | 
						|
        - --txt-owner-id=my-identifier
 | 
						|
```
 |