Kubernetes OpenID Connect身份验证失败时记录

Kubernetes OpenID Connect身份验证失败时记录,kubernetes,openid-connect,keycloak,Kubernetes,Openid Connect,Keycloak,我已尝试为OpenID Connect(OIDC)身份验证设置Kubernetes 1.13,如下所示: 已安装的密钥斗篷服务器 添加了命令行选项--oidc颁发者url=https://my_keycloak/auth/realms/my_realm等,以kube apiserver 在kubeconfig的“我的用户”中的users.user.auth provider.config.client id等处存储id令牌 通过阅读文档kubectl,现在应该能够以my_user的身份访问集

我已尝试为OpenID Connect(OIDC)身份验证设置Kubernetes 1.13,如下所示:

  • 已安装的密钥斗篷服务器
  • 添加了命令行选项--oidc颁发者url=https://my_keycloak/auth/realms/my_realm等,以
    kube apiserver
  • 在kubeconfig的“我的用户”中的
    users.user.auth provider.config.client id
    等处存储id令牌
通过阅读文档
kubectl
,现在应该能够以
my_user
的身份访问集群。但是,
kubectl get nodes
表示:

error: You must be logged in to the server (Unauthorized)
{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {},
  "status": "Failure",
  "message": "Unauthorized",
  "reason": "Unauthorized",
  "code": 401
}
curl-khttps://api_server:6443/api/v2/nodes --标题“授权:持票人$id\U令牌”
上写着:

error: You must be logged in to the server (Unauthorized)
{
  "kind": "Status",
  "apiVersion": "v1",
  "metadata": {},
  "status": "Failure",
  "message": "Unauthorized",
  "reason": "Unauthorized",
  "code": 401
}
kubectl日志$kube_apiserver-n kube系统
日志-u kubelet.service
,以及keydove的stdout都是静默的。那么,我在哪里可以看到更多的日志信息来辨别OIDC身份验证可能出现的错误呢


客户端(
keyctl
)或服务器(如API服务器)上的更新
选项在某种程度上都有帮助。

如果您使用的是
电子邮件
声明,Kubernetes要求您的
电子邮件经过验证
声明为
真实
。默认情况下,在KeyClope中,该值设置为
false


来源:

您的kubeconfig中是否有
id令牌:
,如图所示?因为如果没有,那么kubelet就无法实际执行OIDC握手。我无法判断您是否从示例中的
curl
中获取了
kubeconfig
的值,或者what@MatthewLDaniel我已经获得了id令牌,它是通过之前对KeyClope的OIDC rest API的curl请求获得的,并在jwt.io上检查了它的有效性。是的,我的kubeconfig符合这个例子;那么
--oidc颁发者url=
--oidc用户名声明=
呢?我没有使用jwt.io,但它可能允许您检查jwt中的声明,当然,集群中是否有多个apiserver,如果有,它们是否都使用这些标志成功运行?@MatthewLDaniel我已在
/etc/kubernetes/manifests/kube apiserver.yaml中配置了这些标志,所以他们应该到处都能找到。