Knative Tutorials: How to change ksvc DNS / URL?

The URL format for Knative Service (KService or ksvc) objects in Kubernetes is typically determined by the DNS configuration and domain suffixes within your Kubernetes cluster. The format http://<service-name>.<namespace>.svc.cluster.local is the default URL structure for services within a Kubernetes cluster, where:

  • <service-name> is the name of your Knative service.
  • <namespace> is the namespace where the service is deployed.
  • svc.cluster.local is the default DNS suffix for services within the cluster.

If you want to use a custom domain name like http://devops.default.example.com instead of the default URL, you need to configure DNS and customize the Knative Service accordingly.

Here are the steps to configure a custom domain for your Knative Service:

  1. Configure DNS:To use a custom domain like example.com, you need to configure your DNS to point to the IP address of your Kubernetes cluster’s load balancer or the external IP of your Ingress controller. This typically involves creating a DNS A or CNAME record in your DNS provider’s control panel. Ensure that the custom domain resolves to the correct IP address.
  2. Ingress Configuration:If you’re using an Ingress controller to expose your Knative services to the external network, you’ll need to configure the Ingress resource to map the custom domain to your Knative Service. Here’s an example of an Ingress resource YAML that routes traffic from example.com to your Knative Service:
  1. Apply this Ingress configuration to your cluster to route traffic from your custom domain to the Knative Service.
  2. Knative Service Configuration:Ensure that the Knative Service resource (KService or ksvc) specifies the correct hostname in its configuration. You can set the hostname field in the spec section of your Knative Service YAML to match your custom domain:
  1. Make sure to replace devops.default.example.com with your actual custom domain.
  2. Verify Configuration:After making these changes, ensure that your custom domain (http://devops.default.example.com) is working as expected. You may need to wait for DNS propagation, which can take some time depending on your DNS provider.

By following these steps, you can configure a custom domain for your Knative Service, allowing it to be accessed using the desired URL format.

Example


The http://devops.default.svc.cluster.local URL is the Kubernetes internal DNS name for the devops Knative Service. The default is the namespace where the Knative Service is created, and svc is the Kubernetes service subdomain. cluster.local is the Kubernetes cluster domain.

The http://devops.default.example.com URL is an external DNS name for the devops Knative Service. The example.com is the domain name of the Kubernetes cluster.

The Kubernetes cluster administrator can configure the external DNS name for a Knative Service. The external DNS name is used by clients outside of the Kubernetes cluster to access the Knative Service.

In your case, the Kubernetes cluster administrator has not configured an external DNS name for the devops Knative Service. Therefore, the only way to access the Knative Service is to use the internal DNS name.

To access the devops Knative Service from outside of the Kubernetes cluster, you can use a service mesh, such as Istio, to create an external DNS name for the Knative Service.

Rajesh Kumar
Follow me
Latest posts by Rajesh Kumar (see all)
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x