Awesome
Mongoose stack in Kubernetes
This repository contains a StatefulSet definition describing a simple yet scalable and fault-tolerant MongooseIM cluster.
MongooseIM pods use the already existing MongooseIM container available from MongooseIM's DockerHub or GitHub. Likewise, MongoosePush uses the containers available from Mongoose Push' dockerhub. You can read more about them in their respective READMEs, for MongooseIM and MongoosePush
Add this repo to your local helm
Running the following command:
helm repo add mongoose https://esl.github.io/MongooseHelm/
Will add this repo to your local helm charts, so you can install any of the available packages in your kubernetes cluster.
Initialise a k8s cluster
The most important part about managing a k8s cluster, is to actually have one! Many solutions are available, like minikube, microk8s, or Docker Desktop for local deployments, most often development and experimentation; or services like Google Kubernetes Engine, Azure Kubernetes Service, or Amazon Elastic Container Service. Refer to their documentation to know how to set them up.
Any of these should make our kubectl
is now configured to operate on the configured cluster. Let's check that:
kubectl config current-context # Short info on what cluster we're operating on
kubectl config get-contexts # See all available contexts
kubectl config view # Full config info
Switching the context can be done using NAME
from the above listing. Specifically, it might be useful to switch from operating a cloud-hosted cluster to a local one:
kubectl config use-context CONTEXT-NAME
kubectl config use-context docker-desktop # if using Docker Desktop with Kubernetes, or
kubectl config use-context minikube # if using minikube as the k8s cluster
How to get the plain k8s files
If all you want is the plain k8s files, you can tell helm to expand the templates for you using the command
helm template desired-chart --output-dir desired-path
Where desired-chart
is the desired chart to obtain (MongooseIM or MongoosePush) and desired-path
is the path where you want to output the k8s yaml definitions.