如何使用 curl 命令从配置了 LDAP 的 Dex 服务器检索 kubectl 配置值?

问题描述

我们公司有多个 Kubernetes 集群。为了获取 kubectl 配置内容,我们使用 Dex 登录并将内容复制/粘贴到 kubectl 的本地配置。

我想让这个自动化,所以运行一堆命令来使用 curl 获取内容

我无法通过检查请求响应来找出方法。如果有人知道如何,请帮助我。

解决方法

我找到了方法。所以我们需要打两个电话。第一个检索登录页面,我们可以在其中获取请求 ID:

the_id=$(curl -s -v -L "https://login.${cluster}" | grep -Po 'action="(.*)"')

上面在响应中搜索属性 action=,它告诉您在哪里提交请求

然后在下一次调用中使用 the_id

konfig=$(curl --insecure POST -H 'Content-Type: application/x-www-form-urlencoded' -d "login=$username&password=$password" -v -L "${cluster}${the_id}" | grep -Pzo '(?s)id=".*?</')

此命令将返回一个 HTML 页面,您可以在其中找到配置。显然,对您来说,这可能是不同的响应,但从第一次调用中获取 request id 是我一开始就错过的关键。