GKE перенаправляет на вход Https — не распознается FrontendConfig

#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" спасибо! Я пытался понять, почему у меня это не работает.