Есть ли способ принудительно обновить SSL для входящих соединений на входящем балансе нагрузки? Или если это невозможно, могу ли я отключить порт: 80? Я не нашел хорошие страницы документации, которые описывают такую возможность в файле YAML. Большое спасибо заранее!
Как заставить SSL для Kubernetes Ingress на GKE
Ответ 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