Default domain name settings

The fully qualified domain name for a route by default is {route}.{namespace}.{default-domain}. Knative Serving routes use example.com as the default domain.

You can change the default domain by modifying the config-domain ConfigMap.

Warning

Customizing a domain using this ConfigMap affects your cluster globally. If you want to customize the domain of an individual Service, use DomainMapping instead.

Procedure

  1. Open the config-domain ConfigMap in your default text editor:

    1. kubectl edit configmap config-domain -n knative-serving
  2. Edit the file to replace example.com with the domain you want to use, then remove the _example key and save your changes. In this example, mydomain.com is configured as the domain for all routes:

    1. apiVersion: v1
    2. data:
    3. mydomain.com: ""
    4. kind: ConfigMap
    5. [...]

If you have an existing deployment, Knative reconciles the change made to the ConfigMap, and automatically updates the host name for all of the deployed Services and Routes.

Verification steps

  1. Deploy an app to your cluster.
  2. Retrieve the URL for the Route:

    1. kubectl get route <route-name> --output jsonpath="{.status.url}"

    Where <route-name> is the name of the Route.

  3. Observe the customized domain that you have configured.

Publish your Domain

To make your domain publicly accessible, you must update your DNS provider to point to the IP address for your service ingress.

  1. Create a wildcard record for the namespace and custom domain to the ingress IP Address, which would enable hostnames for multiple services in the same namespace to work without creating additional DNS entries.

    1. *.default.mydomain.com 59 IN A 35.237.28.44
  2. Create an A record to point from the fully qualified domain name to the IP address of your Knative gateway. This step needs to be done for each Knative Service or Route created.

    1. helloworld-go.default.mydomain.com 59 IN A 35.237.28.44
  3. After the domain update has propagated, you can access your app by using the fully qualified domain name of the deployed route.