每当我尝试通过控制台在GKE Ingress上启用IAP时,都会收到以下错误消息:
“ resource.iap.oauth2ClientSecret”字段的值无效:“”。行动计划 如果启用了IAP,则必须设置OAuth2客户端机密。
有人知道是什么原因吗?
它看起来像是通过GUI返回的内部API错误,我找不到关于它的任何文档。
答案 0 :(得分:2)
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
答案 1 :(得分:0)
共有五个部分-OAuth凭证,入口,服务,秘密,BackendConfig。您将需要Kubernetes 1.10.5-gke.3
或更高版本。 Enabling Cloud IAP for GKE描述了您需要做的(或至少是其中大部分)。
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保护的Web应用程序用户权限;检查您的Secret数据是否为base64编码;检查您的Ingress / Service / Deployment规范中的端口是否匹配。