как настроить базовый rabbitmq на кубернетах

Мне нужно настроить базовый экземпляр Rabbit mq (без настройки кластера) без требований к постоянству или безопасности в кластере kubernetes.

Что мне нужно:

Один модуль кролика mq, работающий как stateful set с репликами = 1, и доступ к нему изнутри и вне кластера через определенный URL-адрес (порт amgp и порт интерфейса управления)

Что мне не нужно:

  • упорство
  • безопасность
  • настройка кластера

Все диаграммы штурвала, которые я нашел до сих пор, относятся к производственным настройкам с кластеризацией, постоянством и т. Д., Но мне это не нужно, так как я буду использовать экземпляр только для тестирования.

Вот что у меня есть на данный момент:

apiVersion: v1
kind: Service
metadata:
  name: rs-rmq-mgt
spec:
  selector:
    app: rs-rmq
  ports:
  - protocol: TCP
    port: 1337
    targetPort: 15672
  type: NodePort
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: rs-rmq
spec:
  selector:
    matchLabels:
      app: rs-rmq
  serviceName: "rs-rmq"
  replicas: 1
  template:
    metadata:
      labels:
        app: rs-rmq
    spec:
      containers:
      - name: rs-rmq
        image: rabbitmq:management
        ports:
        - containerPort: 25672
        - containerPort: 5672
        - containerPort: 4369
        - containerPort: 15672

person Martin    schedule 22.05.2019    source источник


Ответы (4)


Если вам не нужно больше реплики и постоянного файла. Вы можете пойти с простым развертыванием pod, а не sts. См. документ sts

kubectl run rabbitmq --image=rabbitmq:management --expose --port=15672 --restart=Never
--dry-run -o yaml > rabbitmq.yml

Отредактируйте соответствующие порты контейнера и создайте модуль.

kubectl create -f rabbitmq.yml

Выставьте службу как NodePort.

kubectl expose po rabbitmq --port 15672

Теперь вы можете получить к нему доступ извне через

NodesIP: NodePort

и внутри, используя,

[svc]. [пространство имен] .svc

person hariK    schedule 22.05.2019

Используйте этот StatefulSet yaml-файл для базового экземпляра rabbitmq:

apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: rabbitmq
spec:
  replicas: 1
  serviceName: rabbitmq
  selector:
    matchLabels:
      app: rabbitmq
  template:
    metadata:
      labels:
        app: rabbitmq
    spec:
      containers:
      - name: rabbitmq
        image: rabbitmq:3-management
        env:
        - name: "RABBITMQ_ERLANG_COOKIE"
          value: "1WqgH8N2v1qDBDZDbNy8Bg9IkPWLEpu79m6q+0t36lQ="
        volumeMounts:
        - mountPath: /var/lib/rabbitmq
          name: rabbitmq-data
      volumes:
        - name: rabbitmq-data
          hostPath:
            path: /data/rabbitmq
            type: DirectoryOrCreate

person Hardeep    schedule 08.10.2019

Правильный способ сделать это - установить rabbitmq через выделенную helm-диаграмму (стабильный / rabbitmq) с помощью helm (менеджер пакетов Kubernetes). Основная причина этого: этот способ тщательно протестирован и проверен сообществом open source.

Если вы хотите воспользоваться ярлыком, обратитесь к следующей задаче с официального сайта Kubernetes: Запуск службы очереди сообщений (rabbitmq). Там вы найдете ссылки на все необходимые файлы манифеста.

person Nepomucen    schedule 22.05.2019

Я думаю, что самый простой способ сделать это - использовать Helm:

helm install stable/rabbitmq

Тогда просто прочтите инструкции в примечаниях к выводу из диаграммы :)

person CoderMan    schedule 18.11.2019