1

我有一个用例,我需要使用扇出入口(不同的路径)集成两个不同的服务。我决定这样做是因为这两个服务实际上是相关的,所以我不想分离域。另一个原因是我不想使用另一个入口。但是,出现了这个问题,我知道一旦我激活了 Google IAP,就会创建一个新的 clientId 和 secretId。并且重定向 javascript url 应该是一个域(不包括任何路径或通配符形式)。

我正在尝试访问 https://{my-domain}/{some-path}。事实证明我收到以下错误。

  1. 那是一个错误。

错误:redirect_uri_mismatch

请求中的重定向 URI https://{my-domain}/_gcp_gatekeeper/authenticate 与授权给 OAuth 客户端的不匹配。要更新授权的重定向 URI,请访问: https ://console.developers.google.com/apis/credentials/oauthclient/

这是我的入口配置:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    kubernetes.io/ingress.allow-http: "false"
    kubernetes.io/ingress.global-static-ip-name: <some-static-ip>
  name: <name>
  namespace: <namespace>
spec:
  backend:
    serviceName: <service-1>
    servicePort: <port-of-service-1>
  rules:
  - http:
      paths:
      - backend:
          serviceName: <service-2>
          servicePort: <port-of-service-2>
        path: /<some-path>/*
  tls:
  - secretName: <secret-name>

但是,当我尝试访问我的第一个服务时,它就可以正常工作并按预期工作。

只是想知道是否可以使用相同的入口为两个不同的后端服务创建 IAP。我无法找到更多关于此的信息。谢谢!

最好的,

4

1 回答 1

4

在我读到这个之后:

  1. https://cloud.google.com/iap/docs/reference/compute-engine-apis#set_iap_properties_by_updating
  2. https://cloud.google.com/kubernetes-engine/docs/concepts/backendconfig
  3. https://cloud.google.com/iap/docs/enabling-kubernetes-howto

我意识到我只需要为我的第二个服务启用 IAP,然后通过 IAP 配置为我的第一个服务提供的值覆盖我的第二个服务的 clientId 和 secretId 的值。转到您的 IAP 控制台:

kubectl create secret generic backend-config-secret --namespace {namespace}  \
--from-literal=client_id=client_id_key  \
    --from-literal=client_secret=client_secret_key

创建您的后端配置:

apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
  name: {name}
  namespace: {namespace}
spec:
  iap:
    enabled: true
    oauthclientCredentials:
      secretName: backend-config-secret

将此添加到您的服务中:

beta.cloud.google.com/backend-config: '{"default": "{name}"}'
于 2018-12-17T06:59:05.920 回答