Table of Contents

Установка брокера сообщений RabbitMQ

Продукты: МоиОтчеты Корпоративный Сервер

Для установки RabbitMQ необходимо определить переменную RABBITMQ_PASSWORD, содержащую пароль. Также можно настроить размер тома для очереди брокера сообщений.

Добавление чарта и обновление helm репозитория.

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update

Создать пространство имён для RabbitMQ.

kubectl create namespace rabbitmq

Установка RabbitMQ может варьироваться от типа установки. Ниже приведены два примера - для облачного провайдера и для установки на тестовой конфигурации.

Установка на облачном хостинге

Нижеприведённый скрипт использует размер очереди 10 Гб.

export RABBITMQ_PASSWORD="<пароль для RabbitMQ>"

cat <<EOF > ./rabbitmq.yaml
rabbitmq:
  extraConfiguration: |-
    #disk_free_limit.absolute = 10GB
    management.path_prefix = /rabbit
    #management.load_definitions = /app/load_definition.json
persistence:
  enabled: true
  storageClass: hcloud-volumes
  size: 10Gi
livenessProbe:
  commandOverride:
    - sh
    - -c
    - rabbitmq-api-check "http://user:\$RABBITMQ_PASSWORD@127.0.0.1:15672/rabbit/api/healthchecks/node" '{"status":"ok"}'
readinessProbe:
  commandOverride:
    - sh
    - -c
    - rabbitmq-api-check "http://user:\$RABBITMQ_PASSWORD@127.0.0.1:15672/rabbit/api/healthchecks/node" '{"status":"ok"}'
EOF

helm upgrade \
  --install rabbitmq bitnami/rabbitmq \
  --namespace=rabbitmq \
  --values ./rabbitmq.yaml

rm ./rabbitmq.yaml

Пример минимальной установки RabbitMQ для разворачивания на тестовом кластере

Нижеприведённая конфигурация использует размер очереди 4 Гб.
Обратите внимание - данный пример является минимальным для запуска МоиОтчеты Корпоративный Сервер и описанная конфигурация томов не является отказоустойчивой.

apiVersion: v1
kind: PersistentVolume
metadata:
  namespace: "rabbitmq"
  name: pv-for-rmq
  labels:
    name: mongo-volume-1-0-0
spec:
  storageClassName: manual
  capacity:
    storage: 4Gi
  accessModes:
  - ReadWriteOnce
  hostPath:
    path: /devkube/rabbitmq
---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: "rabbitmq-pvc"
  namespace: "rabbitmq"
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: manual
  resources:
    requests:
      storage: 4Gi

Выполните kubectl apply -f <имя вышеприведённого yaml> и собственно скрипт установки RabbitMQ. Обратите внимание, что используется ранее созданный PersistentVolumeClaim.

helm upgrade \
  --namespace=rabbitmq \
  --install rabbitmq bitnami/rabbitmq  \
  --set persistence.existingClaim=rabbitmq-pvc \
  --set volumePermissions.enabled=true \
  --set ingress.tlsSecret="fr-corporate-tls" \
    | tee RabitMQ.txt


Добавление конфигурации ingress

Этот пункт необходим если вы хотите получить доступ к контрольной панели сервиса RabbitMQ извне кластера.

export SERVER_DOMAIN_NAME="<доменное имя сервера>"

cat <<EOF | kubectl apply -f -
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: fastreport.cloud-rabbitmq
  namespace: rabbitmq
  annotations:
    kubernetes.io/ingress.class: "nginx"
    nginx.ingress.kubernetes.io/rewrite-target: "/\$2"
    nginx.ingress.kubernetes.io/configuration-snippet: |
      rewrite ^(/rabbit)\$ \$1/ redirect;

spec:  
  tls:
  - hosts:
    - $SERVER_DOMAIN_NAME
    secretName: fr-corporate-tls
  rules:
  - host: $SERVER_DOMAIN_NAME
    http:
      paths:      
      - path: /rabbit
        backend:
          serviceName: rabbitmq
          servicePort: 15672
EOF

Доступ по user ********.