How to direct different URLs to different services in Kubernetes
Kubernetes has the notion of an Ingress Controller, which can be used to set different paths to different Kubernetes services.
For example, from the documentation page at https://kubernetes.io/docs/concepts/services-networking/ingress/, you can define:
- path: /testpath
it will send a request to
<ip-address>/testpath to the test service.
Now, if you are doing this configuration in IBM Cloud Private (ICP), you need to change slightly the configuration above. Instead of specifying
nginx.ingress.kubernetes.io/rewrite-target: /, you need to specify:
ingress.kubernetes.io/rewrite-target: / . (Thanks, Chechu!)
However, Kubernetes Ingress has some other uses: fanout (distributing requests across multiple services) and name based virtual hosting.
In this blog, I want to explore the name based virtual hosting.
Sending different hostnames to different services
Let’s say you have the following applications and services deploying to your environment:
- Application: app1, Service: svc1
- Application: app2, Service: svc2
And let’s say you want to expose app1 as
app1.myicp.com and app2 as (surprise!)
In this case, you can define the following Ingress rule in a file called
- host: app1.myicp.com
- host: app2.myicp.com
You can define this rule by running the following command:
kubectl apply -f applications.yaml
With this file, you can configure your DNS to send the requests to the node IP (proxy node, in the case of IBM Cloud Private). As long as the request comes the Host header (https://tools.ietf.org/html/rfc7230#section-5.4) configured, Kubernetes Ingress will route the request to the proper application and service.
Now, if you open your browse to
app2.myicp.com, you will the corresponding application. Pretty cool!
In this blog, I showed how to use name based virtual hosting Ingress to dispatch requests to different applications and services.
Bring your plan to the IBM Garage.
Are you ready to learn more about working with the IBM Garage? We’re here to help. Contact us today to schedule time to speak with a Garage expert about your next big idea. Learn about our IBM Garage Method, the design, development and startup communities we work in, and the deep expertise and capabilities we bring to the table.
Schedule a no-charge visit with the IBM Garage.