Подготовка среды к установке⚓︎
Установка Kubernetes⚓︎
Предлагается использовать один из трёх вариантов установки Kubernetes:
- k3s
- kubeadm
- kubespray
k3s⚓︎
Для небольших стендов с малым количеством модулей подойдёт k3s
- небольшой дистрибутив Kubernetes, ориентированный на установку на одной машине.
Перед установкой k3s
рекомендуется отключить фаервол или открыть все требуемые порты.
Для установки k3s
достаточно ввести команду:
Скрипт автоматически установит 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...