Введение
Rancher — это система, которая работает над Kubernetes и позволяет работать с несколькими кластерами через одну точку входа. Rancher помогает оптимизировать развёртывание кластеров в разных средах: bare-metal сервер (выделенный, железный), частные облака, публичнык облака и объединяет кластеры с помощью единой аутентификацией, контролем доступа и политик безопасности.
Каким бы образом не был создан кластер и гд бы он не находился, Rancher предоставляет доступ ко всем кластерам через одну панель управления.
Задачи
-
Разметка ресурсов:
-
3 служебные ноды (etcd, control panel)
-
4 рабочие ноды (worker)
-
1 виртуальная машина внутри нового кластера для создания туннеля
-
-
Настроить связь между сетями:
-
Первая сеть: внутренняя сеть с кластером Rancher и управляющим Rancher server
-
Вторая сеть: внешняя сеть с кластером Rancher на bare-metal сервере
-
-
Добавить сервер Nexus для хранения артефактов Helm и Docker
Установка VMware
Дано: выделенный сервер с характеристиками: 2 x Xeon Gold 6240R по 24 ядра каждый, ОЗУ 320 ГБ DDR4, 4 x 480 ГБ SSD.
Сделали на сервере RAID10 и установили VMware vSphere Hypervisor 7 License. Это бесплатная версия с ограничением до 8 ядер на каждую ВМ.
Установка и настройка виртуальных машин
|
# |
Name |
CPU |
RAM. gb |
HDD, gb |
Private ip |
Public ip |
|
1 |
vm-firewall |
1 |
4 |
16 |
10.21.0.1 |
8.10.7.2 |
|
2 |
vm-rch-node-1 |
8 |
32 |
60 |
10.21.0.11 |
|
|
3 |
vm-rch-node-2 |
8 |
32 |
60 |
10.21.0.12 |
|
|
4 |
vm-rch-node-3 |
8 |
32 |
60 |
10.21.0.13 |
|
|
5 |
vm-rch-node-4 |
8 |
32 |
60 |
10.21.0.14 |
|
|
6 |
vm-rch-etcd-1 |
2 |
8 |
20 |
10.21.0.15 |
|
|
7 |
vm-rch-etcd-2 |
2 |
8 |
20 |
10.21.0.16 |
|
|
8 |
vm-rch-etcd-3 |
2 |
8 |
20 |
10.21.0.17 |
|
|
9 |
vm-nexus |
4 |
16 |
200 |
10.21.0.100 |
8.10.7.2:8081 |
На каждой ВМ установлен дистрибутив Ubuntu Server 18.
На каждой ВМ для кластера (кроме vm-nexus) выполняем команды для установки docker:
|
|
И выключаем swap:
|
в файле /etc/fstab удалить строку отвечающую за swap-файлПлюс удалить файл, который отвечает за swap: /swap |
Архитектура сети
Ip-адреса на всех ВМ прописаны вручную. Настройки сети и маршрутов в каждой ВМ хранятся в файле по адресу: /etc/netplan/00-installer-config.yaml
Текущий кластер находится в сети 10.1.0.0/16
Для внутренней локальной сети нового кластера используется диапазон адресов: 10.21.0.0/16
Машина vm-firewall имеет два сетевых интерфейса:
-
ens160. К этому интерфейсу прикреплён «белый» адрес: 8.10.7.2, который выдал провайдер. Через этот адрес происходит соединение с точкой входа трафика текущего кластера и создание туннеля.
-
ens192. Интерфейс для внутренней сети нового кластера. Он выступает в роли шлюза для всех ВМ внутри сети нового кластера.
Настройки сети на vm-firewall:
|
|
Настройки сети на любой другой ВМ:
|
|
После правки конфигурационного файла службы netplan необходимо проверить синтаксис:
|
|
И применить настройки:
|
|
После этого необходимо проверить как применились настройки ip-адреса:
|
|
И как применились настройки маршрутов:
|
|
Настройка туннеля между текущим кластером и новым кластером
Переменные:
-
19.4.15.14 — белый ip-адрес на точке текущего кластера, который служит для связи с новым кластером
-
8.10.7.2 — белый ip-адрес устанавливается на vm-firewall и служит точкой, через которую создаётся туннель и будет происходить связь с текущим кластером
Для туннеля выбрана технология IPsec. Настройки производятся на ВМ vm-firewall.
Со стороны нашей внутренней сети текущего кластера настраиваем точку входа на файерволе и сохраняем файл с настройками 1-ой и 2-ой фазы для поднятия туннеля.
Установка пакетов:
|
|
В системе устанавливаются два компонента:
-
Демона racoon для управления туннелем ISAKMP.
-
Утилиты setkey для управления SA-туннелей с данными.
Начнем с первого. Racoon отвечает за параметры авторизации туннелей в рамках IKE. Это демон, он настраивается одним конфигурационным файлом (/etc/racoon/racoon.conf), запускается обычным init-скриптом (/etc/init.d/racoon <start|stop|restart>):
В блоке remote указываются настройки 1-й фазы
В блоке sainfo указываются настройки 2-й фазы
|
|
В файле psk.txt указываем ключ, который задали на точке входа со стороны сети текущего кластера:
|
|
Дальше займемся утилитой setkey. Она тоже запускается как демон (/etc/init.d/setkey <start|stop|restart>), но по факту она выполняет скрипт /etc/ipsec-tools.conf. Как говорилось ранее, она уже задает создает туннели для пользовательского трафика. А именно задает SA и SP для них:
|
root@vm-firewall:~# cat /etc/ipsec-tools.conf # NOTE: Do not use this file if you use racoon with racoon-tool ## Some sample SPDs for use racoon |
Перезапускаем сервисы в этой последовательности:
|
|
Проверка работоспособности
Не забывайте, туннель поднимется только тогда, когда в него пойдет трафик. Надо запустить пинг до назначения. Запускаем пинг с ноды 10.21.0.11 до ноды текущего кластера (10.1.1.13):
|
|
С небольшой задержкой должны быть ответы с обратной стороны (если конечно ICMP нигде не закрыт на участке).
Проверяем настройку маршрутов на той же ноде:
|
|
На vm-firewall проверяем поднялся ли ISAKMP-туннель:
|
|
Также мы можем посмотреть создались ли туннели с пользовательскими данными с помощью команд racoonctl show-sa esp или setket -D:
|
|
Если туннель не устанавливается, то необходимо в файле /etc/racoon/racoon.conf изменить уровень логов с log notify до log debug2 и перезагрузить сервисы:
|
|
После этого мы увидим подробные логи в /var/log/syslog и по команде racoon -F
Внимательно читаем man racoon.conf и примеры в /usr/share/doc/racoon/
После дебага не забудьте вернуть уровень логов на прежнее место.
Установка и настройка Nexus
Переходим на машину, где надо установить Nexus и устанавливаем его по инструкции: https://help.sonatype.com/repomanager3/installation
Проверяем, что Nexus отвечает на порту 8081:
|
|
Далее настройки производятся на ВМ vm-firewall.
Устанавливаем пакет для возможности сохранять/восстанавливать iptables:
|
|
Настраиваем возможность пересылки пакетов (IP forwarding):
Открываем файл sysctl.conf:
|
|
Находим в файле и убираем комментарий со строки:
|
|
Сохраняем, выходим из файла и перезагружаем машину командой reboot
Проверяем что настройка применилась:
|
|
Добавляем правило в iptables для возможности пересылки пакетов:
|
|
Проверяем что правило добавилось:
|
|
Запрещаем подключение к 22 порту (по SSH) для всех, но разрешаем подключаться из сети текущего кластера (10.1.0.0):
|
|
Необходимо подключаться к веб-интерфейсу Nexus. Так как он установлен на внутренней машине 10.21.0.100, то необходимо сделать возможность подключаться к нему с публичного адреса 8.10.7.2. Для этого делаем правило на iptables, которое пробрасываем порт 8081 с 10.21.0.100 где запущен Nexus на порт 8081. Таким образом веб-интерфейс Nexus будет доступен по адресу: 8.10.7.2:8081
|
|
Сохранение iptables
После того как мы добавили новые правила (кстати они применяются сразу и не требуют перезагрузки) надо правила сохранить, чтобы после перезагрузки машины они применялись.
Для этого выполняем команду:
|
|
Также можно просто посмотреть какие правила сохранятся без записи в файл:
|
|
Отладка iptables
Если надо удалить все правила iptables:
|
|
Восстановление правил из файла:
|
|
Автор статьи https://www.facebook.com/ymalov/
ссылка на оригинал статьи https://habr.com/ru/articles/551458/
Добавить комментарий