Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

273
Visualizações
Reescritura por ruta en un controlador de entrada de proxy inverso Kubernetes NGINX

Estoy configurando un clúster de Kubernetes que contiene tres aplicaciones, cada una de las cuales se ejecuta dentro de su propio pod y servicio respectivos. Las interfaces web de estas aplicaciones deben ser accesibles en los puertos 80, 9000 y 15672. También hay una cantidad de API de backend que se ejecutan en sus propios pods y servicios, que deben ser accesibles en sus respectivos puertos. Se accede al clúster a través de un proxy inverso NGINX con la siguiente definición de ingreso:

 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: my-ingress namespace: my-namespace annotations: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/use-regex: "true" spec: tls: - hosts: - myapp.com secretName: my-certificat rules: - host: myapp.com http: paths: - backend: serviceName: my-service-1 servicePort: 8092 path: /api/someroute/(.*) - backend: serviceName: my-service-2 servicePort: 30003 path: /api/someotherroute/(.*) - backend: serviceName: my-other-frontend servicePort: 9000 path: /other/(.*) - backend: serviceName: my-yetanother-frontend servicePort: 15672 path: /yetanother/(.*) - backend: serviceName: my-main-frontend servicePort: 80 path: /(.*)

Esto funciona para los servicios api, pero no para las interfaces. Si tuviera que ingresar un URI como myapp.com/other/ en mi navegador, haría una llamada a my-other-frontend:9000/other/ , en lugar de my-other-frontend:9000/ . Por supuesto, esto se puede resolver con una anotación de reescritura como nginx.ingress.kubernetes.io/rewrite-target: /$1 , el problema es que esto también se aplicaría a los servicios api, y esos realmente necesitan la ruta completa en su llamada, por lo que una regla de reescritura general los rompería.

Entonces mi pregunta es: ¿es posible definir reglas de reescritura que solo se apliquen a rutas específicas?

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Aconsejaría dividir su ingreso en 2 según sus diferentes anotaciones.

1) El primero para api-services, llamado my-api-ingress

 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: my-api-ingress namespace: my-namespace annotations: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/use-regex: "true" spec: tls: - hosts: - myapp.com secretName: my-certificat rules: - host: myapp.com http: paths: - backend: serviceName: my-service-1 servicePort: 8092 path: /api/someroute/(.*) - backend: serviceName: my-service-2 servicePort: 30003 path: /api/someotherroute/(.*)

2) Y el segundo, digamos my-front-ingress con nginx.ingress.kubernetes.io/rewrite-target: /$1 anotación para el resto de sus interfaces. Según su pregunta, creo que no necesita las instrucciones detalladas para la creación de ingreso con anotación de reescritura.

EDIT1: Sí, es posible crear múltiples ingresos con el mismo host. Pero, por favor, preste atención a qué ingresa exactamente nginx. Consulte la respuesta de @LazerBass con sus investigaciones.

En resumen, según la tabla de comparación de ingresos de nginx ,

El controlador nginxinc no admite la combinación de reglas de ingreso con el mismo host. Puede usarlo solo con Ingresos combinables

La forma más fácil es usar kubernetes/ingress-nginx regulares ingrese la descripción de la imagen aquí

Espero que ayude.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda