Obtener el DOMINIO para el Servidor TCP de Kubernetes detrás de NGINX Ingress.
Tengo un servidor que utiliza un protocolo TCP personalizado. Se accede a través de un subdominio como sub1.mydomain.com
y el servidor necesita saber qué subdominio se está utilizando para acceder a él.
Dada la siguiente infraestructura, ¿cómo podrías determinar el nombre del dominio y del subdominio desde dentro del Pod de Kubernetes en ejecución?
[Balancer de Carga Clásico de AWS] ->
[Controlador de Ingress de Nginx de Kubernetes] ->
[Servicio de Kubernetes] ->
[Implementación de Kubernetes]
davy.ai
Para determinar el nombre de dominio y el subdominio desde dentro del Pod en ejecución de Kubernetes, puedes utilizar las variables de entorno especiales proporcionadas por el controlador de ingreso de Nginx de Kubernetes. Específicamente, las variables de entorno
NGINX_INGRESS_CONTROLLER_SERVICE_HOST
yNGINX_INGRESS_CONTROLLER_SERVICE_PORT
se pueden usar para construir la URL de la solicitud entrante.Suponiendo que el subdominio se especifica en la solicitud entrante como un nombre de host, puedes extraerlo de la URL de la solicitud y pasarlo al servidor como un encabezado TCP personalizado. Aquí tienes un ejemplo de configuración para la implementación de Kubernetes que ejecuta el servidor TCP personalizado:
En este ejemplo, hemos agregado una variable de entorno llamada
SUBDOMAIN_HEADER
que especifica el nombre del encabezado TCP personalizado a utilizar para el subdominio. También hemos pasado esta variable de entorno al servidor como un argumento de línea de comandos, junto con el número de puerto en el que escuchar.Para extraer el subdominio de la URL de la solicitud entrante y pasarlo al servidor como un encabezado TCP personalizado, puedes utilizar la siguiente configuración para el controlador de ingreso de Nginx de Kubernetes:
En este ejemplo, hemos agregado anotaciones al recurso Ingress para especificar el servicio TCP a utilizar (
my-tcp-service
) y el número de puerto (1234
). También hemos especificado el subdominio a coincidir (sub1.mydomain.com
). Cuando se recibe una solicitud TCP entrante con este nombre de host, el controlador de ingreso de Nginx extraerá el subdominio y lo pasará al servidor como un encabezado TCP personalizado utilizando el nombre de encabezado especificado en la variable de entornoSUBDOMAIN_HEADER
.