RabbitMQ в качестве весенней облачной шины в Kubernetes для приложений Spring Boot - PullRequest
0 голосов
/ 30 апреля 2018

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

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

Ответы [ 2 ]

0 голосов

Если вы установили 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
0 голосов
/ 01 мая 2018

Это зависит от того, что вы хотите сделать и какие инструменты у вас есть. Я полагаю, что ваша текущая настройка очень похожа на описанную в 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 / s выйдет из строя, вы потеряете данные сообщения. Настойчивость эфемерна.

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

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

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

...