1

每当我尝试通过控制台在 GKE Ingress 上启用 IAP 时,都会收到以下错误消息:

字段“resource.iap.oauth2ClientSecret”的值无效:“”。如果启用 IAP,则必须设置 IAP OAuth2 客户端密码。

有谁知道这是什么原因?

它看起来像是通过 GUI 返回的内部 API 错误,我找不到任何文档。

4

2 回答 2

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

于 2019-03-19T12:08:37.057 回答
0

有五个部分——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 编码;检查您的入口/服务/部署规范中的端口匹配。

于 2019-03-19T04:13:46.090 回答