Обработка нескольких дополнительных путей через Nginx Ingress - PullRequest
0 голосов
/ 06 мая 2020

Я изо всех сил пытаюсь заставить контроллер Ingress правильно обрабатывать суб-пути. Моя архитектура - два сервиса сидели на разных путях одного домена. Каждая служба имеет свою собственную конфигурацию входа:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress1
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/rewrite-target: /
    cert-manager.io/cluster-issuer: "letsencrypt-production-issuer"
    kubernetes.io/ingress.allow-http: "false"    
spec:
  tls:
  - hosts:
    - api.mydomain.com
    secretName: my-secret
  rules:
  - host: api.mydomain.com
    http:
      paths:
      - path: /path1
        backend:
          serviceName: service1
          servicePort: 80

и

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress2
  annotations:
    kubernetes.io/ingress.class: "nginx"
    cert-manager.io/cluster-issuer: "letsencrypt-production-issuer"
    kubernetes.io/ingress.allow-http: "false"
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  tls:
  - hosts:
    - api.mydomain.com
    secretName: my-secret
  rules:
  - host: api.mydomain.com
    http:
      paths:
      - path: /path2
        backend:
          serviceName: service2
          servicePort: 80

При указанной выше конфигурации 1-й вход работает, и я могу подключиться к своим конечным точкам на api.mydomain.com/ path1, в то же время api.mydomain.com/path2 возвращает http 400. Что я делаю не так?

1 Ответ

1 голос
/ 12 мая 2020

Таким образом, реальная проблема заключалась в том, что ingress не мог найти конечную точку. Мои серверные службы являются безопасными службами gRP C и поэтому ожидаю вызова через https или grpcs. Таким образом, установка входящего трафика для защищенных серверных программ решила проблему:

nginx.ingress.kubernetes.io/secure-backends: "true"

Для более новых версий k8s вы должны использовать другие атрибуты.

...