MongoDB by Percona
Let's see how to run MongoDB in a Kubernetes cluster, using Percona distribution.
See How to Run MongoDB on Kubernetes: Solutions, Pros and Cons - January 5, 2024
Configuration
We'll use the Percona Helm chart (docs, code).
Deployment
bash
kubectl create namespace mongodb-percona
# https://github.com/percona/percona-helm-charts/blob/main/charts/psmdb-operator/values.yaml
helm upgrade --install psmdb-operator percona/psmdb-operator --namespace mongodb-percona
# https://github.com/percona/percona-helm-charts/blob/main/charts/psmdb-db/values.yaml
cat <<EOF | tee values_nosharding.yml
sharding:
enabled: false
balancer:
enabled: true
configrs:
size: 1
replsets:
- name: rs0
size: 2
affinity:
antiAffinityTopologyKey: "kubernetes.io/hostname"
podDisruptionBudget:
maxUnavailable: 1
expose:
enabled: false
exposeType: ClusterIP
resources:
limits:
cpu: "300m"
memory: "0.5G"
requests:
cpu: "300m"
memory: "0.5G"
volumeSpec:
pvc:
resources:
requests:
storage: 3Gi
nonvoting:
enabled: false
size: 3
affinity:
antiAffinityTopologyKey: "kubernetes.io/hostname"
podDisruptionBudget:
maxUnavailable: 1
resources:
limits:
cpu: "300m"
memory: "0.5G"
requests:
cpu: "300m"
memory: "0.5G"
volumeSpec:
pvc:
resources:
requests:
storage: 3Gi
arbiter:
enabled: false
size: 1
affinity:
antiAffinityTopologyKey: "kubernetes.io/hostname"
EOF
helm upgrade --install psmdb-db1 percona/psmdb-db -f values_nosharding.yml --namespace mongodb-percona
# issues with upgrades...
# cleans up
helm delete psmdb-db1 -n mongodb-percona
helm delete psmdb-operator -n mongodb-percona
kubectl delete ns mongodb-percona