Узнайте, как начать работу с Docker на Google Cloud Platform

Kubernetes может быть лучшим выбором при развертывании тяжелых рабочих нагрузок на Google Cloud Platform. Однако Docker Swarm всегда был довольно популярен среди разработчиков, которые предпочитали быстрое развертывание и простоту, а также среди операторов, которые учатся чувствовать себя комфортно с оркестрованной средой.

В этом посте мы рассмотрим, как развернуть кластер Docker Swarm на GCP с помощью Terraform с нуля. Сделаем это!

Начать

Для начала войдите в свою консоль Google Cloud Platform и создайте закрытый ключ сервисной учетной записи из IAM:

Загрузите файл JSON и сохраните его в защищенной папке.

Для простоты я разделил компоненты кластера Swarm на несколько файлов шаблонов - каждый файл отвечает за создание определенного ресурса Google Compute.

1. Настройте менеджеров роя

В этом примере я определил менеджеры Docker Swarm на основе образа CoreOS:

2. Настройте своих рабочих роя.

Точно так же набор рабочих процессов Swarm на основе образа CoreOS, и я использовал функцию зависимостей ресурсов Terraform, чтобы убедиться, что менеджеры Swarm развернуты. первый. Обратите внимание на использование ключевого слова depends_on:

3. Определите свои сетевые правила.

Кроме того, я определил сетевой интерфейс со списком правил брандмауэра, который разрешает входящий трафик для управления кластером, связь с синхронизацией raft, сетевой трафик наложения докеров и ssh из любого места:

4. Автоматизируйте инвентарь с помощью Terraform.

Чтобы вывести автоматизацию на новый уровень, давайте воспользуемся источником данных Terraform template_file для создания динамического инвентаря Ansible из файла состояния Terraform:

Файл шаблона имеет следующий формат, и он будет заменен IP-адресами менеджеров и рабочих Swarm во время выполнения:

Наконец, давайте определим Google Cloud в качестве поставщика по умолчанию:

5. Настройте роли Ansible для подготовки экземпляров.

После определения шаблонов мы будем использовать Ansible, чтобы подготовить наши экземпляры и превратить их в кластер Swarm. Следовательно, я создал 3 роли Ansible:

  • python: как следует из названия, он установит Python на машину. CoreOS поставляется только с основами, это минимальный дистрибутив Linux, в котором нет ничего, кроме инструментов, ориентированных на запуск контейнеров.
  • swarm-init: выполните команду docker swarm init в первом диспетчере и сохраните токены присоединения к рою.
  • swarm-join: присоединить узел к кластеру, используя ранее сгенерированный токен.

К настоящему времени ваш основной сценарий будет выглядеть примерно так:

6. Проверьте свою конфигурацию.

Чтобы проверить это, откройте новый сеанс терминала и введите команду terraform init, чтобы загрузить поставщика Google:

Создайте план выполнения (пробный прогон) с помощью команды terraform plan. Он показывает вам то, что будет создано заранее, что хорошо для отладки и проверки того, что вы не делаете ничего плохого, как показано на следующем снимке экрана:

Вы сможете изучить план выполнения Terraform, прежде чем развернуть его в GCP. Когда будете готовы, примените изменения, введя команду terraform apply.

Будет отображен следующий результат (некоторые части были обрезаны для краткости):

Если вы вернетесь на панель мониторинга Compute Engine, ваши экземпляры должны быть успешно созданы:

7. Создайте кластер Swarm с помощью Ansible.

Теперь наши экземпляры созданы, нам нужно превратить их в кластер Swarm с помощью Ansible. Выполните следующую команду:

ansible-playbook -i inventory main.yml

Затем подключитесь по SSH к экземпляру менеджера, используя его общедоступный IP-адрес:

Если вы запустите docker node ls, вы получите список узлов в рое:

Разверните службу визуализатора с помощью следующей команды:

8. Обновите свои сетевые правила.

Служба предоставляется через порт 8080 экземпляра. Следовательно, нам нужно разрешить входящий трафик на этот порт, вы можете использовать Terraform для обновления существующих правил брандмауэра:

Запустите terraform apply еще раз, чтобы создать новое правило входа, оно обнаружит изменения и попросит вас подтвердить их:

Если вы укажете в любимом браузере свой http: // instance_ip: 8080, отобразится следующая панель, которая подтверждает, что наш кластер полностью настроен:

И это все, что нужно! Посмотрите, как настраивается кластер Swarm в действии ниже:



Будьте на связи!

В следующем посте мы увидим, как мы можем продвинуться дальше, создав готовый к работе кластер Swarm на GCP внутри VPC, и как подготовить менеджеров и работников Swarm по запросу с использованием групп экземпляров в зависимости от увеличения или уменьшения нагрузки.

Мы также узнаем, как запечь образ машины CoreOS с Python, предварительно установленным вместе с Packer, и как использовать Terraform и Jenkins для автоматизации развертывания инфраструктуры!