Переписать путь для nginx Ingress - PullRequest
0 голосов
/ 04 июля 2018

Мне нужно указать Ingress на изображения, чтобы мой модуль получил полный URL-адрес. У меня есть следующий конфиг:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: solar-demo
  annotations:
    nginx.org/server-snippet: "proxy_ssl_verify off;"
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: shmukler.example.com
    http:
      paths:
      - path: /city/*
        backend:
          serviceName: solar-demo
          servicePort: 3000
      - path: /solar/*
        backend:
          serviceName: solar-demo
          servicePort: 3001

Если я буду придерживаться строки: nginx.ingress.kubernetes.io/rewrite-target: /, мои службы внутри модулей получают переписанные пути, поэтому /city/dublin становится /dublin.

Если я закомментирую строку nginx.ingress.kubernetes.io/rewrite-target: /, я просто получу 503 ошибок на стороне клиента и ничего в журналах. С перезаписью мои сервисы дают мне 404, потому что нет маршрута /dublin.

Что я делаю не так? Как я могу просто пройти по пути и заставить стручки отвечать?

$ kubectl describe svc solar-demo
Name:              solar-demo
Namespace:         default
Labels:            <none>
Annotations:       kubectl.kubernetes.io/last-applied-configuration= 
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"name":"solar-demo","namespace":"default"},"spec":{"ports":[{"name":"city","port":3000...
Selector:          app=testapp
Type:              ClusterIP
IP:                10.107.221.76
Port:              city  3000/TCP
TargetPort:        3000/TCP
Endpoints:         172.17.0.3:3000,172.17.0.8:3000
Port:              solar  3001/TCP
TargetPort:        3001/TCP
Endpoints:         172.17.0.3:3001,172.17.0.8:3001
Session Affinity:  None
Events:            <none>

Предложения

1 Ответ

0 голосов
/ 05 июля 2018

Здесь должен быть рабочий конфиг:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: solar-demo
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
  - host: shmukler.example.com
    http:
      paths:
      - path: /city
        backend:
          serviceName: solar-demo
          servicePort: 3000
      - path: /solar
        backend:
          serviceName: solar-demo
          servicePort: 3001

Что изменилось:

  • Удалено * из путей
  • Указанный вход в аннотации
  • Удалена перезапись аннотации

path на входе (при использовании nginx входа) похоже на указание блока nginx location. nginx не использует символ * в блоках местоположения.

...