Вступление
Если вы планируете использовать 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.