Как настроить кластер CoreOS на DigitalOcean

Вступление

Если вы планируете использовать CoreOS в своей инфраструктуре, первое, что вы захотите настроить, - это кластер CoreOS. Чтобы машины CoreOS могли сформировать кластер, их экземпляры + etcd2 + должны быть подключены. В этом руководстве мы дадим пошаговые инструкции для быстрого создания кластера CoreOS с тремя узлами в DigitalOcean.

Предпосылки

Если вы не знакомы с компонентами, на которых построен CoreOS (docker, etcd2 и fleet), настоятельно рекомендуется прочитать https://www.digitalocean.com/community/tutorials/an-introduction-to-coreos-system -компоненты [Введение в компоненты системы CoreOS]. Вы захотите обратить особое внимание на раздел, который охватывает + etcd2 +, поскольку этот компонент важен для процесса обнаружения кластера.

SSH ключи

На каждом создаваемом вами сервере CoreOS должен быть установлен хотя бы один открытый ключ SSH в процессе его создания. Ключ (ы) будет установлен в файл авторизованных ключей пользователя + core, и вам потребуется соответствующий закрытый ключ (ы) для входа на сервер CoreOS.

Если у вас еще нет каких-либо ключей SSH, связанных с вашей учетной записью DigitalOcean, сделайте это сейчас, выполнив шаги 1-3 этого учебника: https://www.digitalocean.com/community/tutorials/how-to-use-ssh- keys-with-digitalocean-droplets [Как использовать ключи SSH с каплями DigitalOcean]. Затем вы захотите добавить свой закрытый ключ к вашему SSH-агенту на вашем клиентском компьютере, выполнив следующую команду:

ssh-add

Подробнее об этом шаге см. В ths this article.

Цифровой токен личного доступа

Если вы планируете использовать API DigitalOcean для создания своих машин с ОС CoreOS, см. Https://www.digitalocean.com/community/tutorials/how-to-use-the-digitalocean-api-v2#how-to-generate. -a-personal-access-token [это руководство] для получения информации о том, как создавать и использовать персональный токен доступа с разрешениями на запись.

Теперь, когда у вас есть все необходимые предпосылки, давайте приступим к созданию нашего кластера CoreOS!

Создать новый URL-адрес обнаружения

Первым этапом настройки нового кластера CoreOS является создание нового URL-адреса обнаружения, уникального адреса, в котором хранятся адреса и метаданные одноранговых CoreOS. Самый простой способ сделать это - использовать бесплатную службу обнаружения + https: // discovery.etcd.io +. Новый URL-адрес обнаружения можно создать, посетив веб-браузер https://discovery.etcd.io/new или выполнив следующую команду + curl +:

curl -w "\n" "https://discovery.etcd.io/new?size=3"

Любой метод вернет новый уникальный URL-адрес обнаружения, который выглядит примерно так (выделенная часть будет уникальным токеном):

https://discovery.etcd.io/

Вы будете использовать полученный URL-адрес обнаружения для создания нового кластера CoreOS. Тот же URL-адрес обнаружения должен быть указан в разделе + etcd2 + облачной конфигурации каждого сервера, который вы хотите добавить в конкретный кластер CoreOS.

Теперь, когда у нас есть URL-адрес обнаружения, давайте посмотрим, как создать файл + cloud-config, который его использует.

Написать файл конфигурации облака

CoreOS использует файл с именем + cloud-config +, который позволяет декларативно настраивать сетевую конфигурацию, системные модули и другие элементы уровня ОС. Этот файл написан в формате YAML, который использует отступ для обозначения иерархии данных. Файл + cloud-config + обрабатывается при загрузке машины и предоставляет способ настройки ваших машин с настройками + etcd2 +, которые позволят им обнаружить кластер, к которому они должны присоединиться.

Мы расскажем, как написать минимальный + cloud-config +, чтобы запустить и запустить работающий кластер CoreOS. Полный список элементов, которые можно настроить с помощью cloud-config, можно найти в official документацию. Они также предоставляют полезный инструмент, который может проверить синтаксис вашего файла конфигурации облака, Cloud-Config Validator.

Минимальная облачная конфигурация

Как упоминалось ранее, адреса равноправных узлов каждой машины CoreOS в кластере хранятся вместе с URL-адресом обнаружения. Поэтому каждая машина в кластере должна использовать один и тот же URL-адрес обнаружения и передавать свой собственный IP-адрес, по которому может быть достигнута служба + etcd2 +. Они указаны в + cloud-config + в разделе + etcd2 + и показаны в блоке кода ниже.

Вам также необходимо указать раздел + units +, который запустит службы + etcd2 + и + fleet +, необходимые для работающего кластера CoreOS.

Вот базовый файл + cloud-config +, который можно использовать с вашими машинами CoreOS для создания нового кластера (замените значение + discovery + на URL-адрес обнаружения, который вы создали ранее):

#cloud-config

coreos:
 etcd2:
   # generate a new token for each unique cluster from https://discovery.etcd.io/new:
   discovery: https://discovery.etcd.io/<discovery_token>
   # multi-region deployments, multi-cloud deployments, and Droplets without
   # private networking need to use $public_ipv4:
   advertise-client-urls: http://$private_ipv4:2379,http://$private_ipv4:4001
   initial-advertise-peer-urls: http://$private_ipv4:2380
   # listen on the official ports 2379, 2380 and one legacy port 4001:
   listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
   listen-peer-urls: http://$private_ipv4:2380
 fleet:
   public-ip: $private_ipv4   # used for fleetctl ssh command
 units:
   - name: etcd2.service
     command: start
   - name: fleet.service
     command: start

Этот сценарий + cloud-config + может использоваться для настройки базовой CoreOS, которая может использоваться для целей тестирования; к сожалению, это не очень безопасно. Для более серьезной настройки вы должны настроить безопасный кластер CoreOS, следуя этому руководству: https://www.digitalocean.com/community/tutorials/how-to-secure-your-coreos-cluster-with-tls-ssl -and-firewall-rules [Как защитить свой кластер CoreOS с помощью TLS / SSL и правил брандмауэра].

Создать CoreOS кластер

Теперь, когда вы знаете, из чего будет состоять ваш файл + cloud-config для каждой машины в вашем новом кластере CoreOS, давайте создадим ваш кластер CoreOS. Поскольку капли можно создавать с помощью панели управления DigitalOcean или API, мы покажем вам, как создать кластер CoreOS с использованием обоих методов.

Панель управления DigitalOcean

Сначала зайдите на DigitalOcean Control Panel, затем нажмите кнопку * Create Droplet *.

Затем выберите CoreOS в качестве дистрибутива Linux, затем выберите канал, который вы хотите использовать (стабильный, бета-версия или альфа-канал).

Затем выберите желаемый размер капли. Меньший размер подходит для базового тестирования.

Затем выберите предпочитаемый регион центра обработки данных.

Под заголовком * Выберите дополнительные параметры * выберите * Частная сеть * и * Данные пользователя *. Скопируйте и вставьте скрипт + cloud-config + в текстовое поле User Data. Это должно выглядеть примерно так:

Изображение: HTTPS: //assets.digitalocean.com/site/ControlPanel/cp-userdata.png [User-Data]

Затем выберите хотя бы один ключ SSH, который вы хотите использовать для входа в свои дроплеты.

В разделе * Завершить и создать * создайте * только три * капли и укажите их имена хостов. В нашем примере мы назовем их * coreos-01 *, * coreos-02 * и * coreos-03 *:

изображение: https: //assets.digitalocean.com/site/ControlPanel/cp-coreos-multi-create.png [Создать 3 капли]

Наконец, нажмите кнопку * Создать *, чтобы создать капли, которые сформируют ваш кластер CoreOS.

Чтобы узнать больше о процессе создания капли с помощью панели управления DigitalOcean, обратитесь к this руководство.

DigitalOcean API

Если вы используете API-интерфейс DigitalOcean для создания капель CoreOS, вы можете указать свой + cloud-config + с помощью параметра + user_data + в своем запросе POST на создание капли - просто вставьте туда весь скрипт.

Предположим, что мы хотим создать три капли по 1 ГБ с именами * coreos-01 *, * coreos-02 * и * coreos-03 * с частной сетью в центре обработки данных NYC3, используя образ стабильного канала CoreOS и Файл + cloud-config +, показанный ранее. Вот пример команды + curl +, которую вы запустите, чтобы создать ее с помощью API DigitalOcean:

curl -X POST "https://api.digitalocean.com/v2/droplets" \
     -d'{"names":["coreos-01","coreos-02","coreos-03"],"region":"nyc3","size":"1GB","private_networking":true,"image":"coreos-stable","user_data":
"#cloud-config

coreos:
 etcd2:
   # generate a new token for each unique cluster from https://discovery.etcd.io/new:
   discovery: https://discovery.etcd.io/<discovery_token>
   # multi-region deployments, multi-cloud deployments, and Droplets without
   # private networking need to use $public_ipv4:
   advertise-client-urls: http://$private_ipv4:2379,http://$private_ipv4:4001
   initial-advertise-peer-urls: http://$private_ipv4:2380
   # listen on the official ports 2379, 2380 and one legacy port 4001:
   listen-client-urls: http://0.0.0.0:2379,http://0.0.0.0:4001
   listen-peer-urls: http://$private_ipv4:2380
 fleet:
   public-ip: $private_ipv4   # used for fleetctl ssh command
 units:
   - name: etcd2.service
     command: start
   - name: fleet.service
     command: start",
     "ssh_keys":[  ]}' \
     -H "Authorization: Bearer $TOKEN" \
     -H "Content-Type: application/json"

Вы должны заменить свои идентификаторы ключей SSH или отпечатки пальцев на + <идентификаторы ключей SSH> +, и убедитесь, что для + $ TOKEN + установлено одно из ваших токенов для чтения / записи DigitalOcean Personal Access. ,

После выполнения этой команды с соответствующими заменами будет создан ваш кластер CoreOS с 3 узлами.

Для получения дополнительной информации об использовании API, пожалуйста, обратитесь к thisutorial.

Проверить кластер

Чтобы убедиться, что наш кластер из 3 компьютеров сформирован правильно, мы должны подключиться по SSH к одному из участников кластера.

Зарегистрируйтесь на компьютере * coreos-01 * как пользователь + core + через SSH и используйте опцию + -A + для пересылки вашего агента SSH. Не забудьте заменить публичный IP-адрес:

ssh -A core@

В командной строке введите команду + fleetctl +, чтобы показать всех членов кластера:

fleetctl list-machines

Вы должны увидеть список всех сетевых машин в кластере, идентифицируемых по их соответствующим IP-адресам + peer-addr +. Вот пример вывода:

MACHINE     IP      METADATA
59b2fffd... 10.131.29.141   -
853b0df3... 10.131.63.121   -
cd64a2e3... 10.131.63.120   -

Если вы видите все машины, которые вы создали, все они знают друг о друге через + etcd2 +, и ваш кластер сформирован правильно!

Добавление новых машин

Если вы хотите добавить новые машины в существующий кластер CoreOS, просто создайте новую Droplet, используя тот же + cloud-config + (и URL-адрес обнаружения). Ваш новый компьютер с CoreOS автоматически присоединится к существующему кластеру.

Если вы забыли, какой URL-адрес обнаружения вы использовали, вы можете посмотреть его на одном из участников кластера. Используйте следующую команду + grep + на одном из ваших существующих компьютеров:

grep DISCOVERY /run/systemd/system/etcd2.service.d/20-cloudinit.conf

Вы увидите строку, содержащую исходный URL-адрес обнаружения, например:

Environment="ETCD_DISCOVERY="

Заключение

Ваш базовый кластер CoreOS настроен, и теперь вы можете приступить к его тестированию! Если вы хотите настроить безопасный кластер CoreOS, следуйте этому руководству: https://www.digitalocean.com/community/tutorials/how-to-secure-your-coreos-cluster-with-tls-ssl-and- правила межсетевого экрана [Как защитить свой кластер CoreOS с помощью TLS / SSL и правил межсетевого экрана].

В остальных руководствах этой серии вы узнаете больше о CoreOS и о том, как использовать Docker-контейнеры и обнаружение служб в кластере CoreOS.

Related