Am o singură aplicație care rulează în mai multe clustere K8s; Să presupunem că există un serviciu frontend și două backend.
Folosesc proxy NGINX pentru solicitările de la serviciile frontend către serviciile de backend. Ediția obișnuită NGINX, nu NGINX+.
Aici este nginx.conf:
Server {
....
setați $back1 „<k8s hostname for the backend1 service>”;
setați $back2 „<k8s hostname for the backend2 service>”;
locație /înapoi1 {
rescrie ^/back1/(.*)$ /$1 pauză;
proxy_pass http://$back1;
}
<și același lucru pentru serviciul backend 2>
}
Deci, practic, ceea ce se întâmplă este că în aplicația mea frontend, am setat adresa serviciului backend la localhost/back1 și localhost/back2, solicitările lovesc NGINX, care le elimină înapoi1 și înapoi2 prefixe și apelează orice punct final pe care îl specific după în serviciile backend reale din K8s.
Deoarece am mai multe clustere K8s, numele de gazdă ale serviciilor de backend diferă și trebuie să țin cont de asta în conf. NGINX.
Întrebarea este:
Există o modalitate ca NGINX să facă diferența între clusterele mele K8s?
Poate pot trece o variabilă de mediu containerului care rulează serviciul meu de front-end și pot face un dacă declarație în nginx.conf. Ceva asemănător cu:
Server {
dacă (${env} = „cluster1”) {
set $back1 = "<nume gazdă cluster1>"
}
dacă (${env} = „cluster2”) {
set $back1 = "<nume gazdă cluster2>"
}
}
Sau dacă pot executa o comandă shell în conf nginx pentru a obține numele de gazdă și a scrie blocuri similare if.
Aș aprecia orice ajutor în această chestiune!