Google 使用同一域的两个不同后端服务的身份感知代理
Google Identity Aware Proxy for Two Different Backend Service using same domain
我有一个用例,我需要使用扇出入口(不同路径)集成两个不同的服务。我决定这样做是因为这两个服务实际上是相关的,所以我不想分开域。另一个原因是我不想使用另一个入口。但是,出现了这个问题,我了解到一旦我激活Google IAP,就会创建一个新的clientId 和secretId。并且重定向 javascript url 应该是一个域(不包含任何路径或通配符形式)。
我正在尝试访问 https://{my-domain}/{some-path}。结果我得到了以下错误。
- 这是一个错误。
错误:redirect_uri_mismatch
The redirect URI in the request,
https://{my-domain}/_gcp_gatekeeper/authenticate, does not match the
ones authorized for the OAuth client. To update the authorized
redirect URIs, visit:
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。我没能找到更多关于这个的信息。谢谢!
最佳,
看完之后:
- https://cloud.google.com/iap/docs/reference/compute-engine-apis#set_iap_properties_by_updating
- https://cloud.google.com/kubernetes-engine/docs/concepts/backendconfig
- 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}"}'
我有一个用例,我需要使用扇出入口(不同路径)集成两个不同的服务。我决定这样做是因为这两个服务实际上是相关的,所以我不想分开域。另一个原因是我不想使用另一个入口。但是,出现了这个问题,我了解到一旦我激活Google IAP,就会创建一个新的clientId 和secretId。并且重定向 javascript url 应该是一个域(不包含任何路径或通配符形式)。
我正在尝试访问 https://{my-domain}/{some-path}。结果我得到了以下错误。
- 这是一个错误。
错误:redirect_uri_mismatch
The redirect URI in the request, https://{my-domain}/_gcp_gatekeeper/authenticate, does not match the ones authorized for the OAuth client. To update the authorized redirect URIs, visit: 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。我没能找到更多关于这个的信息。谢谢!
最佳,
看完之后:
- https://cloud.google.com/iap/docs/reference/compute-engine-apis#set_iap_properties_by_updating
- https://cloud.google.com/kubernetes-engine/docs/concepts/backendconfig
- 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}"}'