Etcd: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) |
Sirmax (обсуждение | вклад) |
||
Строка 38: | Строка 38: | ||
Для того что бы настроить SSL потребуются сертификаты для соответствующих доменов. Так как сертификаты во взаимодействии нод кластера используются как клиентские и как серверные, то нужна соответствующая настройка PLI |
Для того что бы настроить SSL потребуются сертификаты для соответствующих доменов. Так как сертификаты во взаимодействии нод кластера используются как клиентские и как серверные, то нужна соответствующая настройка PLI |
||
==настройка PKI для peer-to-peer SSL== |
==настройка PKI для peer-to-peer SSL== |
||
+ | * Нужен клиент Vault |
||
+ | * В примере используется рутовый токен (нужен ТОЛЬКО для создания "роли", но используется везде в примерах) <BR> |
||
+ | Для обновления сертификатов будет добавлен пользователь или другой способ авторизации и права будут ограничены |
||
+ | <PRE> |
||
+ | 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 |
||
+ | </PRE> |
||
=Client SSL= |
=Client SSL= |
Версия 16:50, 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