【问题标题】:How to Enable IAP with GKE如何使用 GKE 启用 IAP
【发布时间】:2019-10-17 20:23:38
【问题描述】:

我创建了一个带有 IAP 身份验证的基本 react/express 应用程序并部署到谷歌应用程序引擎,一切都按预期工作。现在我正在从应用程序引擎部署转移到 kubernetes,除了在 kubernetes 上使用 IAP 进行用户身份验证之外,所有的东西都可以正常工作。如何使用 kubernetes 启用 IAP 用户身份验证?

我是否必须创建一个 kubernetes 密码才能使用户身份验证起作用? https://cloud.google.com/iap/docs/enabling-kubernetes-howto

我的 server.js 中的身份验证代码 https://cloud.google.com/nodejs/getting-started/authenticate-users#cloud-identity-aware-proxy

【问题讨论】:

    标签: express kubernetes google-kubernetes-engine


    【解决方案1】:

    为了使 Cloud IAP 能够与 Kubernetes 一起使用,您需要一组由一个或多个 GKE 实例组成,由 HTTPS 负载平衡器提供服务。当您在 GKE 集群中创建 Ingress object 时,应该会自动创建负载均衡器。

    在 GKE 中启用 Cloud IAP 还需要:注册到负载均衡器地址的域名和用于验证所有请求是否具有 identity 的应用代码。

    一旦满足这些要求,您就可以在 Kubernetes Engine 上使用enabling Cloud IAP 继续前进。这包括设置 Cloud IAP 访问和创建 OAuth 凭据的步骤。

    您需要为configure BackendConfig for Cloud IAP 创建一个 Kubernetes Secret。 BackendConfig 使用 Kubernetes Secret 来包装您在启用 Cloud IAP 时创建的 OAuth 客户端。

    【讨论】:

    • 是否有将域名注册到负载均衡器的文档?
    • 您可以通过Google Domains 或您选择的其他域名注册商(如果您没有域名注册商)注册一个域名。此link 将向您展示如何将您的域名配置为使用 Ingress 的 HTTPS 负载均衡器的 IP 地址。
    • 谢谢!另一个问题,如果我现在想将此应用程序部署到 AWS Kubernetes,IAP 身份验证是否有效?还是在离开 GKE 时我需要重新考虑身份验证?
    【解决方案2】:

    您需要在后端服务上添加一个 Ingress 并启用 IAP

    创建一个 BackendConfig 对象:

    apiVersion: cloud.google.com/v1
    kind: BackendConfig
    metadata:
      name: app-bc
    spec:
      iap:
        enabled: true
        oauthclientCredentials:
          secretName: oauth-client-secret
    

    将其附加到服务:

    apiVersion: v1
    kind: Service
    metadata:
      name: app-service
      annotations:
        cloud.google.com/backend-config: '{"default": "app-bc"}'
        cloud.google.com/neg: '{"ingress": true}'
    spec:
      type: ClusterIP
      ports:
      - port: 80
        targetPort: 80
      selector:
        app: nginx
    

    然后创建入口:

    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: app-ingress
    spec:
      tls:
      - secretName: ingress-tls-secret
      rules:
      - host: ""
        http:
          paths:
          - path: /*
            pathType: ImplementationSpecific
            backend:
              service:
                name: app-service
                port:
                  number: 80
    

    你可以在这里找到完整的教程hodo.dev/posts/post-26-gcp-iap/

    【讨论】:

      猜你喜欢
      • 2019-10-22
      • 2019-04-09
      • 2019-02-15
      • 2021-12-10
      • 2021-04-25
      • 1970-01-01
      • 2020-09-07
      • 2021-04-16
      • 2018-06-19
      相关资源
      最近更新 更多