Etcd: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
Строка 70: | Строка 70: | ||
require_cn=true |
require_cn=true |
||
</PRE> |
</PRE> |
||
+ | В скрипте выще важно следующее |
||
+ | * allowed_domains="etcd1.home,etcd2.home,etcd3.home,etcd.home,etcd.az1.k8s.home,etcd.az2.k8s.home,etcd.az3.k8s.home" - список доменов для которых можно выписывать сертефикаты используя этот endpoint. В моем случае изначально планировалось использовать домены etcdX.home но так как настройка "а-ля мультизонный кластер" то домер решил изменить |
||
+ | * allow_subdomains=false - не разрешать создавать сабдомены |
||
+ | * client_flag=true - сертификат может использоваться как клиентский |
||
+ | * server_flag=true - сертификат может использоваться как серверный |
||
+ | * ext_key_usage="ServerAuth,ClientAuth" - расширения |
||
+ | |||
+ | Если попробовать создать только серверный сертификат то возникает ошибка SSL которая в общем-то об этом и говорит и ничего не работает |
||
=Client SSL= |
=Client SSL= |
Версия 16:57, 22 октября 2021
Etcd
Это часть моего изучения k8s the hard way
но может использоваться и отдельно
Требования
- 3 ноды raspberry pi установленные и настроенные, имеющие коннективити друг с другом
- установленный и настроенный PKI на основе Hashicorp Vault (в примере - по адресу http://vault.home)
- Настроенный DNS и созданы записи для всех доменов в примере (в моем случае DNS поднят на MikroTik)
Установка
- мне НЕ удалось ни найти ни собрать более свежую версию чем была доступна в пакетах дистрибутива
- установить на всех трех нодах
apt -y install etcd-server etcd-client etcd
dpkg -l | grep etcd iU etcd 3.2.26+dfsg-3 all Transitional package for etcd-client and etcd-server ii etcd-client 3.2.26+dfsg-3 armhf highly-available key value store -- client iF etcd-server 3.2.26+dfsg-3 armhf highly-available key value store -- daemon
- TODO: проверить кросс-компиляцию для ARM
Подготовка SSL сертификатов
Согласно документации (https://etcd.io/docs/v3.5/op-guide/security/) etcd сертификаты используются в двух независимых настройках:
- Коммуникация между нодами кластера
- Коммуникация между кластером и клиентом
Peer-to-peer SSL
Для того что бы настроить SSL потребуются сертификаты для соответствующих доменов. Так как сертификаты во взаимодействии нод кластера используются как клиентские и как серверные, то нужна соответствующая настройка PLI
настройка PKI для peer-to-peer SSL
- Нужен клиент Vault
- В примере используется рутовый токен (нужен ТОЛЬКО для создания "роли", но используется везде в примерах)
Для обновления сертификатов будет добавлен пользователь или другой способ авторизации и права будут ограничены
export VAULT_ADDR=http://vault.home:8200 export VAULT_TOKEN=<some-token-here> vault write pki_intermediate_ca/roles/etc-az-k8s-home-server-crt \ country="Ukraine" \ locality="Kharkov" \ street_address="Lui Pastera st 322 app. 311"\ postal_code="61172" \ organization="Home Network" \ ou="IT" \ allowed_domains="etcd1.home,etcd2.home,etcd3.home,etcd.home,etcd.az1.k8s.home,etcd.az2.k8s.home,etcd.az3.k8s.home" \ allow_subdomains=false \ max_ttl="87600h" \ key_bits="2048" \ key_type="rsa" \ allow_any_name=false \ allow_bare_domains=true \ allow_glob_domain=false \ allow_ip_sans=true \ allow_localhost=false \ client_flag=true \ server_flag=true \ enforce_hostnames=true \ key_usage="DigitalSignature,KeyEncipherment" \ ext_key_usage="ServerAuth,ClientAuth" \ require_cn=true
В скрипте выще важно следующее
- allowed_domains="etcd1.home,etcd2.home,etcd3.home,etcd.home,etcd.az1.k8s.home,etcd.az2.k8s.home,etcd.az3.k8s.home" - список доменов для которых можно выписывать сертефикаты используя этот endpoint. В моем случае изначально планировалось использовать домены etcdX.home но так как настройка "а-ля мультизонный кластер" то домер решил изменить
- allow_subdomains=false - не разрешать создавать сабдомены
- client_flag=true - сертификат может использоваться как клиентский
- server_flag=true - сертификат может использоваться как серверный
- ext_key_usage="ServerAuth,ClientAuth" - расширения
Если попробовать создать только серверный сертификат то возникает ошибка SSL которая в общем-то об этом и говорит и ничего не работает