Подтвердить что ты не робот

Как заставить SSL для Kubernetes Ingress на GKE

Есть ли способ принудительно обновить SSL для входящих соединений на входящем балансе нагрузки? Или если это невозможно, могу ли я отключить порт: 80? Я не нашел хорошие страницы документации, которые описывают такую ​​возможность в файле YAML. Большое спасибо заранее!

4b9b3361

Ответ 1

https://github.com/kubernetes/ingress-gce#frontend-https

Вы можете заблокировать HTTP с помощью аннотации kubernetes.io/ingress.allow-http: "false" или перенаправить HTTP на HTTPS, указав пользовательский бэкэнд. К сожалению, пока GCE не обрабатывает перенаправление или переписывание на уровне L7 непосредственно для вас. (см. https://github.com/kubernetes/ingress-gce#ingress-cannot-redirect-http-to-https)

Ответ 2

Аннотация изменилась:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test
  annotations:
    kubernetes.io/ingress.allow-http: "false"
spec:
...

Вот изменение аннотации PR: https://github.com/kubernetes/contrib/pull/1462/files

Ответ 3

Если вы не связаны с GCLB Ingress Controller, вы можете взглянуть на Nginx Ingress Controller. Этот контроллер отличается от встроенного несколькими способами. Прежде всего, вам нужно развернуть и управлять им самостоятельно. Но если вы захотите это сделать, вы получите возможность не зависеть от GCE LB (20 $/месяц) и получать поддержку IPv6/websockets.

документация гласит:

По умолчанию контроллер перенаправляет (301) на HTTPS, если для этого входа включен протокол TLS. Если вы хотите отключить это поведение в глобальном масштабе, вы можно использовать ssl-redirect: "false" в карте конфигурации NGINX.

Недавно выпущенная версия 0.9.0-beta.3 содержит дополнительную аннотацию для явного применения этого перенаправления:

Принудительное перенаправление на SSL с использованием аннотации ingress.kubernetes.io/force-ssl-redirect