Не добавляйте http: // перед IP-адресом подмножества конечной точки

У меня есть Kubernetes Ingress, указывающий на безголовый сервис, указывающий, наконец, на объект Endpoints, который маршрутизируется на внешний IP-адрес. Ниже приведена конфигурация конечной точки.

apiVersion: v1
kind: Endpoints
metadata:
  name: my-chart
subsets:
  - addresses:
      - ip: **.**.**.**
    ports:
      - port: 443

Однако восходящее соединение не выполняется с помощью «сброса соединения одноранговым узлом», и при просмотре журналов я вижу следующую ошибку в Kubernetes nginx-ingress-controller:

2020/01/15 14:39:50 [error] 24546#24546: *240425068 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: *****, server: dev.somehost.com, request: "GET / HTTP/1.1", upstream: "http://**.**.**.**:443/", host: "dev.somehost.com"

Моя теория заключается в том, что это вызывает комбинация http: // и порта 443 (проверено с помощью команд cURL). Как мне либо 1) указать другой протокол для объекта конечной точки, либо 2) просто предотвратить добавление http: //

Дополнительные примечания: 1) SSL включен на целевом IP-адресе, и если я скручиваю его, я могу установить безопасное соединение 2) сквозная передача SSL здесь не работает. Входящие и исходящие запросы будут использовать два разных SSL-соединения с двумя разными сертификатами. 3) Я хочу, чтобы хост Ingress был SNI (и похоже, что это может быть по умолчанию)

Изменить: версия контроллера Ingress: 0.21.0-rancher3


person pasquers    schedule 15.01.2020    source источник
comment
какой у вас входной контроллер?   -  person Arghya Sadhu    schedule 15.01.2020
comment
@ArghyaSadhu добавил версию   -  person pasquers    schedule 15.01.2020


Ответы (1)


Мы смогли решить эту проблему, добавив в метаданные нашего Ingress следующее:

  annotations:
    nginx.ingress.kubernetes.io/backend-protocol: HTTPS
    nginx.ingress.kubernetes.io/configuration-snippet: |-
      proxy_ssl_server_name on;
      proxy_ssl_name $host;

Первая команда включает HTTPS для внутреннего протокола, а вторая команда включает SNI.

person pasquers    schedule 15.01.2020