Как настроить Consul KV с помощью Docker

0 Акции
0
0
0
0

Введение

Consul от HashiCorp — универсальный инструмент, выполняющий множество функций в современной DevOps-среде. Он широко используется для обнаружения сервисов, проверки работоспособности, балансировки нагрузки и, что особенно важно, в качестве распределённого хранилища ключей и значений (KV). Хранилище KV в Consul подходит для хранения динамических данных конфигурации, флагов функций, секретов и метаданных в полностью доступном и согласованном виде в рамках всей вашей инфраструктуры, обеспечивая динамический доступ к ним со стороны сервисов в распределённой системе. Использование Docker для настройки хранилища KV в Consul обеспечивает быстрое развертывание и создание изолированных сред, что делает его идеальным решением для тестирования и разработки.

Это руководство поможет вам настроить хранилище KV Consul с помощью Docker. К концу у вас будет полнофункциональный экземпляр консоли Docker с настроенными и доступными парами KV. Такая настройка необходима для динамической настройки сервисов и управления состоянием в распределённых системах.

Предпосылки

Прежде чем начать, убедитесь, что у вас есть следующее:

  • Учетная запись DigitalOcean Cloud.
  • Сервер под управлением Ubuntu и пользователь без прав root с привилегиями sudo и включенным брандмауэром.
  • Docker установлен на вашем сервере Ubuntu.
  • Введение в командную строку Linux
  • Базовые знания команд Docker и управления контейнерами.

Шаг 1 — Извлечение образа Consul Docker

Давайте скачаем официальный образ консоли из Docker Hub. Он поддерживается HashiCorp и включает в себя всё необходимое для запуска консоли.

Войдите в консоль Ubuntu Droplet и выполните:

docker pull hashicorp/consul:latest
Output
latest: Pulling from hashicorp/consul
c8bcd218a73d: Pull complete 
5f1ac8227c2a: Pull complete 
c51fd79d429a: Pull complete 
91eff479bde6: Pull complete 
4dfcc18e51db: Pull complete 
3e2a8bf39bf9: Pull complete 
bd9ddc54bea9: Pull complete 
2054d291fb84: Pull complete 
Digest: sha256:e244c64df77ab3586f177f1692e98575086eb40343dc82a6320f5e79543490eb
Status: Downloaded newer image for hashicorp/consul:latest
docker.io/hashicorp/consul:latest

Шаг 2 — Запуск контейнера Consul

Теперь, когда образ консоли загружен, вы можете запустить новый контейнер консоли. Этот контейнер будет выступать в качестве сервера консоли и позволит вам взаимодействовать с хранилищем KV.

Чтобы запустить контейнер, выполните:

docker run -d --name=consul-server -e 
Output
CONSUL_BIND_INTERFACE=eth0 -p 8500:8500 -p 8600:8600/udp hashicorp/consul
c893b6707686bce8434213975a75c936b834cf25fc84d10b407a11c4fa8ca8ba

Вот что делает эта команда:

  • -d запускает контейнер в отсоединенном режиме (в фоновом режиме).
  • --name=consul-server присваивает имя контейнеру.
  • -e CONSUL_BIND_INTERFACE=eth0 Задаёт сетевой интерфейс, к которому должна быть привязана консоль. Это необходимо для корректной сетевой связи.
  • -p 8500:8500 сопоставляет веб-интерфейс Consul и порт API с хостом.
  • -p 8600:8600/udp сопоставляет порт службы DNS для обнаружения служб.

Этот шаг очень важен, поскольку он запускает службу Consul, которую вы будете использовать для настройки хранилища KV.

Шаг 3 — Подтверждение установки консоли

Чтобы убедиться в правильной работе консоли, необходимо проверить состояние контейнера и получить доступ к интерфейсу консоли.

Сначала запустите docker ps, чтобы вывести список всех запущенных контейнеров и убедиться, что контейнер Consul запущен.

❯ docker ps 
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c893b6707686 hashicorp/consul "docker-entrypoint.s…" 51 seconds ago Up 50 seconds 8300-8302/tcp, 8600/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udp consul-server

Теперь проверьте, доступна ли консоль, откройте веб-браузер и перейдите по адресу http://localhost:8500. Вы должны увидеть интерфейс Consul.

Этот шаг проверки важен для подтверждения того, что экземпляр вашей консоли работает без проблем, прежде чем сохранять данные в хранилище KV (шаг 5).

Шаг 4 — Настройка брандмауэра (необязательно)

Если вашему экземпляру консоли требуется внешний доступ (например, с других узлов в кластере), необходимо настроить параметры брандмауэра, чтобы разрешить трафик через необходимые порты.

Например, если вы используете Consul на облачном экземпляре, вам может потребоваться разрешить входящий трафик на порты 8500 (HTTP API) и 8600 (DNS). Конкретные команды будут различаться в зависимости от вашего решения по межсетевому экрану (UFW, iptables и т. д.).

Этот шаг гарантирует, что ваш экземпляр консоли будет доступен с других машин, что крайне важно для распределенных конфигураций.

Шаг 5 — Хранение пар ключ-значение

После запуска Consul вы можете использовать хранилище KV для хранения данных конфигурации. Пары «ключ-значение» можно добавлять через интерфейс командной строки Consul или веб-интерфейс.

Чтобы сохранить пару ключ-значение через CLI, выполните:

docker exec -it consul-server consul kv put config/db_host 
192.168.1.100
Success! Data written to: config/db_host
docker exec -it consul-server consul kv put config/db_port 3306 
Success! Data written to: config/db_port

Вот что делает эта команда:

  • -it – Запускает интерактивный терминал из локальной системы в контейнере.
  • consul kv put – Команда kv put сохраняет данные по указанному пути.
  • config/db_host – Путь для сохранения значения.
  • 192.168.1.100 – значение.

Используя веб-интерфейс,

  1. Перейдите в пользовательский интерфейс Consul (http://localhost:8500).
  2. Нажмите на вкладку “Ключ/Значение”.
  3. Создайте новый ключ, нажав “Создать”.
  4. Введите ключ (например, config/db_host) и значение (например, 192.168.1.100).

Эти команды и действия хранят критически важные данные конфигурации, к которым ваши службы могут динамически получать доступ во время выполнения.

Шаг 6 — Извлечение пар ключ-значение

После сохранения нескольких пар KV вам, возможно, захочется восстановить их, чтобы убедиться, что они были сохранены правильно.

Используя CLI, извлеките значение с помощью следующей команды:

docker exec -it consul-server consul kv get config/db_host 
192.168.1.100

Используя веб-интерфейс,

  1. Перейдите на вкладку «Ключ/Значение» в пользовательском интерфейсе Consul.
  2. Найдите созданный вами ключ и щелкните по нему, чтобы увидеть сохраненное значение.

Восстановление пар KV — важный шаг для проверки того, что ваши данные правильно хранятся и доступны.

Шаг 7 — Постоянные данные с использованием томов Docker

По умолчанию контейнеры Docker являются эфемерными, то есть все данные, хранящиеся в них, будут потеряны при удалении контейнера. Для сохранения данных Consul KV необходимо использовать тома Docker.

Остановите и выйдите из текущего контейнера консоли:

docker stop consul-server 
docker rm consul-server 

Теперь проверьте контейнеры, и вы заметите, что консилер больше не работает.

docker ps 
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Подключите новый консольный контейнер с томом Docker:

docker run -d --name=consul-server -e 
Output
CONSUL_BIND_INTERFACE=eth0 -p 8500:8500 -p 8600:8600/udp -v consul_data:/consul/data hashicorp/consul
2d2a7d3ff1911c2283e70506d68391a5cbf9c935a2ae447bfb8fa21481989ef1
docker ps 
Output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2d2a7d3ff191 hashicorp/consul "docker-entrypoint.s…" 5 seconds ago Up 4 seconds 8300-8302/tcp, 8600/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udp consul-server

Параметр -v consul_data:/consul/data монтирует том Docker в контейнере и обеспечивает перезапуск хранилища KV во всем контейнере.

Шаг 8 — Автоматический запуск консоли (необязательно)

Для производственных развёртываний вам может потребоваться автоматизировать развёртывание контейнера Consul с помощью Docker Compose. Docker Compose упрощает разработку многоконтейнерных Docker-приложений и упрощает управление сервисами.

Создайте файл docker-compose.yml со следующим содержимым:

services:
consul:
image: hashicorp/consul:latest
environment:
- CONSUL_BIND_INTERFACE=eth0
volumes:
- consul_data:/consul/data 
ports:
- "8500:8500"
- "8600:8600/udp"
restart: always
volumes:
consul_data:

Затем выполните:

docker-compose up -d
Output
[+] Running 2/2
✔ Network work_default Created 0.0s 
✔ Container consul-server Started 0.1s 
docker ps
Output
WARN[0000] /Users/anandhkumar/work/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion 
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
work-consul-1 hashicorp/consul:latest "docker-entrypoint.s…" consul 40 seconds ago Up 11 seconds 8300-8302/tcp, 8600/tcp, 8301-8302/udp, 0.0.0.0:8500->8500/tcp, 0.0.0.0:8600->8600/udp

Эта команда автоматически запускает Consul и обеспечивает его перезапуск в случае сбоя, что делает его более надежным для использования в производственных целях.

Шаг 9 – Очистка

После завершения работы с экземпляром консоли вам необходимо очистить среду Docker, чтобы освободить ресурсы.

Давайте остановимся и удалим контейнер консоли:

docker stop consul-server 
docker rm consul-server
docker ps
output
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

Если вы закончили работу с консолью, вы также можете удалить образ Docker:

docker rmi hashicorp/consul 
output
hashicorp/consul@sha256:e244c64df77ab3586f177f1692e98575086eb40343dc82a6320f5e79543490eb
Deleted: sha256:eff8ccb509560987755a70df8d6c0b9410538d503d99498ae1ea9f48066b0439
Deleted: sha256:b5e6402bbb78eb061d538505a30300ef7f612104eaf0f11b17839a9b29bc5603
Deleted: sha256:1c61ada2ad8074615120d13bd805260d766ae8424cafbda4bded529d6a204d6f
Deleted: sha256:9b36da670e2a59f1d81c6e3c9d55906c576b384df51272977e5a9caea7131e74
Deleted: sha256:8c6e52c441c246f60ca146b71204b7d6511df75fa87a0dc0a0f91141964e8fd9
Deleted: sha256:1fce18208235de2be3c419764ec1d469229af5387447d21649c841632c653cef
Deleted: sha256:68e0a114c9c35b9aa8cac31fa32b27f886361bc85fcc63f34e882e9128f33a14
Deleted: sha256:3da5b888208a9b19694bfeaf8c74a432b50f44542d717c9e1f3ab273e505855a
Deleted: sha256:dea73e9287e6e2f3b7f9fcac4f20767d7badeefa24e52f990f1674e98abfa1a3
Deleted: sha256:201fa22d1f4c7d6e7ec43135c63b2260f303f4864f5eb43569faaa1731628799

Очистка помогает поддерживать порядок в среде разработки и гарантирует, что ресурсы Docker не будут использоваться без необходимости.

Результат

В этом руководстве вы узнали, как настроить хранилище KV в Consul с помощью Docker. Вы рассмотрели установку Docker, запуск контейнера Consul, настройку хранилища KV, сохранение данных с помощью томов Docker и очистку среды. Выполнив эти шаги, вы теперь можете использовать Consul для динамического управления данными конфигурации в ваших распределённых системах, используя возможности Docker для простого развертывания и управления.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может понравиться