【问题标题】:Using Google IAM for GKE service web access使用 Google IAM 进行 GKE 服务网络访问
【发布时间】:2019-02-07 15:46:12
【问题描述】:

我在 GKE 上托管一个应用程序,并希望能够让我的组织中的用户通过网络访问此应用程序。我希望他们能够使用他们的 Google 帐户 IAM 凭据登录。

有没有办法配置一个暴露集群 Web 端点的服务,以便用户只需使用他们的 google 帐户登录即可访问该服务?

例如,在测试服务时,我可以轻松地在 cloud-shell 中进行网络预览,然后在浏览器中访问网络应用程序。

有没有办法对此进行配置,以便我的组织中授权的任何用户都可以访问我的应用程序的 Web 界面?

(注意,我问了same question on DevOps,但我觉得那个网站还没有达到应有的活跃程度,所以我也在这里问)

【问题讨论】:

  • 我不认为它直接内置在 GKE 中。我们最终使用github.com/bitly/oauth2_proxy 和 nginx ingress 自己完成了这项工作。
  • @Hitobat 这似乎是一个很有前途的选择。您能否提供更完整的答案,详细说明您配置服务所采取的步骤?
  • 老实说,我们有一位顾问为我们设置了它,所以这就是我所知道的。我会尝试找到他们留下的文档,但希望知道所使用的软件会给你一个谷歌可用的起点。
  • 我发现这篇博文看起来很有前途:blog.billyc.io/2018/03/25/…
  • 我想我在这里找到了我想要的东西:cloud.google.com/iap 仍然没有实现,如果它有效,我会更新一个答案。

标签: kubernetes google-cloud-platform google-kubernetes-engine google-identity google-iam


【解决方案1】:

好的,我设法让它完美运行。但它走了几步。我在这里包括设置IAPusing an ingress 所需的清单。它需要我在下面的清单中列出的一些东西。希望这可以帮助其他人,因为我找不到将所有这些放在一起的单一来源。基本上您需要做的就是运行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

【讨论】:

    猜你喜欢
    • 2019-05-24
    • 2011-07-01
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    • 2016-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多