ETCD Keeper — web интерфейс к etcd
Легкий веб-клиент etcd.
Поддержка etcd 2.x и etcd 3.x.
Сервер использует клиентский интерфейс etcd go и компилируется с клиентским пакетом etcd.
Основан на платформе easyui (лицензия easyui на веб-сайте easyui).
В предудущей статье описывалось как развернуть кластер etcd с генерацией TLS сертификатов.
Установим web интерфейс на любой ноде кластера (или на нескольких для более высокой доступности). Это в принципе не важно, так как вносимые данные будут реплицированы на все ноды.
Скачиваем дистрибутив под нужную платформу https://github.com/evildecay/etcdkeeper/releases.
Запускаем бинарник etcdkeeper со следующими ключами:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
-auth используем авторизацию (предварительно нужно завести пользователя root и выдать ему права root) -cacert string путь к файлу CA сертификата (ca.crt) -cert string путь к файлу приватного ключа (cert.crt) -h string имя хоста или IP адрес (по умолчанию "0.0.0.0") -key string путь к файлу публичного ключа (cert.key) -p int порт на котором работает web интерфейс (default 8080) -sendMsgSize int максимальный размер отправляемых данных ETCD клиентом (default 2097152) -sep string разделитель (default "/") -skiptls skip verify tls -timeout int ETCD client connect timeout (default 5) -usetls указываем, если используем TLS |
Пример строки запуска:
1 |
./etcdkeeper -cacert /etc/etcd/ssl/ca.crt -cert /etc/etcd/ssl/server.crt -key /etc/etcd/ssl/server.key -usetls -auth |
Открываем страницу http://127.0.0.1:8080/etcdkeeper (указываем IP адрес сервера на котором установили etcdkeeper и на котором запущен etcd)
Если запустили с ключом —auth — запросит пароль для пользователя root.
Поэтому предварительно должен быть создан такой пользователь и настроены права.
Список команд для работы с аутентификацией:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
export ETCDCTL_API=3 ENDPOINTS=localhost:2379 etcdctl --endpoints=${ENDPOINTS} role add root etcdctl --endpoints=${ENDPOINTS} role get root etcdctl --endpoints=${ENDPOINTS} user add root etcdctl --endpoints=${ENDPOINTS} user grant-role root root etcdctl --endpoints=${ENDPOINTS} user get root etcdctl --endpoints=${ENDPOINTS} role add role0 etcdctl --endpoints=${ENDPOINTS} role grant-permission role0 readwrite foo etcdctl --endpoints=${ENDPOINTS} user add user0 etcdctl --endpoints=${ENDPOINTS} user grant-role user0 role0 etcdctl --endpoints=${ENDPOINTS} auth enable # now all client requests go through auth etcdctl --endpoints=${ENDPOINTS} --user=user0:123 put foo bar etcdctl --endpoints=${ENDPOINTS} get foo # permission denied, user name is empty because the request does not issue an authentication request etcdctl --endpoints=${ENDPOINTS} --user=user0:123 get foo # user0 can read the key foo etcdctl --endpoints=${ENDPOINTS} --user=user0:123 get foo1 |
Для наших целей на сервере с etcd выполним следующие команды (процесс генерации ключей с помощью Ansible можно посмотреть тут):
1 2 3 4 5 6 7 |
./etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/etcd/ssl/ca.crt --cert=/etc/etcd/ssl/server.crt --key=/etc/etcd/ssl/server.key role add root ./etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/etcd/ssl/ca.crt --cert=/etc/etcd/ssl/server.crt --key=/etc/etcd/ssl/server.key user add root ./etcdctl --endpoints=https://127.0.0.1:2379 --cacert=/etc/etcd/ssl/ca.crt --cert=/etc/etcd/ssl/server.crt --key=/etc/etcd/ssl/server.key user grant-role root root |
— добавляем роль root
— добавляем пользователя root. Попросит указать для него пароль
— выдаем роль root пользователю root
Для полного доступа к данным etcd через web интерфейс этого достаточно
После фхода можем вносить, редактировать, удалять данные в кластере.
Recommended Posts
Отслеживание изменений в etcd
14.01.2024