RabbitMQ в качестве Spring Cloud Bus в Kubernetes для приложений Spring Boot

Я разработал приложения Spring Boot. У меня есть настройки admin и RabbitMQ, а также весенняя облачная шина. Когда я обновляю конечные точки приложений, он обновляет свойства приложения.

Может кто-нибудь, пожалуйста, помогите мне, как настроить RabbitMQ в kubernetes сейчас? Я проводил исследования в определенной степени и в нескольких статьях обнаружил, что его нужно развернуть как "Statefulset", а не как "Deployment" https://notallaboutcode.blogspot.de/2017/09/rabbitmq-on-kubernetes-container.html. Я не мог понять, почему это нужно делать точно. Также может помочь любая полезная ссылка на развертывание RabbitMQ в kubernetes.

2 ответа

Решение

Это зависит от того, что вы хотите сделать и какие инструменты у вас есть. Я полагаю, что ваша текущая настройка очень похожа на описанную в http://www.baeldung.com/spring-cloud-bus. Один из подходов к переносу этого на kubernetes может заключаться в том, чтобы сначала попытаться настроить вашу систему с помощью docker-compose, а затем вы можете перенести это docker-compose на дескрипторы развертывания kubernetes.

Простой способ развернуть rabbitmq в k8s - настроить развертывание, используя образ docker rabbitmq. Примером этого является https://github.com/Activiti/activiti-cloud-examples/blob/fe732096b5a19de0ad44879a399053f6ae02b095/kubernetes/kubectl/infrastructure.yml#L17. (Обратите внимание, что этот файл радикально не отличается от файла docker-compose, так что вы можете переносить данные с одного на другой.) Но это не будут постоянные данные за пределами модулей, поэтому, если кластер должен был выйти из строя, или модуль Pod / Если вы потеряете данные сообщения. Настойчивость эфемерна.

Таким образом, чтобы иметь не эфемерное постоянство, вы могли бы вместо этого использовать StatefulSet, как в примере, на который вы указываете. Другой пример - https://wesmorgan.svbtle.com/rabbitmq-cluster-on-kubernetes-with-statefulsets

Если вы используете helm (или можете использовать helm), то вы можете использовать таблицу helm rabbitmq, которая использует StatefulSet.

Но если единственная причина, по которой вам нужна шина, - это запуск обновлений, когда происходят изменения свойств, тогда для Kubernetes есть альтернативные пути. Я предполагаю, что вам нужны горячие перезагрузки, чтобы вы могли посмотреть, используя https://github.com/fabric8io/spring-cloud-kubernetes. Или если вам нужен конфигурационный файл, специально созданный для git, вы можете посмотреть на http://fabric8.io/guide/develop/configuration.html (Если вам не нужны горячие перезагрузки или git, то вы можете рассмотреть возможность создания версий ваших конфигурационных карт и их обновления с помощью обновлений приложений, как на https://dzone.com/articles/configuring-java-apps-with-kubernetes-configmaps-a)

Если вы установили helm в своем кластере

helm install stable/rabbitmq

Это установит rabbitmqserver в ваш кластер. Следующие команды предназначены для получения пароля и файла cookie erlang. Замена prodding-wombat-rabbitmq для w / e kubernetes решает назвать модуль.

kubectl get secret --namespace default prodding-wombat-rabbitmq -o jsonpath="{.data.rabbitmq-password}" | base64 --decode

kubectl get secret --namespace default prodding-wombat-rabbitmq -o jsonpath="{.data.rabbitmq-erlang-cookie}" | base64 --decode

Для подключения к модулю:

export POD_NAME=$(kubectl get pods --namespace default -l "app=prodding-wombat-rabbitmq" -o jsonpath="{.items[0].metadata.name}")

Затем перейдите к localhost, чтобы вы могли подключиться в браузере

kubectl port-forward $POD_NAME 5672:5672 15672:15672
Другие вопросы по тегам