Kubernetes ingress-nginx - Как я могу отключить прослушивание по https, если не настроен TLS? - PullRequest
4 голосов
/ 25 мая 2019

Я использую kubernetes ingress-nginx , и это моя спецификация Ingress. http://example.com работает нормально, как и ожидалось. Но когда я перехожу к https://example.com, он все равно работает, но указывает на бэкэнд по умолчанию с сертификатом Fake Ingress Controller. Как я могу отключить это поведение? Я хочу отключить прослушивание https на данном входе, поскольку TLS не настроен.

kind: Ingress
apiVersion: extensions/v1beta1
metadata:
  name: http-ingress
  annotations:
    kubernetes.io/ingress.class: "nginx"
spec:
  rules:
    - host: example.com
      http:
        paths:
          - backend:
              serviceName: my-deployment
              servicePort: 80

Я пробовал эту nginx.ingress.kubernetes.io/ssl-redirect: "false" аннотацию. Однако это не имеет никакого эффекта.

Ответы [ 2 ]

3 голосов
/ 25 мая 2019

Мне не известно значение ingress-nginx configmap или примечание ingress для простого отключения TLS.

Вы можете удалить порт 443 из определения службы входных контроллеров.

Удалить запись https из массива spec.ports

apiVersion: v1
kind: Service
metadata:
  name: mingress-nginx-ingress-controller
spec:
  ports:
  - name: https
    nodePort: NNNNN
    port: 443
    protocol: TCP
    targetPort: https

nginx все еще будет прослушивать порт TLS, но ни один клиент вне кластера не сможет подключиться к нему.

2 голосов
/ 25 мая 2019

Перенаправление не связано с вашей проблемой.

ingress-контроллер прослушивает оба порта, 80 и 443. Когда вы конфигурируете вход только с 80 портом, если вы достигнете порта 443, вы будете перенаправлены на бэкэнд по умолчанию, что является ожидаемым поведением.

Решением является добавление другого nginx-контроллера, который будет прослушивать только 80 портов. И тогда вы можете настроить свои входы с kubernetes.io/ingress.class: myingress. При создании нового nginx-контроллера измените команду --ingress-class=myingress набора демонов. Затем он будет обрабатывать только вход, аннотированный этим классом.

Если вы используете helm для его развертывания, просто переопределите значение controller.ingressClass.

...