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:
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
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
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.
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 :)
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