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

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

Ответы

Ответ 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