Использование Google IAM для доступа к сервису GKE - PullRequest
0 голосов
/ 02 сентября 2018

Я размещаю приложение в GKE и хочу, чтобы пользователи из моей организации могли получить доступ к этому приложению через Интернет. Я хотел бы, чтобы они могли войти в систему, используя свои учетные данные IAM для учетной записи Google.

Есть ли способ настроить службу, отображающую конечную точку веб-кластера, так, чтобы для доступа к этой службе пользователю просто необходимо было войти в систему с помощью своей учетной записи Google?

Например, при тестировании службы я могу легко выполнить предварительный веб-просмотр в облачной оболочке, а затем получить доступ к веб-приложению в своем браузере.

Есть ли способ настроить это так, чтобы любой пользователь, авторизованный в моей организации, имел доступ к веб-интерфейсу моего приложения?

(Обратите внимание, я задал такой же вопрос на DevOps , но я чувствую, что этот сайт еще не настолько активен, как должно быть, поэтому я спрашиваю и здесь)

1 Ответ

0 голосов
/ 04 сентября 2018

Хорошо, мне удалось заставить его работать идеально. Но потребовалось несколько шагов. Я включаю манифест, необходимый для настройки IAP с использованием входа . Это требует нескольких вещей, которые я перечислил в манифесте ниже. Надеюсь, это может помочь другим, так как я не смог найти ни одного источника, который бы все это соединил. По сути, все, что вам нужно сделать, это запустить kubectl apply -f secure-ingress.yaml, чтобы все заработало (если у вас есть все зависимости), а затем вам просто нужно настроить IAP , как вам нравится.


secure-ingress.yaml

# Configure IAP security using ingress automatically
# requirements: kubernetes version at least 1.10.5-gke.3
# requirements: service must respond with 200 at / endpoint (the healthcheck)
# dependencies: need certificate secret my-secret-cert
# dependencies: need oath-client secret my-secret-oath (with my.domain.com configured)
# dependencies: need external IP address my-external-ip
# dependencies: need domain my.domain.com to point to my-external-ip IP
# dependencies: need an app (deployment/statefulset) my-app
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-secure-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: "gce"
    kubernetes.io/ingress.allow-http: "false"
    kubernetes.io/ingress.global-static-ip-name: my-external-ip
spec:
  tls:
  - secretName: my-secret-cert
  backend:
    serviceName: my-service-be-web
    servicePort: 1234
---
kind: Service
apiVersion: v1
metadata:
  name: my-service-be-web
  namespace: default
  annotations:
    beta.cloud.google.com/backend-config:
      '{"default": "my-service-be-conf"}'
spec:
  type: NodePort
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 1234
      targetPort: 1234
      name: my-port-web
---
apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
  name: my-service-be-conf
  namespace: default
spec:
  iap:
    enabled: true
    oauthclientCredentials:
      secretName: my-secret-oath
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...