Я пытаюсь получить удаленный доступ к API Kubernetes (в основном с нашего сервера Jenkins), поэтому мы можем выполнять действия RESTful и не полагаться на kubectl
. В идеале я бы хотел сделать это в Go или Python, но ни одна из библиотек, которые я пробовал, не была успешной, и использование urllib2
напрямую возвращает множество ошибок. Я смог подключиться через curl (хотя и с некоторыми странными ошибками), но я надеялся, что вам не придется формировать зависающие запросы GET/PUT для всего этого.Удаленный доступ к API Kubernetes без прокси
Итак, мой вопрос: может ли какая-то душа (возможно, кто-то из Google?) Описать шаги, которые мне необходимы для правильной авторизации с сервером API Kubernetes из удаленного места? Любое руководство очень ценит, поскольку мне интересно узнать больше о x509, но я стараюсь связать все части вместе.
структура Curl, которая в основном работы
Эти .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"
}
]
}
4/14/2016 Update Таким образом, кажется, что я необходимо переименовать некоторые из них в виде .crt-файлов. Прочитав о возможных проблемах с завитом, я дал wget go, и, похоже, проблем нет, даже не указав заголовок 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 args, а также может потребоваться указать сертификат как ./client.pem –