Maxim
от количества данных зависит и интенсивности использования
Maxim
ELK в вакууме можно и на пятибаксовом ДО запустить
Maxim
и он даже заработает
Maxim
но смысл?
Nikita
только если своп включить
Nikita
ну, я для тестов поднимал
Alexander
вот да, в ваакуме все отлино работатет. На реальных же данных - все гораздо затратнее))
Denis
Парни, а я чё-то потерял нить) Куда копировать эти ключи?
$ openssl genrsa -out admin-key.pem 2048
$ openssl req -new -key admin-key.pem -out admin.csr -subj "/CN=kube-admin"
$ openssl x509 -req -in admin.csr -CA ca.pem -CAkey ca-key.pem -CAcreateserial -out admin.pem -days 365
Denis
Они нигде в явном виде не используются вроде
Denis
https://coreos.com/kubernetes/docs/latest/openssl.html
Maxim
как не используются? о_О
Nikita
это ж Root CA
Maxim
ну
Denis
Так а где они должны быть?
Maxim
в сейфе
Denis
в cloud config референса на них нет
Maxim
это твой CA
Maxim
certification authority
Denis
а понял
Denis
локально, на машине, откуда kubectl юзается?
Maxim
ты им будешь подписывать все пары ключей/сертификатов для etcd и k8s
Nikita
он нужен для выпуска сертификатов
Maxim
выдержка из манифеста к аписерверу:
- --tls-cert-file=/etc/kubernetes/ssl/apiserver.pem
- --tls-private-key-file=/etc/kubernetes/ssl/apiserver-key.pem
- --client-ca-file=/etc/kubernetes/ssl/ca.pem
- --service-account-key-file=/etc/kubernetes/ssl/apiserver-key.pem
Denis
Я про admin.pem и admin-key.pem :)
Nikita
Maxim
admin.pem и admin-key.pem нужны тебе
Maxim
ну или коллегам
Denis
Крутая схема 👍
Maxim
чтобы авторизоваться в аписервере
Denis
Вроде понял, спасибо
Denis
У меня какая-то странная история
Denis
Как я вчера понял - была проблема с ключами
Denis
Сейчас обновляю ключи, заодно меняю сетевой интерфейс, где будет поднят apiserver
Maxim
users:
- name: bregor
user:
client-certificate: /Users/bregor/Work/EvilMartians/chef/chef-amplifr/private-cookbooks/chef-kubernetes/ssl/amplifr/bregor.pem
client-key: /Users/bregor/Work/EvilMartians/chef/chef-amplifr/private-cookbooks/chef-kubernetes/ssl/amplifr/bregor-key.pem
username: bregor
Maxim
это кусочек ~/.kube/config
Maxim
моего локального
Denis
да понял
Denis
bregor => admin?
Maxim
вот bregor.pem и bregor-key.pem - это твои admin.pem и admin-key.pem
Denis
Great, perfectly great :)
Denis
а ты его к пользователю зачем заносишь? чтобы залогиниться на одну из нод и там управлять?
Denis
мы просто сделали внешнее управление
Maxim
условно говоря - это логин/пароль
Maxim
которые kubectl использует, чтобы попасть в аписервер
Denis
это да - это я понял)
Maxim
тогда я не понял вопроса про ноду
Denis
ну вот они у тебя в cloud-init
Denis
чтобы ты мог залогиниться на каждую машину и поуправлять кластером?
Maxim
да нету у меня cloud-init ;)
Maxim
у меня убунта
Denis
а
Maxim
уже дискутировали как-то
Denis
а вот вижу свой ~/.kube/config :) теперь ещё на 5% ясней
Maxim
clusters:
- cluster:
certificate-authority: /Users/bregor/Work/EvilMartians/chef/chef-amplifr/private-cookbooks/chef-kubernetes/ssl/amplifr/ca.pem
server: https://ololo:8443
name: amplifr
contexts:
- context:
cluster: amplifr
user: bregor
name: amplifr-default
current-context: amplifr-default
Maxim
вот на сцену вышел третий ссл-компонент - публичная часть CA
Denis
а зачем тебе chef?
Maxim
а ты предлагаешь мне сотню серверов руками раскатывать?
Maxim
мсье знает толк в извращениях...
Maxim
итого, в ~/.kube/config у тебя есть три секции:
- clusters
- contexts
- users
(на самом деле больше, но сейчас это не важно)
в clusters ты описываешь аписерверы, в виде:
name: <тут-любое-сочетание-символов>
ca: <путь-к-публичной-части-CA, либо он сам без переносов строк>
server: <https://address[:port]>
Maxim
в users, очевидно, ползатели вида:
username: <тут-любое-сочетание-символов>
[password: <тут-любое-сочетание-символов>]
[client-certificate: <путь-к-публичной-части-клиентского-ключа, либо он сам без переносов строк>]
[client-key: <путь-к-публичной-части-клиентского-ключа, либо он сам без переносов строк>]
Maxim
в contexts живут сочетания кластеров/юзеров в любых позах и названиях
например:
- context:
cluster: amplifr
namespace: kube-system
user: bregor
name: amplifr-system
Maxim
короче говоря, контексты - это как бы шорткаты к конфигурациям
Maxim
ключ current-context указывает на контекст, который будет применен в случае, если ты kubectl запустил без указания контекста
Maxim
можно менять его в конфиге, можно командой
$ kubectl config set current-context <ololo>
Maxim
можно указывать контексты каждый раз при запуске:
$ kubectl get po --all-namespaces -o wide -w --context=ololo
Maxim
например
Maxim
вы прослушали краткое изложение мануала по конфигурации kubectl
Maxim
спасибо за внимание
Maxim
пойду сына покормлю
Denis
:))) Спасибо, что ещё раз напомнил, я в курсе всего этого да, не совсем понятно только почему не работает
Denis
О, ладно, не отвлекаю, подрастающее поколение наше всё)
Denis
Не работает с ошибкой:
# kubectl get pods
Unable to connect to the server: x509: certificate is valid for x.x.x.x, y.y.y.y, not z.z.z.z
Denis
Хотя ключ сгенерировал новый
Denis
Поместил его на сервере с kube-apiserver
Denis
Рестартанул и даже сделал ребут
Maxim
Ну оно ж тебе английским по белому говорит, что сертификаты у тебя сгенерированы для других ip/dns
Maxim
Перегенерируй
Maxim
Или айпишники другие подставляй
Denis
Перегенерировал, разумеется, поэтому и не пойму :)
Denis
Это же с kube-apiserver сообщение?