Thank you for reading this post, don't forget to subscribe!
kubectl create namespace rabbitmq
helm pull stable/rabbitmq
генерируем пароль админки
echo -n "rlvjD8QZUB" | base64
cmx2akQ4UVpVQg==
создаём секрет
cat rabbitmq/secret-admin-password.yaml
1 2 3 4 5 6 7 8 |
apiVersion: v1 kind: Secret metadata: name: secret-admin-password namespace: rabbitmq type: Opaque data: rabbitmq-password: cmx2akQ4UVpVQg== |
Применяем
kubectl apply -f rabbitmq/secret-admin-password.yaml
правим наш helm
vim rabbitmq/values.yaml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
rabbitmq: username: admin password: existingPasswordSecret: secret-admin-password clustering: address_type: hostname k8s_domain: test.local rebalance: false configuration: |- ## Clustering cluster_formation.peer_discovery_backend = rabbit_peer_discovery_k8s cluster_formation.k8s.host = kubernetes.default.svc.test.local cluster_formation.node_cleanup.interval = 10 cluster_formation.node_cleanup.only_log_warning = true cluster_partition_handling = autoheal # queue master locator queue_master_locator=min-masters # enable guest user loopback_users.guest = false persistence: enabled: true storageClass: "nfs-storageclass" accessMode: ReadWriteOnce size: 8Gi path: /opt/bitnami/rabbitmq/var/lib/rabbitmq replicas: 2 ingress: enabled: true hostName: rabbitmq.test.local path: / serviceMonitor: enabled: true namespace: "monitoring" interval: 30s honorLabels: false release: "prometheus" |
незабываем прогнать лейблы по всем неймспейсам:
kubectl label namespace --all "prometheus=enabled"
и задаём servicemonitor в namespace monitoring (там у меня запущен мой prometheus)
Устанавливаем:
helm install rabbitmq rabbitmq/ -n rabbitmq --values rabbitmq/values.yaml
если забыл пароль то посмотреть его можно командой:
echo "Password : $(kubectl get secret --namespace rabbitmq secret-admin-password -o jsonpath="{.data.rabbitmq-password}" | base64 --decode)"
надо открыть доступ по порту для tcp 5672 для этого редактируем наш общий configmap
cat /root/ConfigMap.yml
1 2 3 4 5 6 7 8 |
apiVersion: v1 kind: ConfigMap metadata: name: tcp-services namespace: ingress-nginx data: 5050: "m-logstash-megabuilder/logstash-logstash:5044" 5672: "rabbitmq/rabbitmq:5672" |
здесь первые 5672 это указатель на порт снаружи.
первый rabbitmq - это наш namespace
второй rabbitmq - это имя нашего сервиса который висит на порту 5672
применяем:
kubectl apply -f rabbitmq/ConfigMap-for-rabbit-port.yml
далее правим сервис:
kubectl edit service -n ingress-nginx ingress-nginx
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
spec: clusterIP: 13.100.150.207 ports: - name: http port: 80 protocol: TCP targetPort: 80 - name: https port: 443 protocol: TCP targetPort: 443 - name: prometheus port: 10254 protocol: TCP targetPort: 10254 - name: proxied-tcp-5050 port: 5050 protocol: TCP targetPort: 5050 - name: rabbitmq-port-5672 port: 5672 protocol: TCP targetPort: 5672 |
kubectl edit daemonsets.apps -n ingress-nginx ingress-nginx-controller
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
ports: - containerPort: 80 hostPort: 80 name: http protocol: TCP - containerPort: 443 hostPort: 443 name: https protocol: TCP - containerPort: 5050 hostPort: 5050 name: test-5050 protocol: TCP - containerPort: 5672 hostPort: 5672 name: rabbitmq-5672 protocol: TCP |
после добавления на ingress появится пор 5672 на который можно обращаться из вне.
если необходимо обращаться изнутри кластера то можно использовать адресс:
rabbitmq-headless.rabbitmq.svc.test.local:5672