fix(admin-ui): envsubst FQDN с per-cluster DNS suffix
nginx resolver не использует search list, поэтому в proxy_pass нужен
FQDN. Cluster domain различается:
- cluster.265 (staging): 265.local
- srvaltum01 (prod): altum.local
- default kubespray: cluster.local
Решение: nginx.conf — template с ${ORDINIS_NAMESPACE} и
${CLUSTER_DOMAIN}, обрабатывается официальным nginx entrypoint
(/docker-entrypoint.d/20-envsubst-on-templates.sh). Helm подставляет
ENV из fieldRef + values per-env.
This commit is contained in:
@@ -2,9 +2,10 @@ server {
|
||||
listen 80;
|
||||
server_name _;
|
||||
|
||||
# Resolver для динамического k8s service DNS (proxy_pass с переменной).
|
||||
# 169.254.25.10 — nodelocal-dns на kubespray-кластерах (cluster.265 и .264).
|
||||
resolver 169.254.25.10 1.1.1.1 valid=30s ipv6=off;
|
||||
# Resolver — coredns (10.233.0.3 на kubespray-кластерах). nodelocal-dns
|
||||
# (169.254.25.10) при первом cold lookup отвечает SERVFAIL, поэтому
|
||||
# обращаемся напрямую к ClusterDNS service.
|
||||
resolver ${RESOLVER_IP} valid=30s ipv6=off;
|
||||
|
||||
# Real client IP behind ingress-nginx.
|
||||
set_real_ip_from 0.0.0.0/0;
|
||||
@@ -15,10 +16,12 @@ server {
|
||||
index index.html;
|
||||
|
||||
# GET → read-api, мутирующие → writer.
|
||||
# FQDN в proxy_pass нужен потому что nginx resolver не использует search list.
|
||||
# Namespace и cluster-domain инжектятся через ENV (см. admin-ui Deployment).
|
||||
location /api/v1/ {
|
||||
set $backend "ordinis-read-api";
|
||||
set $backend "ordinis-read-api.${ORDINIS_NAMESPACE}.svc.${CLUSTER_DOMAIN}";
|
||||
if ($request_method ~ ^(POST|PUT|PATCH|DELETE)$) {
|
||||
set $backend "ordinis-app";
|
||||
set $backend "ordinis-app.${ORDINIS_NAMESPACE}.svc.${CLUSTER_DOMAIN}";
|
||||
}
|
||||
proxy_pass http://$backend;
|
||||
proxy_http_version 1.1;
|
||||
|
||||
Reference in New Issue
Block a user