Kubernetes Nginx Ingress может подключаться к https pods? - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть три модуля с HTTPS-серверами внутри. Раньше я получал к ним доступ через сервисы NodePort. Теперь я развернул Nginx Ingress, чтобы все они были в одном IP. Я заметил, что Nginx Ingress не может соединиться с HTTPS-сервером в модуле, но он отлично соединяется, если я изменяю его на HTTP.

Как я могу подключить Ingress к HTTPS-серверам в модулях? ?

Я попытался настроить секрет tls и добавить его в Ingress:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: k8s-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/proxy-ssl-secret: cert 

spec:
  rules:
  - http:
      paths:
        - path: /api-rest
          backend:
            serviceName: api-rest
            servicePort: 8080
        - path: /auth
          backend:
            serviceName: auth-entry
            servicePort: 8080

Это не сработало. У меня все еще есть служба 503, временно недоступная

Я прочитал о SSL Passthrough, но не могу заставить его работать.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: k8s-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
    nginx.ingress.kubernetes.io/ssl-passthrough: "true"

spec:
  rules:
  - http:
      paths:
        - path: /api-rest
          backend:
            serviceName: api-rest
            servicePort: 8080
        - path: /auth
          backend:
            serviceName: auth-entry
            servicePort: 8080

Все тот же 503.

1 Ответ

4 голосов
/ 23 апреля 2020

Из документов здесь необходимо добавить эту аннотацию

nginx.ingress.kubernetes.io/backend-protocol: "HTTPS"

Использование аннотаций протокола бэкэнда позволяет указать, как NGINX должен взаимодействовать с бэкэнд-службой. (Заменяет защищенные бэкэнды в более старых версиях) Допустимые значения: HTTP, HTTPS, GRP C, GRPCS и AJP

По умолчанию NGINX использует HTTP

...