Setting up a custom domain per Service
By default, Knative uses the {route}.{namespace}.{default-domain}
fully qualified domain name for the Service, where default-domain
is example.com
. You are able to change the default-domain
following the Setting up a custom domain guide.
This guide documents the process to use a custom FQDN for a Service, like my-service.example.com
, created by @bsideup.
There is currently no official process to set up a custom domain per Service. The topic is being discussed here.
Edit using kubectl
Edit the
domainTemplate
entry on theconfig-network
configuration. You can find more information about it here:kubectl edit cm config-network --namespace knative-serving
Replace the
domainTemplate
with the following (the spaces must be respected):[...]
data:
[...]
domainTemplate: |-
{{if index .Annotations "custom-hostname" -}}
{{- index .Annotations "custom-hostname" -}}
{{else -}}
{{- .Name}}.{{.Namespace -}}
{{end -}}
.{{.Domain}}
Save and close your editor.
Edit the Service
In a Service definition, add the
custom-hostname
annotation:apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: hello-world
annotations:
# the Service FQDN will become hello-world.{default-domain}
custom-hostname: hello-world
spec:
[...]
Apply your changes.
Verify the changes
- Verify that the Service was created with the specified hostname:
kubectl get ksvc hello-world
NAME URL LATESTCREATED LATESTREADY READY REASON
hello-world http://hello-world.example.com hello-world-nfqh2 hello-world-nfqh2 True