Kubernetes HTTPS Ingress в Google Container Engine
Я хочу предоставить службу HTTP, работающую в Google Container Engine через HTTPS, только балансировщик нагрузки.
Как определить во входном объекте, что я хочу HTTPS
только балансировщик нагрузки вместо HTTP по умолчанию?
Или есть способ навсегда уронить HTTP
протокол от созданного балансировщика нагрузки? Когда я добавлю HTTPS
протокол, а затем сбросить HTTP
протокол, HTTP
через несколько минут воссоздана платформой.
Ingress:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: myapp-ingress
spec:
backend:
serviceName: myapp-service
servicePort: 8080
2 ответа
Чтобы иметь доступ только к службе HTTP, вы можете заблокировать трафик на порту 80, как упомянуто по этой ссылке:
Вы можете заблокировать трафик на:80 через аннотацию. Возможно, вы захотите сделать это, если все ваши клиенты будут использовать балансировщик нагрузки только через https, и вы не хотите тратить лишнее правило пересылки GCE, например:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test
annotations:
kubernetes.io/ingress.allow-http: "false"
spec:
tls:
# This assumes tls-secret exists.
# To generate it run the make in this directory.
- secretName: tls-secret
backend:
serviceName: echoheaders-https
servicePort: 80
Вы также можете использовать
Перенаправления с HTTP на HTTPS настраиваются с помощью поля redirectToHttps в пользовательском ресурсе FrontendConfig. Перенаправления включены для всего ресурса Ingress, поэтому для всех служб, на которые ссылается Ingress, будет включено перенаправление HTTPS.
Следующий манифест FrontendConfig включает перенаправления с HTTP на HTTPS. Установите для поля spec.redirectToHttps.enabled значение true, чтобы включить перенаправления HTTPS. Поле spec.responseCodeName является необязательным. Если он опущен, используется перенаправление 301 Moved Permanently.
Например
apiVersion: networking.gke.io/v1beta1
kind: FrontendConfig
metadata:
name: your-frontend-config-name
spec:
redirectToHttps:
enabled: true
responseCodeName: MOVED_PERMANENTLY_DEFAULT
MOVED_PERMANENTLY_DEFAULT
есть в наличииRESPONSE_CODE
значение поля, чтобы вернуть301
код ответа перенаправления (по умолчанию, еслиresponseCodeName
не указано).
Вы можете найти больше вариантов здесь: перенаправления с HTTP на HTTPS
Затем вы должны связать свойFrontendConfig
кIngress
, так:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: your-ingress-name
annotations:
networking.gke.io/v1beta1.FrontendConfig: your-frontend-config-name
spec:
tls:
...