How to configure localized URLs in kubernetes nginx ingress controller API object

5/12/2019

I have a cluster in Azure AKS with 1 node.

On that cluster I have two back-end services.

Each back-end service is a web app.

I have a domain mydomain.com.

Each app will need to be configured with its own path rule in the ingress object.

Web app 1s (let's call this one the homepage app) target URL needs to be either of the following:

US version of the site: mydomain.com
Swedish version of the site: mydomain.com/se/sv-sv/hem 
Any other location/language version of the site: mydomain.com/xx/yy-xx/abcdefgh

Web app 2s (let's call this one the whitepony app) target URL needs to be either of the following:

US version of the site: mydomain.com/us/en-us/whitepony
Swedish version of the site: mydomain.com/se/sv-sv/whitepony
Any other location/language version of the site: mydomain.com/xx/yy-xx/whitepony 

(The whitepony apps target path segment is called whitepony regardless of location/language)

Now to my question.

How can I configure these rules in an ingress API object?

Can I use prefixes in the path rules?

Or do I need to use regular expressions?

And what about the special case of the US version of the homepage app, where I'm not using any prefixes/extra URL segments?

Can I use conditions in the ingress object?

Or how would you configure the ingress resource object to meet all the above requirements?

Note that I know and have successfully configured multiple back-end services using path rules in an ingress object.

But without prefixes or extra URL segments.

-- PussInBoots
azure-aks
kubernetes
kubernetes-ingress
nginx-ingress

1 Answer

6/27/2019

I won't give you fully working example on how to specify rules in ingress resource to meet your requirements, I would rather like to share with you some hints:

  1. Yes, you will need regular expressions to achieve it, and here is the example of doing it directly with NGINX directives based on example of wordpress multi-language site.

  2. You don't need to define these re-write rules with annotations, you can use for that pure NGINX config style, by supplying appropriate inline NGINX config file inside ConfigMap, here is the example on how to achieve this.

I hope this will help you

-- Nepomucen
Source: StackOverflow