https://ksingh7.medium.com/deploy-mongodb-on-openshift-using-helm-9430f58ebb3
Helm repo bitname vs bitnami-full-index
https://github.com/bitnami/charts/issues/10833
This procedure follows the indications at the reference "Deploy MongoDB on OpenShift using Helm".
Help install (tested on Ubuntu 22.04.3 LTS)
sudo snap install helm --classic
Add helm repository bitnami (index.yaml contains only the last 6 months)
helm repo add bitnami https://charts.bitnami.com/bitnami
Add helm repository bitnami-full-index (needed for versions older than 6 months)
helm repo add bitnami-full-index https://raw.githubusercontent.com/bitnami/charts/archive-full-index/bitnami
Select the OKD /OpenShift project (or create a new one w/ oc new-project myproject)
oc project myproject
Set root user password and replica-set-key as environment variables
export MONGODB_ROOT_PASSWORD=myKey
export MONGODB_REPLICA_SET_KEY=myKey
Using helm install MongoDB on OKD/OpenShift. Make sure to set the required SecurityContext , so that helm can deploy MongoDB on OpenShift
Note 1: Flag --version is optional and specified the CHART VERSION (not the APP VERSION).
For finding out the CHART VERSION out of the APP VERSION run:
helm search repo mongo -l
Eg: bitnami/mongodb 12.1.27 5.0.9
bitnami-full-index/mongodb 15.6.1 7.0.11
helm install mongodb bitnami-full-index/mongodb --version="15.6.1" --set podSecurityContext.fsGroup="",containerSecurityContext.runAsUser="1001080001",podSecurityContext.enabled=false,architecture=replicaset,auth.replicaSetKey=$MONGODB_REPLICA_SET_KEY,auth.rootPassword=$MONGODB_ROOT_PASSWORD
Wait for the deployment to be ready:
oc get po
Get the root password (optional):
(the Kubect binary was placed in ~/local/bin/ during the OKD single-node installation)
export MONGODB_ROOT_PASSWORD=$(kubectl get secret --namespace myproject mongodb -o jsonpath="{.data.mongodb-root-password}" | base64 -d)
Create a MongoDB Client container and verify that connectivity and DB access
(the docker image tags can be found at https://hub.docker.com/r/bitnami/mongodb/tags)
(replace MYPROJECT by the openshift project name)
$ kubectl run --namespace MYPROJECT mongodb-client --rm --tty -i --restart='Never' --env="MONGODB_ROOT_PASSWORD=$MONGODB_ROOT_PASSWORD" --image docker.io/bitnami/mongodb:4.4.15-debian-10-r8 --command -- bash
Warning: would violate PodSecurity "restricted:v1.24": allowPrivilegeEscalation != false (container "mongodb-client" must set securityContext.allowPrivilegeEscalation=false), unrestricted capabilities (container "mongodb-client" must set securityContext.capabilities.drop=["ALL"]), runAsNonRoot != true (pod or container "mongodb-client" must set securityContext.runAsNonRoot=true), seccompProfile (pod or container "mongodb-client" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost")
From the client container shell, connect to the MongoDB cluster
(replace MYPROJECT by the openshift project name)
## Option-1 Using host address
1001@mongodb-client:/$ mongo admin --host "mongodb-0.mongodb-headless.MYPROJECT.svc.cluster.local:27017,mongodb-1.mongodb-headless.MYPROJECT.svc.cluster.local:27017" --authenticationDatabase admin -u root -p $MONGODB_ROOT_PASSWORD
## Option-2 Using MongoDB URI
1001@mongodb-client:/$ mongo "mongodb://mongodb-0.mongodb-headless.myproject.svc.cluster.local:27017,mongodb-1.mongodb-headless.ksinghmyproject.svc.cluster.local:27017" --authenticationDatabase admin -u root -p $MONGODB_ROOT_PASSWORD
List the databases:
rs0:PRIMARY> show dbs
Create a database 'provadb' and create a document in collection post
use deletemedb
db.post.insert([
{
title: "Myproject to Kafka testing",
description: "Debezium connector",
by: "Karan",
url: "http://redhat.com",
tags: ["mongodb", "debezium", "ROSAK"],
likes: 100
}
])
Verify the document is created
rs0:PRIMARY> show dbs
rs0:PRIMARY> db.post.find()
[optional, for deleting the database> db.dropDatabase() ]
Exit the mongodb client container
rs0:PRIMARY> exit
1001@mongodb-client:/$ exit
If you want to connect to MongoDB cluster from localhost, then forward to port
Note: Untested
kubectl port-forward service/mongodb-external-0 27017 &
Connect using MongoDB CLI from localhost
Note: Untested
mongo --host 127.0.0.1 --authenticationDatabase admin -u root -p $MONGODB_ROOT_PASSWORD
(optionally) Connect using MongoDB Compass or MongoDB Shell
Note: Untested
# MongoDB Compass > New Connection
mongodb://root:JvckncuMto@127.0.0.1:27017
Tip: using the oc project as helm namespace
helm list --all-namespaces