Как направить запрос пользователя в указанный контейнер c docker на основе идентификатора пользователя через IAP в GCP Kubernetes Engine - PullRequest
2 голосов
/ 07 мая 2020

Я пытаюсь придумать прототип hello-world для GCP Kubernetes Engine с использованием IAP для выделения контейнера для определенного c пользователя и маршрутизации всех запросов от этого пользователя только к этому контейнеру. Он предназначен для защиты конфиденциальной информации пользователя в полностью изолированной среде.

Я выполнил «Включение IAP для GKE», как предлагал @wilrof, и застрял при добавлении блока iap в BackendConfig следующим образом;

apiVersion: cloud.google.com/v1  
kind: BackendConfig  
metadata:  
  name: config-default
  namespace: my-namespace  
spec:
  iap:
    enabled: true
    oauthclientCredentials:
      secretName: my-secret

Когда я запускаю 'kubectl apply -f backendconfig.yaml', он жалуется, что нет совпадений для вида «BackendConfig» в версии «cloud.google.com/v1». Я изменил первую строку на cloud.google.com/v1beta1, затем говорится, что пространства имен «my-namespace» не найдены. Не знаю, где go отсюда.

1 Ответ

0 голосов
/ 14 мая 2020

Как упоминалось в комментариях:

Первый указатель - Включение IAP для GKE , вы включаете IAP и используете Backendconfig , чтобы установить для входа значение направьте его в службу / под.


Затем вы обновили свой вопрос, вот решение проблемы для BackendConfig:

Примечание : GKE версии 1.16.8-gke.3 и выше поддерживают версию Cloud.google.com/v1 CRD API.

Все более ранние версии GKE должны использовать cloud.google.com/v1beta1.

  • Поскольку вы пробовали работать с v1 и получили no matches for kind "BackendConfig" in version "cloud.google.com/v1", я предполагаю, что вы используете версию старше 1.16.8-gke.3.

  • Что касается ошибки namespaces "my-namespace" not found, убедитесь, что ваше рабочее пространство имен называется "my-namespace", помните, что пространство имен по умолчанию для кубернетов - default.


Воспроизведение на v1.15.11 -gke.12:

  • Сначала я пытаюсь развернуть как v1, как в вашем примере backendconfig.yaml:
$ kubectl apply -f backendconfig.yaml 
error: unable to recognize "backendconfig.yaml": no matches for kind "BackendConfig" in version "cloud.google.com/v1"
  • изменено на v1beta1 а nd применен:
$ cat backendconfig.yaml 
apiVersion: cloud.google.com/v1beta1
kind: BackendConfig  
metadata:  
  name: config-default
  namespace: my-namespace  
spec:
  iap:
    enabled: true
    oauthclientCredentials:
      secretName: my-secret

$ kubectl apply -f backendconfig.yaml 
Error from server (NotFound): error when creating "backendconfig.yaml": namespaces "my-namespace" not found
  • Проверьте текущие настроенные пространства имен:
owilliam@owilliam:~/GKE/backendconfig$ kubectl get namespaces
NAME              STATUS   AGE
default           Active   5m35s
kube-node-lease   Active   5m37s
kube-public       Active   5m37s
kube-system       Active   5m37s
  • Я создам пространство имен my-namespace и попробую чтобы подать заявку еще раз:
$ kubectl create namespace my-namespace
namespace/my-namespace created

$ kubectl apply -f backendconfig.yaml 
backendconfig.cloud.google.com/config-default created

Если у вас все еще есть проблема, добавьте комментарий, и мы будем копать дальше.

...