Knative: Operator’s Handbook

Default domain names

When you deploy a Knative service, by default it's exposed both internally and externally:

$ kubectl describe ksvc hello
...
  Domain:                        hello.default.example.com
  Domain Internal:               hello.default.svc.cluster.local

Both the internal and external domain point to the ingress gateway (load balancer). All traffic to a Knative Service will go through this load balancer first (and not directly to the Pods directly, like Kubernetes).

Internal domain

You should use this to access Knative services from within the Kubernetes cluster. It follows the Kubernetes DNS service discovery naming:

{NAME}.{NAMESPACE}.svc.cluster.local

For example: hello.default.svc.cluster.local.

WARNING: Knative only supports routing traffic with full hostnames. Partial hostnames such as hello or hello.default will successfully resolve, but the load balancer won't know where to send it, and it will return 404 Not Found.

External domain

Registers the Knative service on the external ingress gateway so that it's accesible publicly.

It uses .example.com as the suffix by default, but this can be changed to a custom default domain). It follows a similar format to internal domains:

{NAME}.{NAMESPACE}.example.com