GOOGLE ADS

martes, 3 de mayo de 2022

proxy inverso entre un clúster de kubernetes y otro

Tengo 2 clústeres de kubernetes

clúster 2: nginx de loadblancer expuesto con IP regionalIP_PRIVATE

service 1 - website `/website`
service 2 - blog `blog`
service 3 - api `api`

clúster 1: gce de loadblancer expuesto con IP globalIP_PUBLIC

Quiero implementar este comportamiento.

IP_PUBLIC/api -> service 2 response
IP_PUBLIC/* -> cdn -> service 1 response

Para implementar esto, he creado una capa de servicio cdn en el clúster 1 como se define aquí https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#expandable-1

Ahora mi dominio se asignará a IP_PUBLIC, por lo tanto, cualquier solicitud llegará primero al clúster 1, luego debe pasar la solicitud al clúster 2 y obtener la respuesta.

Nota: tengo que crear 2 clústeres porque

  • No quiero cambiar nada en el clúster.

  • No puedo tener IP global con ingreso nginx

  • No puedo tener 2 balanceadores de carga (tanto gce como nginx) en un clúster

  • Quiero pasar la solicitud exacta (dominio, encabezados, etc.) del clúster 1 al clúster 2 como si la solicitud llegara directamente al clúster 2.

    ¿Cuál es la forma correcta de hacer esto? En caso de que haya alguna solución alternativa para lograr lo anterior con cambios mínimos, sugiérala.


    Solución del problema

    No estoy seguro de qué ingreso está ejecutando en segundo plano, sin embargo, puede cambiar la configuración usando la anotación.

    Puede habilitar el paso de los encabezados en Nginx usando esta anotación para que reenvíe todos los encabezados personalizados y los detalles del dominio.

    enable-underscores-in-headers: true

    con

    nginx.ingress.kubernetes.io/configuration-snippet: |
    proxy_set_header My-Custom-Header $http_my_custom_header;

    Pero no estoy seguro de una parte cuando dices:

    Ahora mi dominio se asignará a IP_PUBLIC, por lo tanto, cualquier solicitud llegará primero al clúster 1, luego debe pasar la solicitud al clúster 2 y obtener la respuesta.

    Una vez que su solicitud llegue al tráfico del dominio, tal vez fluya como

    Request > domain > cluster 1 > cluster 1's service > IP or Domain of cluster 2 > cluster 2's ingress controller > cluster 2's service

    en este caso, debe pasar los encabezados para solicitar y habilitar la configuración de ingreso en el controlador de cluster2 para que reenvíe los detalles al servicio de back-end que se ejecuta en cluster2.

    Tampoco estoy seguro de cómo su tráfico de salida sale del clúster utilizando la puerta de enlace NAT o directamente desde el nodo, considerando que tiene un clúster público, su servicio llamará directamente al dominio de cluster2 en ese caso, debe agregar los encabezados con la solicitud.

    Simplemente configure la anotación adecuada para ingresar y sus servicios de back-end obtendrán los encabezados con los detalles del dominio.

    No hay comentarios.:

    Publicar un comentario

    Flutter: error de rango al acceder a la respuesta JSON

    Estoy accediendo a una respuesta JSON con la siguiente estructura. { "fullName": "FirstName LastName", "listings...