GKE: прокси-сервер с идентификационными данными> Балансировщик нагрузки L7> Пользовательские правила хоста и пути> Код ошибки 11
Я использую прокси-сервер GKE Identity > Балансировщик нагрузки 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-гке.17Облачный провайдер или аппаратная конфигурация: GKE
Настройка балансировки нагрузки HTTP с помощью Ingress @ https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer
Включение облачного IAP для GKE @ https://cloud.google.com/iap/docs/enabling-kubernetes-howto
1 ответ
Этот код ошибки 11 связан с неправильной настройкой идентификатора клиента OAuth 1.
Я вижу, что вы, отказавший, используете другой сервисный порт. Если вы обслуживаете следующие 2 URL-адреса из двух разных бэкэндов, у обоих может быть включен IAP, но настроены разные клиентские идентификаторы.
Что касается GCP, он не поддерживает разные clientId для разных путей, и в настоящее время IAP пытается использовать один clientId для разных сервисов. Сейчас, если вы можете проверить clientId и изменить его на один, если они отличаются, это будет работать.
Рекомендуемым подходом будет настройка прокси NGINX. У ingress + IAP есть только один сервис вместо двух, и он будет работать как шарм.