Configure a Custom Domain Name for HTTPRoute¶
When you create a HTTPRoute under amazon-vpc-lattice
gatewayclass, the controller creates a AWS VPC Lattice Service during reconciliation.
VPC Lattice generates a unique Fully Qualified Domain Name (FQDN) for you; however, this auto-generated domain name is not easy to remember.
If you'd prefer to use a custom domain name for a HTTPRoute, you can specify them in hostname field of HTTPRoute. Here is one example:
apiVersion: gateway.networking.k8s.io/v1alpha2
kind: HTTPRoute
metadata:
name: review
spec:
hostnames:
- review.my-test.com # this is the custom domain name
parentRefs:
- name: my-hotel
sectionName: http
rules:
- backendRefs:
- name: review2
kind: Service
port: 8090
matches:
- path:
type: PathPrefix
value: /review2
Managing DNS records using ExternalDNS¶
To register custom domain names to your DNS provider, we recommend using ExternalDNS.
AWS Gateway API Controller supports ExternalDNS integration through CRD source - the controller will manage DNSEndpoint
resource for you.
- Install
DNSEndpoint
CRD. This is bundled with both Gateway API Controller Helm chart andexamples/deploy-*.yaml
manifest, but also can be installed manually by the following command:If the CRD does not exist,kubectl apply -f config/crds/bases/externaldns.k8s.io_dnsendpoints.yaml
DNSEndpoint
resource will not be created or managed by the controller. - Restart the controller if running already.
- Run ExternalDNS controller watching
crd
source. The following example command runs ExternalDNS compiled from source, using AWS Route53 provider:build/external-dns --source crd --crd-source-apiversion externaldns.k8s.io/v1alpha1 \ --crd-source-kind DNSEndpoint --provider aws --txt-prefix "prefix."
- Create HTTPRoutes and Services. The controller should create
DNSEndpoint
resource owned by the HTTPRoute you created. - ExternalDNS will watch the changes and create DNS record on the configured DNS provider.
Notes¶
- You MUST have a registered hosted zone (e.g.
my-test.com
) in route53 and complete thePrerequisites
mentioned in Configure a custom domain name for your service. - If you are not using ExternalDNS, you should manually associate your custom domain name with your service following Configure a custom domain name for your service.