Size: a a a

Kubernetes — русскоговорящее сообщество

2020 November 06

k

kvaps in Kubernetes — русскоговорящее сообщество
corsars
Завтра гляну что там в исходниках про взаимодействие
С этим уже разобрались, клиентские серты для кубелетов подписываются автоматически кубовым CA, так что кубелеты могут спокойно с ним в кластер ходить, больше интересен другой вопрос:

> Как kube-apiserver может доверять кубелетам, когда выполняет запросы на просмотр логов или kubectl exec
источник

c

corsars in Kubernetes — русскоговорящее сообщество
kvaps
С этим уже разобрались, клиентские серты для кубелетов подписываются автоматически кубовым CA, так что кубелеты могут спокойно с ним в кластер ходить, больше интересен другой вопрос:

> Как kube-apiserver может доверять кубелетам, когда выполняет запросы на просмотр логов или kubectl exec
Так файл что для кубелета кладётся в admin.conf он выпущен от доверенного сертификата API сервера, это простая PKI по аналогии можно сделать таких сертификатов для разных API запросов - там один алгоритм
источник

c

corsars in Kubernetes — русскоговорящее сообщество
Первая фаза СА - потом АPI потом после поднятия сервиса генерится для кубелета с защитыми полями DC
источник

k

kvaps in Kubernetes — русскоговорящее сообщество
corsars
Так файл что для кубелета кладётся в admin.conf он выпущен от доверенного сертификата API сервера, это простая PKI по аналогии можно сделать таких сертификатов для разных API запросов - там один алгоритм
Возможно я не так понял твою мысль, но admin.conf - это kubeconfig с клиентским сертификатом, с ним проблем нет.
У кубелетов есть такой-же в /etc/kubernetes/kubelet.conf они с ним ходят в кластер.

Вопрос скорее в другом:

В kubeadm кластере развёрнутом по дефолту kubelet'ы слушают на самоподписанные сертификаты /var/lib/kubelet/pki/kubelet.crt
Проверяет ли apiserver их, когда инициирует соединение с кубелетами и если да, то как?
источник

c

corsars in Kubernetes — русскоговорящее сообщество
Они выпущены от доверенного СА на самом то деле, вон сколько функций записали в kubeadm
источник

c

corsars in Kubernetes — русскоговорящее сообщество
Kubeadm already creates a certificate named apiserver-kubelet-client for letting the api server talking securely with the kubelets; it is signed by ca and bound to necessary RBAC rules.
источник

k

kvaps in Kubernetes — русскоговорящее сообщество
corsars
Они выпущены от доверенного СА на самом то деле, вон сколько функций записали в kubeadm
В kubeadm-кластере они будут выпущены от доверенного CA только в случае если:

a) ты явно передашь кубелету опцию
serverTLSBootstrap: true
(напомню в kubeadm она по умолчанию отключена)

b) от имени админа ты подпишешь csr от этой ноды:
kubectl get csr
kubectl certificate approve <some-request>

в противном случае кубелет будет слушать на самоподписанный сертификат
источник

c

corsars in Kubernetes — русскоговорящее сообщество
Погоди, сертификат для всего делает kubeadm. Он же использует один СА
источник

c

corsars in Kubernetes — русскоговорящее сообщество
Но кубелету можно скормить любой сертификат это понятно. А сам кубелет лезет в 2 места в ним pki и в var
источник

k

kvaps in Kubernetes — русскоговорящее сообщество
corsars
Погоди, сертификат для всего делает kubeadm. Он же использует один СА
ты удивишься, но kubeadm join не использует CA в принципе
источник

c

corsars in Kubernetes — русскоговорящее сообщество
kvaps
ты удивишься, но kubeadm join не использует CA в принципе
Нет конечно, только при cert функции
источник

k

kvaps in Kubernetes — русскоговорящее сообщество
Все запросы на подпись сертификатов идут через куб API, подписывает их непосредственно controller-manager
источник

c

corsars in Kubernetes — русскоговорящее сообщество
kvaps
Все запросы на подпись сертификатов идут через куб API, подписывает их непосредственно controller-manager
Это конечно же да, фаза вторая идёт когда инит кластнра уже прошел и идёт обычная работа компонентов кубера через API. Вот тут много разжевали в части сертификатов для  кубелета https://github.com/kubernetes/kubeadm/issues/1223
источник

k

kvaps in Kubernetes — русскоговорящее сообщество
corsars
Это конечно же да, фаза вторая идёт когда инит кластнра уже прошел и идёт обычная работа компонентов кубера через API. Вот тут много разжевали в части сертификатов для  кубелета https://github.com/kubernetes/kubeadm/issues/1223
Ну так последний коммент как раз мой)
источник

c

corsars in Kubernetes — русскоговорящее сообщество
kvaps
Ну так последний коммент как раз мой)
Вот класс - получается что ты пионер в этом вопросе  :-)
источник

c

corsars in Kubernetes — русскоговорящее сообщество
Смотрю что в 118 про вебхуки речь идёт https://github.com/kubernetes/kubeadm/issues/118
источник

c

corsars in Kubernetes — русскоговорящее сообщество
Пионер - первопроходец
источник

k

kvaps in Kubernetes — русскоговорящее сообщество
corsars
Вот класс - получается что ты пионер в этом вопросе  :-)
очень интересно что ребята из куба ответят на мой высер, если вдруг окажется что metrics-server не доверяет кубелетам без специальной опции --kubelet-insecure-tls, когда kube-apiserver доверяет всем подряд :)
источник

k

kvaps in Kubernetes — русскоговорящее сообщество
kvaps
очень интересно что ребята из куба ответят на мой высер, если вдруг окажется что metrics-server не доверяет кубелетам без специальной опции --kubelet-insecure-tls, когда kube-apiserver доверяет всем подряд :)
источник

c

corsars in Kubernetes — русскоговорящее сообщество
kvaps
очень интересно что ребята из куба ответят на мой высер, если вдруг окажется что metrics-server не доверяет кубелетам без специальной опции --kubelet-insecure-tls, когда kube-apiserver доверяет всем подряд :)
Ага, недоработка по взаимодействию. А глянь как время будет в cmd/kubeadm/app/phases/certs/certs.go там тоже интересно. И ещё в 2017 году задавали вопрос Лукасу

Also, it seems the API server still doesn't verify the kubelet certificate (the --kubelet-certificate-authority flag have to be used) ?
источник