每当我尝试通过控制台在 GKE Ingress 上启用 IAP 时,都会收到以下错误消息:
字段“resource.iap.oauth2ClientSecret”的值无效:“”。如果启用 IAP,则必须设置 IAP OAuth2 客户端密码。
有谁知道这是什么原因?
它看起来像是通过 GUI 返回的内部 API 错误,我找不到任何文档。
每当我尝试通过控制台在 GKE Ingress 上启用 IAP 时,都会收到以下错误消息:
字段“resource.iap.oauth2ClientSecret”的值无效:“”。如果启用 IAP,则必须设置 IAP OAuth2 客户端密码。
有谁知道这是什么原因?
它看起来像是通过 GUI 返回的内部 API 错误,我找不到任何文档。
GUI 确实未能合法地执行内部 API 调用。无论如何,您都可以通过手动修改 Ingress 后端来启用 IAP,如下所示:
gcloud beta compute backend-services update $YOUR_INGRESS_BACKEND --project=$YOUR_PROJECT --global --iap=enabled,oauth2-client-id=$CLIENT_ID,oauth2-client-secret=$CLIENT_SECRET
有五个部分——OAuth 凭证、Ingress、Service、Secret、BackendConfig。您将需要 Kubernetes1.10.5-gke.3
或更高版本。为 GKE 启用 Cloud IAP描述了您需要执行的操作(或至少大部分操作)。
OAuth—为 OAuth 客户端(可能是“Web 应用程序”类型)创建凭据。ID 和秘密将进入 kube Secret 对象。
入口——指向你的服务,没有额外的东西
服务——使用 BackendConfig 进行注释。(您可以将不同的服务端口分配给不同的后端。对于简单的情况,使用“默认”。)
metadata:
annotations:
beta.cloud.google.com/backend-config: '{"default": "mybc"}'
秘密——将保存您创建的 OAuth 客户端的凭据
apiVersion: v1
kind: Secret
type: Opaque
metadata:
name: mysecret
data:
client_id: xxx
client_secret: xxx
BackendConfig — 是 GKE 支持的自定义资源,因此除了创建此对象之外没有什么花哨的事情
apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
name: mybc
spec:
iap:
enabled: true
oauthclientCredentials:
secretName: mysecret
如果您仍然遇到问题:再次查看该文档;检查 OAuth 授权域;在 IAP 页面上,确认目标用户的IAP-secured Web App User权限;检查您的 Secret 数据是否经过 base64 编码;检查您的入口/服务/部署规范中的端口匹配。