GKE: прокси-сервер с идентификационными данными> Балансировщик нагрузки L7> Пользовательские правила хоста и пути> Код ошибки 11 - PullRequest
0 голосов
/ 28 мая 2019

Я использую GKE Идентификационный прокси-сервер > Балансировщик нагрузки L7 > Пользовательские правила хоста и пути .Он отлично работает для корневого пути.Но это не работает для пользовательских путей.

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: basic-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: "my-static-ip"
spec:
  rules:
  - host: my.custom.org
    http:
      paths:
      - path: /v1/*
        backend:
          serviceName: webv1
          servicePort: 8080
      - path: /v3/*
        backend:
          serviceName: webv3
          servicePort: 8080
      - path: /nginx/*
        backend:
          serviceName: nginx
          servicePort: 80
      - path: /*
        backend:
          serviceName: nginx
          servicePort: 80

Путь / и /nginx/ работает нормально./v2/ и /v3/ бросает There was a problem with your request. Error code 11.

Если я отключаю IAP, все работает нормально.

Среда :

  • Версия Kubernetes (используйте kubectl version): 1.12.7-gke.17

  • Конфигурация поставщика облака или аппаратного обеспечения: GKE

Настройка балансировки нагрузки HTTP с помощью Ingress @ https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer

Включение Cloud IAP для GKE @ https://cloud.google.com/iap/docs/enabling-kubernetes-howto

1 Ответ

0 голосов
/ 28 мая 2019

Этот код ошибки 11 связан с неправильной настройкой идентификатора клиента OAuth 1 .

Я вижу, что вы, отказавший, используете другой сервисный порт. Если вы обслуживаете следующие 2 URL-адреса из двух разных бэкэндов, у обоих может быть включен IAP, но настроены разные клиентские идентификаторы.

По состоянию на GCP не поддерживаются разные clientId для разных путей, и в настоящее время IAP использует один clientId для разных сервисов. Сейчас, если вы можете проверить clientId и изменить его на один, если они отличаются, это будет работать.

Рекомендованным подходом будет настройка прокси NGINX. У ingress + IAP есть только один сервис вместо двух, и он будет работать как шарм.


...