Skip to content

Подготовка среды к установке⚓︎

Установка Kubernetes⚓︎

Предлагается использовать один из трёх вариантов установки Kubernetes:

  • k3s
  • kubeadm
  • kubespray

k3s⚓︎

Для небольших стендов с малым количеством модулей подойдёт k3s - небольшой дистрибутив Kubernetes, ориентированный на установку на одной машине.

Перед установкой k3s рекомендуется отключить фаервол или открыть все требуемые порты.

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

curl -sfL https://get.k3s.io | sh -

Скрипт автоматически установит k3s и запустит кластер Kubernetes, состоящий из одной машины.
Более подробно с процессом установки можно ознакомиться в документации k3s.

kubeadm⚓︎

Для продакшн-стендов лучше подойдёт классический вариант установки Kubernetes на несколько машин с помощью kubeadm.

Установка кластера с помощью kubeadm - многоэтапный процесс, с подробностями которого можно ознакомиться в документации Kubernetes.

kubespray⚓︎

kubespray - это Ansible-плейбук, автоматизирующий установку кластера с помощью kubeadm. Этот способ так же хорошо подходит для больших стендов, как и ручная установка с помощью kubeadm.

Для установки с помощью kubespray нужно выполнить следующие команды:

# Скачать репозиторий kubespray и перейти в его директорию
git clone https://github.com/kubernetes-sigs/kubespray.git
cd kubespray

# Скопировать пример файла инвентаря ``inventory/sample`` в ``inventory/mycluster``
cp -rfp inventory/sample inventory/mycluster

# Записать в файл инвентаря значения IP ваших машин с помощью скрипта inventory_builder
declare -a IPS=(10.10.1.3 10.10.1.4 10.10.1.5)
CONFIG_FILE=inventory/mycluster/hosts.yaml python3 contrib/inventory_builder/inventory.py ${IPS[@]}

# Проверить параметры установки (измените их, если требуется)
cat inventory/mycluster/group_vars/all/all.yml
cat inventory/mycluster/group_vars/k8s_cluster/k8s-cluster.yml

# Установить кластер Kubernetes с помощью плейбука
ansible-playbook -i inventory/mycluster/hosts.yaml  --become --become-user=root cluster.yml

Более подробно с процессом установки можно ознакомиться в документации kubespray.

Установка PostgreSQL⚓︎

Установка PostgreSQL может производиться разными способами в зависимости от операционной системы и её дистрибутива.
В большинстве дистрибутивов Linux СУБД PostgreSQL поставляется в виде пакета. Наиболее частые случаи описаны на сайте PostgreSQL. Рекомендуется устанавливать PostgreSQL именно пакетом.

Для небольших стендов и тестовых инсталляций можно воспользоваться Docker-образом postgres. Пример Docker Compose файла для запуска PostgreSQL:

---
services:
  db:
    image: postgres:15
    restart: always
    volumes:
      - ./data:/var/lib/postgresql/data
    ports:
      - 5432:5432
    environment:
      POSTGRES_USER: flowmaster
      POSTGRES_PASSWORD: flowmaster_password_change_me
      POSTGRES_DB: flowmaster

Установка RabbitMQ⚓︎

Способы установки RabbitMQ описаны на сайте RabbitMQ. Рекомендуется устанавливать RabbitMQ пакетом, однако для небольших и тестовых стендов можно воспользоваться Docker-образом.

Для больших production-стендов рекомендуется устанавливать RabbitMQ на несколько машин и конфигурировать его в кластерном режиме.

Требуется включение плагина rabbitmq_management. Для мониторинга рекомендуется включить плагин rabbitmq_prometheus. Для этого необходимо добавить строку rabbitmq_management,rabbitmq_prometheus в файл /etc/rabbitmq/enabled_plugins.

Также необходимо создать пользователя для FlowMaster с правами администратора. Для этого выполните команды:

rabbitmqctl add_user flowmaster flowmaster_password_change_me
rabbitmqctl set_user_tags flowmaster administrator
rabbitmqctl set_permissions -p / flowmaster ".*" ".*" ".*"

Установка Pulsar⚓︎

Перед установкой pulsar требуется установить Java Runtime. Для примера ниже предполагается использование пакета java-17-openjdk-headless для RHEL.

В следующем скрипте замените значение переменной JAVA_HOME на соответствующее пути к вашей инсталляции Java.

wget https://archive.apache.org/dist/pulsar/pulsar-2.10.6/apache-pulsar-2.10.6-bin.tar.gz
tar xvzf apache-pulsar-2.10.6-bin.tar.gz -C /opt

cat > /etc/systemd/system/pulsar.service << EOF
[Unit]
Description=Apache Pulsar Standalone message platform
After=network.target

[Service]
User=root
Type=simple
Environment="JAVA_HOME=/usr/lib/jvm/jre-17-openjdk/"
ExecStart=/opt/apache-pulsar-2.10.6/bin/pulsar standalone
KillSignal=SIGINT

SuccessExitStatus=130

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now pulsar

Общие рекомендации по установке сервисов⚓︎

  • Многие проблемы с сетевым взаимодействием могут быть решены путём отключения системного фаервола и SELinux.
  • В Kubernetes должен быть установлен единственный ingress-контроллер. IngressClass для модулей FlowMaster на данный момент не поддерживается.
  • under construction...