#https #google-kubernetes-engine #gke-networking
# #https #google-kubernetes-engine #gke-сеть
Вопрос:
У меня есть вход GKE как с Http, так и с Https. Я хочу перенаправить трафик с порта 80 на порт 443. Я нашел это: https://github.com/kubernetes/ingress-gce/issues/1075 что привело к этому: https://cloud.google.com/kubernetes-engine/docs/how-to/ingress-features#https_redirect .
Предлагаемое решение добавляет FrontendConfig с флагом RedirectToHttps, который использует некоторые функции балансировки нагрузки. Тем не менее, когда я пытаюсь добавить FrontendEndConfig, я получаю следующую ошибку:
error: unable to recognize "ssl.yaml": no matches for kind "FrontendConfig" in version "networking.gke.io/v1beta1"
Я также пробовал ‘networking.gke.io/v1 ‘ и ‘v1beta2’.
Последняя версия GKE, доступная в моей зоне, — 1.17.13-gke.2001. Я недавно запустил кластер, поэтому, хотя я не знаю, как проверить версию GKE, я считаю, что он работает на последней версии.
У кого-нибудь есть подсказка, почему мой kubectl не распознает этот вид?
Входящий yaml:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: basic-ingress
annotations:
FrontendConfig: my-frontend-config
kubernetes.io/ingress.global-static-ip-name: 'web-static-ip'
networking.gke.io/managed-certificates: mycertificate
# kubernetes.io/ingress.allow-http: "false"
spec:
rules:
- http:
paths:
- path: /*
backend:
serviceName: frontend
servicePort: 80
- path: /api/*
backend:
serviceName: backend
servicePort: 80
Перенаправление yaml:
apiVersion: networking.gke.io/v1beta1
kind: FrontendConfig
metadata:
name: my-frontend-config
spec:
redirectToHttps:
enabled: true
Комментарии:
1. Я протестировал здесь в GKE 1.17.13-gke.2600, и он работает. Проверьте версию вашего сервера с помощью
kubectl version
поискаServer version
. Кроме того, какой регион вы используете?2. Спасибо за проверку. Оказывается, я действительно работаю на GKE 1.16.13-gke.401.
3. Обновите версию вашего кластера до 1.17.13 , чтобы использовать этот пользовательский CRD для конфигурации бэкэнда и интерфейса. Дайте мне знать, сработало ли это у вас после обновления.
4. Просто обновил сервер, и я действительно смог создать конфигурацию интерфейса.
5. Однако перенаправление, похоже, не работает. Я добавил конфигурацию интерфейса также к ingress, так что это не проблема. Есть ли шанс, что вы знаете, что является причиной этого?
Ответ №1:
Спасибо, что указали мне правильное направление!
Мне пришлось обновить кластер, как указал MrKoopaKiller, а также изменить аннотацию:
FrontendConfig: my-frontend-config
Для:
networking.gke.io/v1beta1.FrontendConfig: "my-frontend-config"
и это сработало!
также: убедитесь, что у вас есть:
kubernetes.io/ingress.allow-http: "true"
Комментарии:
1. боже мой,
kubernetes.io/ingress.allow-http: "true"
спасибо! Я пытался понять, почему у меня это не работает.