首页 > 解决方案 > 带有内部负载平衡器的 Google Identity Aware 代理

问题描述

是否可以在内部负载均衡器之上添加 IAP?在我的设置中,我有:

  1. 根据https://cloud.google.com/iap/docs/enabling-kubernetes-howto#enabling_iap发布和配置 oauth 屏幕
  2. 我的内部域的证书
  3. 使用 backendConfig 设置 Kubernetes 服务(根据https://cloud.google.com/iap/docs/enabling-kubernetes-howto#add-iap-to-backendconfig
  4. 在 Kubernetes 中运行的应用程序
  5. 使用正确的 ssl 证书创建内部负载均衡器的 Kubernetes Ingress

在我的本地机器上,我有 /etc/hosts 指向负载均衡器。我能够在访问应用程序时进行身份验证,但随后我得到“您无权访问”页面而不是我的应用程序。

在我的 GCP 控制台中,我看不到 IAP 页面上列出的内部负载平衡器。我只能看到外部负载平衡器。

根据本文档https://cloud.google.com/iap/docs/concepts-overview#your_abilities,HTTPS ILB 似乎支持 IAP。

GCP 是否支持带 IAP 的 iLB?

我的 k8s 配置

apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
  name: config-default
  namespace: default
spec:
  iap:
    enabled: true
    oauthclientCredentials:
      secretName: my-secret
-------------------------------
apiVersion: v1
kind: Service
metadata:
  name: ilb-service
  annotations:
    cloud.google.com/backend-config: '{"default": "config-default"}'
    cloud.google.com/neg: '{"ingress": true}'
  labels:
    app: hello
spec:
  type: NodePort
  selector:
    app: hello
  ports:
  - port: 80
    targetPort: 8080
    protocol: TCP
    name: host1
  - port: 443
    targetPort: 8080
    protocol: TCP
    name: host2
--------------------------------
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ilb-demo-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: "gce-internal"
    kubernetes.io/ingress.allow-http: "false"
    ingress.gcp.kubernetes.io/pre-shared-cert: "titan-testing-ilb"
    kubernetes.io/ingress.regional-static-ip-name: "my-internal-address"
spec:
  defaultBackend:
    service:
      name: ilb-service
      port:
        number: 443
-------------------------------------------
apiVersion: apps/v1
kind: Deployment
metadata:
  name: hello-app
spec:
  selector:
    matchLabels:
      app: hello
  replicas: 3
  template:
    metadata:
      labels:
        app: hello
    spec:
      containers:
      - name: hello
        image: "us-docker.pkg.dev/google-samples/containers/gke/hello-app:2.0"
        ports:
          - containerPort: 8080
            protocol: TCP

标签: kubernetesgoogle-iap

解决方案


用户类型:
用户类型

我在某个时候遇到过同样的问题,结果我忘记将用户类型设置为“外部”。

这是如果您设法通过 OAuth 的登录屏幕。


推荐阅读