This demonstration describes how to create a RabbitMQ cluster in Openshift.
-
OpenShift Container Platform v3.6 or newer (we're using this feature).
-
This example is configured to use a
PersistentVolume
for storing cluster and message data. Thus it is a requirement that Openshift is configured to support Persistent Volumes and that there are PVs with at leastReadWriteOnce
(RWO) access available. -
This example is also using the OpenShift Applier to build and deploy RabbitMQ. As a result you'll need to have ansible installed.
The openshift-applier will create the following OpenShift objects:
- A Project named
rabbitmq
(see files/projects/projects.yml) - Two ImageStreams
rabbitmq
andrhel
(see files/builds/template.yml and files/imagestreams/images.yml) - A BuildConfig named
rabbitmq
(see files/builds/template.yml) - A RoleBinding named
rabbitmq
(see files/deployments/template.yml) - A Service named
rabbitmq
(see files/deployments/template.yml) - A StatefulSet named
rabbitmq
(see files/deployments/template.yml)
NAME | DESCRIPTION | VALUE |
---|---|---|
APPLICATION_NAME | The name for the application | rabbitmq |
CONTEXT_DIR | Path within Git project to build | rabbitmq |
ERLANG_VERSION | Erlang version to use | 20.1.1 |
FROM_IMAGE | Docker image to build from | rhel7:7.4 |
RABBITMQ_AUTOCLUSTER_VERSION | RabbitMQ Autocluster version to use | 0.10.0 |
RABBITMQ_VERSION | RabbitMQ version to build | 3.6.12 |
SOURCE_REPOSITORY_REF | Git branch/tag reference | master |
SOURCE_REPOSITORY_URL | Git source URI for application | https://github.com/redhat-cop/containers-quickstarts |
ERLANG_VERSION
, RABBITMQ_VERSION
& RABBITMQ_AUTOCLUSTER_VERSION
are passed on to the buildconfig thus these versions can be controlled in the build.
This is the equivivalent of docker build --build-arg ERLANG_VERSION=19.3.6
to a docker build.
- Clone this repository:
git clone https://github.com/redhat-cop/containers-quickstarts
cd containers-quickstarts/rabbitmq
- Run
ansible-galaxy install -r requirements.yml --roles-path=roles
- Login to Openshift:
oc login -u <username> https://master.example.com:8443
- Run openshift-applier:
ansible-playbook -i inventory/hosts roles/openshift-applier/playbooks/openshift-cluster-seed.yml
$ oc get pod -n rabbitmq
NAME READY STATUS RESTARTS AGE
rabbitmq-0 1/1 Running 0 1m
rabbitmq-1 1/1 Running 0 1m
rabbitmq-1-build 0/1 Completed 0 1m
rabbitmq-2 1/1 Running 0 1m
$ oc rsh -n rabbitmq rabbitmq-1 rabbitmqctl cluster_status
Cluster status of node '[email protected]'
[{nodes,[{disc,['[email protected]','[email protected]',
'[email protected]']}]},
{running_nodes,['[email protected]','[email protected]','[email protected]']},
{cluster_name,<<"[email protected]">>},
{partitions,[]},
{alarms,[{'[email protected]',[]},
{'[email protected]',[]},
{'[email protected]',[]}]}]
oc delete project rabbitmq