【问题标题】:Using GKE ingress with https load balancer and IAP/security policy enabled使用启用了 https 负载平衡器和 IAP/安全策略的 GKE 入口
【发布时间】:2019-02-15 07:49:39
【问题描述】:

我有一个使用 GKE Ingress(主版本 1.10.6-gke.2)作为负载平衡器的应用程序。最近 GKE 开始支持通过 BackendConfig 声明 IAP 支持。我遵循了 [1] 和 [2] 的文档。但是,现在 GKE 在创建我的 Ingress 时似乎挂起。

以下是我的服务、入口和后端配置的 yaml。

kubectl -n randall-test-1 get svc,ing,backendconfig -o yaml

apiVersion: v1
items:
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      beta.cloud.google.com/backend-config: '{"default": "airflow-backend-config"}'
      service.alpha.kubernetes.io/app-protocols: '{"web":"HTTPS"}'
    creationTimestamp: 2018-09-10T19:23:13Z
    name: airflow
    namespace: randall-test-1
    resourceVersion: "2155724"
    selfLink: /api/v1/namespaces/randall-test-1/services/airflow
    uid: X-X-X-X-X
  spec:
    clusterIP: X.X.X.X
    externalTrafficPolicy: Cluster
    ports:
    - name: web
      nodePort: 30099
      port: 8080
      protocol: TCP
      targetPort: web
    selector:
      app: airflow
    sessionAffinity: None
    type: NodePort
  status:
    loadBalancer: {}
- apiVersion: extensions/v1beta1
  kind: Ingress
  metadata:
    annotations:
      kubernetes.io/ingress.allow-http: "false"
    creationTimestamp: 2018-09-10T19:23:13Z
    generation: 1
    name: airflow
    namespace: randall-test-1
    resourceVersion: "2155721"
    selfLink: /apis/extensions/v1beta1/namespaces/randall-test-1/ingresses/airflow
    uid: X-X-X-X-X
  spec:
    backend:
      serviceName: airflow
      servicePort: 8080
    tls:
    - secretName: tls
  status:
    loadBalancer: {}
- apiVersion: cloud.google.com/v1beta1
  kind: BackendConfig
  metadata:
    clusterName: ""
    creationTimestamp: 2018-09-10T19:23:13Z
    generation: 1
    name: airflow-backend-config
    namespace: randall-test-1
    resourceVersion: "2155728"
    selfLink: /apis/cloud.google.com/v1beta1/namespaces/randall-test-1/backendconfigs/airflow-backend-config
    uid: X-X-X-X-X
  spec:
    iap:
      enabled: true
      oauthclientCredentials:
        secretName: oauth2
kind: List
metadata:
  resourceVersion: ""
  selfLink: ""

挂起让我没有洞察力。

cluster@master0:~/kube-config$ kubectl -n randall-test-1 describe ing
Name:             airflow
Namespace:        randall-test-1
Address:
Default backend:  airflow:8080 (X.X.X.X:8080)
TLS:
  tls terminates
Rules:
  Host  Path  Backends
  ----  ----  --------
  *     *     airflow:8080 (X.X.X.X:8080)
Annotations:
Events:
  Type    Reason  Age   From                     Message
  ----    ------  ----  ----                     -------
  Normal  ADD     6m    loadbalancer-controller  randall-test-1/airflow

但是,在 GKE 控制台中,我只得到 Creating ingress 作为状态超过 20 分钟的状态,但没有解决方案。我还在控制台中检查了我的Load Balancers,但什么也没看到。

任何想法发生了什么或我可以检查什么?

我还尝试仅使用 securityPolicy 来执行此操作,它应该将负载均衡器与 Cloud Armor 策略链接起来。这也不适用于类似的挂起。

[1]https://cloud.google.com/iap/docs/enabling-kubernetes-howto

[2]https://cloud.google.com/kubernetes-engine/docs/concepts/backendconfig

注意:交叉张贴在https://github.com/kubernetes/ingress-gce/issues/469

【问题讨论】:

  • 您是否检查了活动 k8s master 中 kube-controller-manager 和 kube-apiserver 的日志。 GCP 的某些身份验证或 api 可能会失败。

标签: kubernetes google-kubernetes-engine


【解决方案1】:

过去几天我们收到了一些类似的案例。默认 GKE 服务帐号的权限似乎有问题。

您可以尝试在其中添加以下permissions

  • clientauthconfig.clients.update
  • clientauthconfig.clients.get

【讨论】:

    猜你喜欢
    • 2020-12-24
    • 2018-06-09
    • 2021-10-07
    • 2021-09-05
    • 2021-08-13
    • 2020-07-29
    • 2021-03-18
    • 2020-06-09
    • 1970-01-01
    相关资源
    最近更新 更多