web-dev-qa-db-fra.com

comment configurer rabbitmq de base sur kubernetes

J'ai besoin de configurer une instance mq de lapin de base (pas de configuration de cluster) sans exigences de persistance ou de sécurité sur un cluster kubernetes.

Ce dont j'ai besoin:

Pod mq de lapin unique fonctionnant comme un ensemble avec état avec des répliques = 1, et atteignez-le de l'intérieur et de l'extérieur du cluster via une URL spécifique (port amgp et port d'interface de gestion)

Ce dont je n'ai pas besoin:

  • persistance
  • sécurité
  • configuration du cluster

Les graphiques de barre que j'ai trouvés jusqu'à présent concernent tous les configurations de production avec le clustering, la persistance, etc., mais je n'ai pas besoin de ce genre de choses car j'utiliserai l'instance uniquement pour les tests

Voici ce que j'ai jusqu'à présent:

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
6
Martin

Utilisez ce fichier StatefulSet yaml pour l'instance rabbitmq de base:

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

2
Hardeep

La bonne façon de le faire est d'installer rabbitmq via un helm-chart dédié ( stable/rabbitmq ) avec helm (gestionnaire de paquets Kubernetes). La raison principale en est que cette méthode est minutieusement testée et vérifiée par la communauté open source.

Si vous souhaitez prendre un raccourci, veuillez vous référer à la tâche suivante sur le site officiel de Kubernetes: Démarrage d'un service de file d'attente de messages (rabbitmq). Vous y trouverez des liens vers tous les fichiers manifestes nécessaires.

1
Nepomucen

Je pense que la façon la plus simple de le faire est d'utiliser Helm :

helm install stable/rabbitmq

Ensuite, lisez simplement les instructions dans les notes de sortie du tableau :)

0
CoderMan

Si vous n'avez besoin que d'une réplique et persistante. Vous pouvez utiliser un déploiement de pod simple plutôt que des mailles. Veuillez vous référer au document sts

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

Modifiez les ports de conteneur appropriés et créez le module.

kubectl create -f rabbitmq.yml

Exposez le service en tant que NodePort.

kubectl expose po rabbitmq --port 15672

Maintenant, vous pouvez y accéder en externe via

NodesIP: NodePort

et en interne en utilisant,

[svc]. [espace de noms] .svc

0
hariK