【发布时间】:2016-07-31 01:51:53
【问题描述】:
我正在尝试获得对 Kubernetes API 的远程访问(主要从我们的 Jenkins 服务器),以便我们可以执行 RESTful 操作而不依赖于 kubectl。理想情况下,我想在 Go 或 Python 中执行此操作,但我尝试过的库都没有成功,并且使用 urllib2 直接返回各种错误。我已经能够通过 curl 进行连接(尽管也有一些奇怪的错误),但我希望不必为所有这些形成 curl GET/PUT 请求。
所以我的问题是:某个善良的灵魂(可能是来自 Google 的人?)能否概述我需要从远程位置正确验证 Kubernetes API 服务器的步骤?非常感谢任何指导,因为我有兴趣了解有关 x509 的更多信息,但我正在努力将所有部分联系在一起。
基本有效的卷曲结构
这些 .pem 文件是根据 ~/.kube/config 中的值手动创建的
$ curl --header "Authorization: Bearer $TOKEN" -key key.pem -cacert ca.pem -cert client.pem https://MASTER_IP/api
curl: (6) Could not resolve host: key.pem
curl: (6) Could not resolve host: ca.pem
curl: (6) Could not resolve host: client.pem
{
"kind": "APIVersions",
"versions": [
"v1"
],
"serverAddressByClientCIDRs": [
{
"clientCIDR": "0.0.0.0/0",
"serverAddress": "172.20.0.9:443"
}
]
}
2016 年 4 月 14 日更新 所以看来我需要将其中一些重命名为 .crt 文件。在阅读了 curl 的潜在问题后,我尝试了一下 wget,它似乎没有问题,甚至没有指定 auth 标头。感谢您对基于客户端的身份验证的任何见解。
$ wget -qO- https://MASTER_IP/api --certificate client-decoded.crt --private-key clean-key.pem --ca-certificate ca.crt
{
"kind": "APIVersions",
"versions": [
"v1"
],
"serverAddressByClientCIDRs": [
{
"clientCIDR": "0.0.0.0/0",
"serverAddress": "172.20.0.9:443"
}
]
}
【问题讨论】:
-
您在 --key、--cacert 和 --cert 参数上缺少破折号,并且可能还需要将证书指定为 ./client.pem
标签: python x509certificate kubernetes client-certificates