175 lines
12 KiB
YAML
175 lines
12 KiB
YAML
name: rabbitmq
|
|
service_id: 93
|
|
service_display_name: RabbitMQ
|
|
service_short_name: rabbitmq
|
|
service_man: '# Инструкция по развертыванию RabbitMQ через платформу<br/><br/>---<br/>## 1. Общая информация<br/>RabbitMQ — это брокер сообщений с открытым исходным кодом, который обеспечивает надёжную
|
|
доставку сообщений между приложениями.<br/>Позволяет надёжно передавать сообщения между сервисами и системами, интегрироваться с внешними решениями и использовать как внутренние, так и защищённые TLS-подключения.
|
|
Развёртывание полностью автоматизировано платформой.<br/><br/>## Доступные операции<br/>- **create** — Создание кластера<br/>- **modify** — Изменение параметров кластера<br/>- **delete** — Удаление
|
|
кластера<br/>- **suspend** — Остановка кластера<br/>- **resume** — Запуск кластера<br/><br/><br/>---<br/>## 2. Параметры развертывания кластера<br/>Ниже перечислены параметры, которые необходимо
|
|
указать при создании ресурса RabbitMQ:<br/><br/>* **Платформа для развертывания:**<br/> Платформа для развертывания (среда, в которой будет развернут кластер). Пример: `k8s-3.ext.nubes.ru`.<br/><br/>*
|
|
**Количество узлов в сети:**<br/> Количество реплик в кластере RabbitMQ. При значении больше 1 создаётся кластер с репликацией для обеспечения высокой доступности.<br/> Пример: `1` (single node) или
|
|
`3` (кластер с репликацией)<br/><br/>* **Квота (megabyte) памяти пода:**<br/> Квота памяти пода в мегабайтах. Пример: `2048`<br/><br/>* **Квота (millicore) ядра пода:**<br/> Квота CPU пода в миликорах
|
|
(1000 mCPU = 1 vCPU). Пример: `1000`<br/><br/>* **Размер (gigabyte) диска для базы данных:**<br/> Размер диска для хранения данных RabbitMQ в гигабайтах. Пример: `50`<br/><br/>* **Выделяет внешний IP
|
|
для доступа к master:**<br/> Флаг, определяющий, нужно ли выделять внешний IP для доступа к master-узлу. При включении создаётся Service типа LoadBalancer и настраивается VIP на порту 5672.<br/> Пример:
|
|
`true` или `false`<br/><br/>* **Имя ipSpace для публикации внешнего IP master:**<br/> Если включен предыдущий параметр, то поле необходимо заполнить. Пример: `internet-no-antiddos-v1`<br/><br/><br/>---<br/>##
|
|
3. Модификация кластера<br/>Операция **modify** позволяет изменить параметры существующего кластера RabbitMQ.<br/><br/>**Изменяемые параметры:**<br/>* **Квота (megabyte) памяти пода** — можно увеличить
|
|
или уменьшить<br/>* **Квота (millicore) ядра пода** — можно увеличить или уменьшить<br/>* **Размер (gigabyte) диска для базы данных** — можно только увеличить (уменьшение не поддерживается)<br/>* **Количество
|
|
узлов в сети** — можно только увеличить (уменьшение не поддерживается)<br/>* **Выделяет внешний IP для доступа к master** — можно включить или выключить<br/>* **Имя ipSpace для публикации внешнего IP
|
|
master** — можно изменить при включенном внешнем IP<br/><br/>**Ограничения:**<br/>* Уменьшение размера диска не поддерживается<br/>* Уменьшение количества реплик не поддерживается<br/><br/>---<br/>##
|
|
4. Выходные параметры<br/>После успешного развертывания ресурса RabbitMQ платформа возвращает ряд параметров в разделе "Поля состояния (сгенерированные значения)":<br/><br/>**clusterDomain**<br/>Домен
|
|
кластера Kubernetes, в котором развернут RabbitMQ.<br/>Пример: `cluster.local`<br/><br/>**inernalConnect**<br/>Внутренние эндпоинты для подключения к кластеру RabbitMQ из других сервисов, развернутых
|
|
внутри той же сети.<br/>Содержит:<br/>* **master** — FQDN для подключения к кластеру. Пример: `rabbitmqk8s.{namespace}.svc.{clusterDomain}`<br/><br/>**externalConnect**<br/>Внешние эндпоинты для подключения
|
|
к кластеру RabbitMQ извне.<br/>Содержит объекты с полями:<br/>* **admin** — доступ к веб-интерфейсу управления:<br/> * `fqdn` — полное доменное имя для веб-интерфейса. Пример: `admin.{namespace}.{domain}`<br/> *
|
|
`ip` — IP-адрес<br/>* **master** — доступ к AMQP протоколу (если включен внешний IP):<br/> * `fqdn` — полное доменное имя для AMQP. Пример: `write.{namespace}.{domain}`<br/> * `ip` — IP-адрес<br/><br/>**monitoring**<br/>Информация
|
|
о дашбордах мониторинга:<br/>* **allDashboards** — URL для доступа ко всем дашбордам Grafana<br/><br/>Для подключения используются следующие порты:<br/><br/>* **5672** — AMQP протокол (внутренний и внешний
|
|
доступ, если включен внешний IP)<br/>* **15672** — веб-интерфейс управления (доступен через Ingress по HTTPS)<br/><br/>**Учётные данные**<br/>Данные для подключения к RabbitMQ доступны в разделе "Учётные
|
|
данные":<br/>* **adminUser** — имя пользователя администратора<br/>* **adminPass** — пароль администратора<br/><br/><br/>---<br/>## 5. Примеры подключения через консоль (rabbitmqadmin)<br/><br/>### Работа
|
|
с очередями через rabbitmqadmin<br/><br/>Для работы с RabbitMQ через консоль используется утилита `rabbitmqadmin`. Установите её или используйте образ с предустановленной утилитой.<br/><br/>Задайте переменные
|
|
окружения с учётными данными:<br/><br/>```bash<br/>export RABBITMQ_USERNAME=<adminUser><br/>export RABBITMQ_PASSWORD=<adminPass><br/>export RABBIT_HOST=<host><br/>```<br/><br/>Где:<br/>* `<adminUser>`
|
|
и `<adminPass>` — учётные данные из раздела "Учётные данные"<br/>* `<host>` — адрес для подключения:<br/> * Для внешнего подключения: `externalConnect.admin.fqdn` или `externalConnect.master.fqdn`<br/><br/>**Создание
|
|
очереди:**<br/><br/>```bash<br/>rabbitmqadmin \<br/> -H "$RABBIT_HOST" -P 15672 \<br/> -u "$RABBITMQ_USERNAME" -p "$RABBITMQ_PASSWORD" \<br/> declare queue name=healthcheck durable=false<br/>```<br/><br/>**Листинг
|
|
очередей:**<br/><br/>```bash<br/>rabbitmqadmin \<br/> -H "$RABBIT_HOST" -P 15672 \<br/> -u "$RABBITMQ_USERNAME" -p "$RABBITMQ_PASSWORD" \<br/> list queues<br/>```<br/><br/>**Отправка сообщения:**<br/><br/>```bash<br/>rabbitmqadmin
|
|
\<br/> -H "$RABBIT_HOST" -P 15672 \<br/> -u "$RABBITMQ_USERNAME" -p "$RABBITMQ_PASSWORD" \<br/> publish exchange=amq.default routing_key=healthcheck payload="ping-$(date +%s)"<br/>```<br/><br/>**Чтение
|
|
сообщения:**<br/><br/>```bash<br/>rabbitmqadmin \<br/> -H "$RABBIT_HOST" -P 15672 \<br/> -u "$RABBITMQ_USERNAME" -p "$RABBITMQ_PASSWORD" \<br/> get queue=healthcheck ackmode=ack_requeue_false<br/>```<br/><br/>---<br/>##
|
|
6. Дополнительная информация<br/>Для подключения к кластеру RabbitMQ используйте полученные эндпоинты из раздела "Поля состояния (сгенерированные значения)" и учётные данные из раздела "Учётные данные".<br/><br/>Веб-интерфейс
|
|
управления доступен по адресу, указанному в параметре `externalConnect.admin.fqdn` через HTTPS.<br/><br/>Для внутреннего подключения используйте адрес из `inernalConnect.master` на порту 5672.<br/><br/>---'
|
|
lifecycle:
|
|
suspendOnDestroyDefault: true
|
|
adoptExistingOnCreateDefault: false
|
|
operations:
|
|
- svcOperationId: 38
|
|
operation: create
|
|
kind: instance
|
|
action: create
|
|
- svcOperationId: 39
|
|
operation: delete
|
|
kind: instance
|
|
action: delete
|
|
- svcOperationId: 106
|
|
operation: modify
|
|
kind: instance
|
|
action: modify
|
|
- svcOperationId: 117
|
|
operation: resume
|
|
kind: instance
|
|
action: resume
|
|
- svcOperationId: 116
|
|
operation: suspend
|
|
kind: instance
|
|
action: suspend
|
|
stateOut: {}
|
|
cfsParams:
|
|
- svcOperationCfsParamId: 116
|
|
svcOperationCfsParam: resourceCPU
|
|
dataType: integer > 0
|
|
isRequired: true
|
|
defaultValue: '1000'
|
|
isModifiable: true
|
|
- svcOperationCfsParamId: 117
|
|
svcOperationCfsParam: resourceMemory
|
|
dataType: integer > 0
|
|
isRequired: true
|
|
defaultValue: '1124'
|
|
isModifiable: true
|
|
- svcOperationCfsParamId: 118
|
|
svcOperationCfsParam: resourceDisk
|
|
dataType: integer > 0
|
|
isRequired: true
|
|
defaultValue: '30'
|
|
isModifiable: true
|
|
- svcOperationCfsParamId: 119
|
|
svcOperationCfsParam: resourceRealm
|
|
dataType: string
|
|
isRequired: true
|
|
defaultValue: k8s-4-ext-nubes-ru
|
|
isModifiable: false
|
|
valueList:
|
|
- k8s-4-ext-nubes-ru
|
|
- svcOperationCfsParamId: 224
|
|
svcOperationCfsParam: resourceInstances
|
|
dataType: integer > 0
|
|
isRequired: true
|
|
defaultValue: '1'
|
|
isModifiable: true
|
|
- svcOperationCfsParamId: 225
|
|
svcOperationCfsParam: needExternalAddressMaster
|
|
dataType: boolean
|
|
isRequired: true
|
|
defaultValue: 'false'
|
|
isModifiable: true
|
|
valueList:
|
|
- 'false'
|
|
- 'true'
|
|
- svcOperationCfsParamId: 543
|
|
svcOperationCfsParam: ipSpaceNameMaster
|
|
dataType: string
|
|
isRequired: false
|
|
defaultValue: ''
|
|
isModifiable: true
|
|
- svcOperationCfsParamId: 304
|
|
svcOperationCfsParam: resourceCPU
|
|
dataType: integer > 0
|
|
isRequired: true
|
|
defaultValue: ''
|
|
isModifiable: true
|
|
- svcOperationCfsParamId: 305
|
|
svcOperationCfsParam: resourceMemory
|
|
dataType: integer > 0
|
|
isRequired: true
|
|
defaultValue: ''
|
|
isModifiable: true
|
|
- svcOperationCfsParamId: 306
|
|
svcOperationCfsParam: resourceDisk
|
|
dataType: integer > 0
|
|
isRequired: true
|
|
defaultValue: ''
|
|
isModifiable: true
|
|
- svcOperationCfsParamId: 307
|
|
svcOperationCfsParam: resourceInstances
|
|
dataType: integer > 0
|
|
isRequired: true
|
|
defaultValue: ''
|
|
isModifiable: true
|
|
- svcOperationCfsParamId: 308
|
|
svcOperationCfsParam: needExternalAddressMaster
|
|
dataType: boolean
|
|
isRequired: true
|
|
defaultValue: ''
|
|
isModifiable: true
|
|
valueList:
|
|
- 'false'
|
|
- 'true'
|
|
- svcOperationCfsParamId: 545
|
|
svcOperationCfsParam: ipSpaceNameMaster
|
|
dataType: string
|
|
isRequired: false
|
|
defaultValue: ''
|
|
isModifiable: true
|
|
cfsParamsByOp:
|
|
38:
|
|
- 116
|
|
- 117
|
|
- 118
|
|
- 119
|
|
- 224
|
|
- 225
|
|
- 543
|
|
39: []
|
|
106:
|
|
- 304
|
|
- 305
|
|
- 306
|
|
- 307
|
|
- 308
|
|
- 545
|
|
117: []
|
|
116: []
|
|
stateParams:
|
|
resourceCPU: '1000'
|
|
resourceMemory: '1124'
|
|
resourceDisk: '30'
|
|
resourceRealm: k8s-4-ext-nubes-ru
|
|
resourceInstances: '1'
|
|
needExternalAddressMaster: 'false'
|
|
ipSpaceNameMaster: ''
|