【发布时间】:2021-02-16 23:26:30
【问题描述】:
我的问题是我可以通过OIDC登录我的仪表板,但是没有正确映射oidc组信息,我无法访问相应的资源。
基本设置
- K8s 版本:1.19.0
- K8s 设置:1 个主节点 + 2 个工作节点
- 基于 Debian 10 虚拟机
- CNI:印花布
- Louketo Proxy 作为 OIDC 代理
- OIDC:Keycloak 服务器(Keycloak X [Quarkus])
配置
我已经用这些参数配置了 K8s apiserver。
kube-apiserver.yaml
- --oidc-issuer-url=https://test.test.com/auth/realms/Test
- --oidc-client-id=test
- --oidc-username-claim=preferred_username
- --oidc-username-prefix="oidc:"
- --oidc-groups-claim=groups
- --oidc-groups-prefix="oidc:"
集群角色绑定
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: "test-cluster-admin"
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: "Test"
我使用了以下louketo参数
Louketo 代理
/usr/bin/louketo-proxy --discovery-url=$OIDC_DISCOVERY_URL --client-id=$OIDC_CLIENT_ID --client-secret=$OIDC_CLIENT_SECRET -listen=$OIDC_LISTEN_URL --encryption-key=$OIDC_ENCRYPTION_KEY --redirection-url=$OIDC_REDIRECTION_KEY --enable-refresh-tokens=true --upstream-url=$OIDC_UPSTREAM_URL --enable-metrics
我在仪表板中收到以下错误消息。 K8s 错误
replicasets.apps is forbidden: User "\"oidc:\"<user_name>" cannot list resource "replicasets" in API group "apps" in the namespace "default"
希望你能帮我解决这个问题,我已经尝试了网上的大部分手册,但还没有找到解决方案。
PS:我已经在Keycloak服务器中做了相应的组映射,也验证了组条目已经转移。
【问题讨论】:
-
您的 oidc
ServiceAccount有正确的ClusterRole和ClusterRoleBinding设置吗? -
@WytrzymałyWiktor OIDC 服务帐户是什么意思?
-
"\"oidc:\"<user_name>"后面的那个。在我能够发布有意义的答案之前,我正试图找出问题的根源。 -
@WytrzymałyWiktor 我还没有使用 OIDC 用户的凭据创建 K8s 服务帐户。我可以确认存在
ClusterRoleBinding、ClusterRole和 OIDC 用户。我使用的角色是 K8s 集群的默认管理员角色(cluster-admin)。这能回答你的问题吗? -
有人知道我该如何解决这个问题吗?
标签: kubernetes keycloak openid-connect kube-apiserver