Kubernetes + RabbitMQ

Kubernetes + RabbitMQ

Como criar uma instância RabbitMQ dentro do cluster Kubernetes.

Nessa nota estão os passos que segui para conseguir isso, lembrando que rodei tudo isso em ambiente local e com o único objetivo de estudar as ferramentas e suas complexidades.

Instalação do cluster operator

  • Instalação de toda estrutura necessária para utilizar o RabbitMQ (services, imagens...)
 kubectl apply -f "https://github.com/rabbitmq/cluster-operator/releases/latest/download/cluster-operator.yml"

Instalação do plugin krew

  • krew é utilizado para instalar plugins no cluster para facilitar a interação através de plugins
(
  set -x; cd "$(mktemp -d)" &&
  OS="$(uname | tr '[:upper:]' '[:lower:]')" &&
  ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&
  KREW="krew-${OS}_${ARCH}" &&
  curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/latest/download/${KREW}.tar.gz" &&
  tar zxvf "${KREW}.tar.gz" &&
  ./"${KREW}" install krew
)

É necessário salvar no arquivo .zshrc

nano .zshrc
  • No final do arquivo adicionamos a seguinte linha:
export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"

Instalação do plugin rabbitmq

 kubectl krew install rabbitmq

Utilizando o plugin rabbitmq

  • Este plugin fornece uma interface para operar a instância do RabbitMQ instalada no cluster
 kubectl rabbitmq create <nome_da_instancia>
kubectl rabbitmq get <nome_da_instancia>
 kubectl rabbitmq delete <nome_da_instancia>

Obtendo os dados de acesso

kubectl rabbitmq secrets <nome_da_instancia>

user: <user>
password: <password>

Acessando a Manager UI

 kubectl rabbitmq manage <nome_da_instancia>
  • Será solicitado os dados de login obtidos com o comando secrets

Para acessar via APP

  • Necessário fazer o roteamento para que consigamos acessar

  • O serviço de mensagens funciona na porta 5672

  • O serviço de UI funciona na porta 15672

 kubectl port-forward <servico> 5672:5672
 kubectl port-forward <servico> 15672:15672

Os dados que seguem foram obtidos através da documentação oficial.