Install the MongoDB Enterprise Kubernetes Operator
On this page
Prerequisites and Considerations
Before you install the Kubernetes Operator, make sure you plan for your installation:
Choose a deployment topology.
Read the Considerations.
Complete the Prerequisites.
Note
This tutorial presumes some knowledge of Kubernetes and links to relevant Kubernetes documentation. If you are unfamiliar with Kubernetes, please review that documentation first.
Choose one of the following installation procedures to install the Kubernetes Operator:
Install with Kubernetes
The installation procedure varies based on how you want to configure your environment:
Note
Use the same namespace throughout
The following examples assume that you created a namespace
using the default Kubernetes Operator namespace of mongodb
.
If you specified a different label for your namespace when
you created it, change all
values for metadata.namespace
to that namespace.
To change the label for the namespace for the following
deployment to production
, edit all values for
metadata.namespace
in mongodb-enterprise.yaml
:
##--- # Source: mongodb-enterprise-operator/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata: name: mongodb-enterprise-operator namespace: production ##--- # Source: mongodb-enterprise-operator/templates/operator.yaml apiVersion: apps/v1 kind: Deployment metadata: name: mongodb-enterprise-operator namespace: production # Example truncated ...
Clone the MongoDB Enterprise Kubernetes Operator repository.
Invoke the following git
command:
git clone https://github.com/mongodb/mongodb-enterprise-kubernetes.git
Navigate to the directory in which you cloned the MongoDB Enterprise Kubernetes Operator repository.
For example, if you cloned the repository in your home directory, run:
cd ~/mongodb-enterprise-kubernetes
Install the CustomResourceDefinitions for MongoDB deployments using the following kubectl command:
Invoke the following kubectl command:
kubectl apply -f crds.yaml
Optional: Customize the Kubernetes Operator YAML before installing it.
To learn about optional Kubernetes Operator installation settings, see Operator kubectl and oc Installation Settings.
Use the MongoDB Helm Charts for Kubernetes.
You can install the Kubernetes Operator with Helm 3.
Add the MongoDB Helm Charts for Kubernetes repository to Helm.
helm repo add mongodb https://mongodb.github.io/helm-charts
Install the Kubernetes Operator:
Install MongoDB Helm Charts for Kubernetes.
The following command installs the CustomResourceDefinitions and the Kubernetes Operator
in the current namespace named default
. By default, the
Kubernetes Operator uses the default
namespace.
helm install enterprise-operator mongodb/enterprise-operator
The following command installs the Kubernetes Operator in the mongodb
namespace with the optional --create-namespace
option.
helm install enterprise-operator mongodb/enterprise-operator \ --namespace mongodb \ --create-namespace
To learn about optional Kubernetes Operator installation settings, see Operator Helm Installation Settings.
Use the MongoDB Helm Charts for Kubernetes.
You can install the Kubernetes Operator with Helm 3.
To install the Kubernetes Operator on a host not connected to the Internet:
Use docker
to request the files on a host connected to the Internet.
docker pull quay.io/mongodb/mongodb-enterprise-operator-ubi:1.20.0; \ docker pull quay.io/mongodb/mongodb-enterprise-database-ubi:1.20.0; \ docker pull quay.io/mongodb/mongodb-enterprise-ops-manager-ubi:<om-version>; \ docker pull quay.io/mongodb/mongodb-enterprise-init-ops-manager-ubi:1.20.0; \ docker pull quay.io/mongodb/mongodb-enterprise-init-appdb-ubi:1.20.0; \ docker pull quay.io/mongodb/mongodb-enterprise-init-database-ubi:1.20.0;
Replace the following values:
<op-version>
with the Kubernetes Operator version you're installing<om-version>
with the Ops Manager version you're installing.<db-version>
with the version of the MongoDB Enterprise Database image that you want to use.
Export the Kubernetes Operator images as .tar
archive files:
docker save quay.io/mongodb/mongodb-enterprise-operator-ubi:1.20.0 -o mongodb-enterprise-operator.tar; \ docker save quay.io/mongodb/mongodb-enterprise-database-ubi:1.20.0 -o mongodb-enterprise-database.tar; \ docker save quay.io/mongodb/mongodb-enterprise-ops-manager-ubi:<om-version> -o mongodb-enterprise-ops-manager.tar; \ docker save quay.io/mongodb/mongodb-enterprise-init-ops-manager-ubi:1.20.0 -o mongodb-enterprise-init-ops-manager.tar; \ docker save quay.io/mongodb/mongodb-enterprise-init-appdb-ubi:1.20.0 -o mongodb-enterprise-init-appdb.tar; docker save quay.io/mongodb/mongodb-enterprise-init-database-ubi:1.20.0 -o mongodb-enterprise-init-database.tar;
Replace the following values:
<op-version>
with the Kubernetes Operator version you're installing<om-version>
with the Ops Manager version you're installing.<db-version>
with the version of the MongoDB Enterprise Database image that you want to use.
Import the .tar
files into docker
.
docker load -i mongodb-enterprise-operator.tar; \ docker load -i mongodb-enterprise-database.tar; \ docker load -i mongodb-enterprise-ops-manager.tar; \ docker load -i mongodb-enterprise-appdb.tar; \ docker load -i mongodb-enterprise-init-ops-manager.tar; \ docker load -i mongodb-enterprise-init-appdb.tar; \ docker load -i mongodb-enterprise-init-database.tar;
Replace the following values:
<op-version>
with the Kubernetes Operator version you're installing<om-version>
with the Ops Manager version you're installing.<db-version>
with the version of the MongoDB Enterprise Database image that you want to use.
Add the MongoDB Helm Charts for Kubernetes repository to Helm.
helm repo add mongodb https://mongodb.github.io/helm-charts
Install the Kubernetes Operator with modified pull policy values using the following helm
command:
Install MongoDB Helm Charts for Kubernetes
and set the value of registry.pullPolicy
to IfNotPresent
.
To learn about optional Kubernetes Operator installation settings, see
Operator Helm Installation Settings.
helm install enterprise-operator mongodb/enterprise-operator \ --set registry.pullPolicy='IfNotPresent'
Install with OpenShift
Before you begin, ensure that the MANAGED_SECURITY_CONTEXT
flag is set
to true
when you deploy the Kubernetes Operator to OpenShift. This value is
pre-defined in the values-openshift.yaml file.
The installation procedure varies based on how you want to configure your environment:
Note
Use the same namespace throughout
The following examples assume that you created a namespace
using the default Kubernetes Operator namespace of mongodb
.
If you specified a different label for your namespace when
you created it, change all
values for metadata.namespace
to that namespace.
To change the label for the namespace for the following
deployment to production
, edit all values for
metadata.namespace
in mongodb-enterprise-openshift.yaml
:
##--- # Source: mongodb-enterprise-operator/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata: name: enterprise-operator namespace: production ##--- # Source: mongodb-enterprise-operator/templates/operator.yaml apiVersion: apps/v1 kind: Deployment metadata: name: enterprise-operator namespace: production # Example truncated ...
Clone the MongoDB Enterprise Kubernetes Operator repository.
Invoke the following git
command:
git clone https://github.com/mongodb/mongodb-enterprise-kubernetes.git
Navigate to the directory in which you cloned the MongoDB Enterprise Kubernetes Operator repository.
For example, if you cloned the repository in your home directory, run:
cd ~/mongodb-enterprise-kubernetes
Install the CustomResourceDefinitions for MongoDB deployments.
Invoke the following oc command:
oc apply -f crds.yaml
Optional: Customize the Kubernetes Operator YAML before installing it.
To learn about optional Kubernetes Operator installation settings, see Operator kubectl and oc Installation Settings.
Add your <openshift-pull-secret>
to the ServiceAccount
definitions in the Kubernetes Operator YAML before installing it.
# Source: mongodb-enterprise-operator/templates/serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata: name: enterprise-operator namespace: mongodb imagePullSecrets: - name: <openshift-pull-secret> apiVersion: v1 kind: ServiceAccount metadata: name: mongodb-enterprise-appdb namespace: mongodb imagePullSecrets: - name: <openshift-pull-secret> apiVersion: v1 kind: ServiceAccount metadata: name: mongodb-enterprise-database-pods namespace: mongodb imagePullSecrets: - name: <openshift-pull-secret>
To learn more, see the registry.imagePullSecrets
setting in the
Helm installation settings.
Use the MongoDB Helm Charts for Kubernetes.
You can install the Kubernetes Operator with Helm 3.
Add the MongoDB Helm Charts for Kubernetes repository to Helm.
helm repo add mongodb https://mongodb.github.io/helm-charts
Install the Kubernetes Operator using helm
.
Install MongoDB Helm Charts for Kubernetes:
helm install enterprise-operator mongodb/enterprise-operator \ --values https://raw.githubusercontent.com/mongodb/helm-charts/main/charts/enterprise-operator/values-openshift.yaml
Use the values-openshift.yaml settings. To learn about optional Kubernetes Operator installation settings, see Operator Helm Installation Settings.
Use the MongoDB Helm Charts for Kubernetes.
You can install the Kubernetes Operator with Helm 3.
To install the Kubernetes Operator on a host not connected to the Internet:
Use docker
to request the files on a host connected to the Internet.
docker pull registry.connect.redhat.com/mongodb/mongodb-enterprise-operator:1.20.0; \ docker pull registry.connect.redhat.com/mongodb/mongodb-enterprise-database:1.20.0; \ docker pull registry.connect.redhat.com/mongodb/mongodb-enterprise-ops-manager:<om-version>; \ docker pull registry.connect.redhat.com/mongodb/mongodb-enterprise-appdb:10.2.15.5958-1_4.2.11-ent; \ docker pull registry.connect.redhat.com/mongodb/mongodb-enterprise-init-ops-manager:1.20.0; \ docker pull registry.connect.redhat.com/mongodb/mongodb-enterprise-init-appdb:1.20.0; \ docker pull registry.connect.redhat.com/mongodb/mongodb-enterprise-init-database:1.20.0;
Replace the following values:
<op-version>
with the Kubernetes Operator version you're installing<om-version>
with the Ops Manager version you're installing.<db-version>
with the version of the MongoDB Enterprise Database image that you want to use.
Export the Kubernetes Operator images as .tar
archive files:
docker save quay.io/mongodb/mongodb-enterprise-operator-ubi:1.20.0 -o mongodb-enterprise-operator.tar; \ docker save quay.io/mongodb/mongodb-enterprise-database-ubi:1.20.0 -o mongodb-enterprise-database.tar; \ docker save quay.io/mongodb/mongodb-enterprise-ops-manager-ubi:<om-version> -o mongodb-enterprise-ops-manager.tar; \ docker save quay.io/mongodb/mongodb-enterprise-init-ops-manager-ubi:1.20.0 -o mongodb-enterprise-init-ops-manager.tar; \ docker save quay.io/mongodb/mongodb-enterprise-init-appdb-ubi:1.20.0 -o mongodb-enterprise-init-appdb.tar; docker save quay.io/mongodb/mongodb-enterprise-init-database-ubi:1.20.0 -o mongodb-enterprise-init-database.tar;
Replace the following values:
<op-version>
with the Kubernetes Operator version you're installing<om-version>
with the Ops Manager version you're installing.<db-version>
with the version of the MongoDB Enterprise Database image that you want to use.
Import the .tar
files into docker
.
docker load -i mongodb-enterprise-operator.tar; \ docker load -i mongodb-enterprise-database.tar; \ docker load -i mongodb-enterprise-ops-manager.tar; \ docker load -i mongodb-enterprise-appdb.tar; \ docker load -i mongodb-enterprise-init-ops-manager.tar; \ docker load -i mongodb-enterprise-init-appdb.tar; \ docker load -i mongodb-enterprise-init-database.tar;
Replace the following values:
<op-version>
with the Kubernetes Operator version you're installing<om-version>
with the Ops Manager version you're installing.<db-version>
with the version of the MongoDB Enterprise Database image that you want to use.
Add the MongoDB Helm Charts for Kubernetes repository to Helm.
helm repo add mongodb https://mongodb.github.io/helm-charts
Install the Kubernetes Operator with modified pull policy values.
Install MongoDB Helm Charts for Kubernetes:
helm install enterprise-operator mongodb/enterprise-operator \ --set registry.pullPolicy='IfNotPresent' \ --set registry.imagePullSecrets='<openshift-pull-secret>' \ --values https://raw.githubusercontent.com/mongodb/helm-charts/main/charts/enterprise-operator/values-openshift.yaml
Use the values-openshift.yaml
settings, registry.pullPolicy=IfNotPresent
, and
registry.imagePullSecrets=<openshift-pull-secret>
. To learn
about optional Kubernetes Operator installation settings, see
Operator Helm Installation Settings.
Verify the Installation
To verify that the Kubernetes Operator installed correctly, run the following command and verify the output:
kubectl describe deployments mongodb-enterprise-operator -n <metadata.namespace>
oc describe deployments mongodb-enterprise-operator -n <metadata.namespace>
By default, deployments exist in the mongodb
namespace. If the
following error message appears, ensure you use the correct
namespace:
Error from server (NotFound): deployments.apps "mongodb-enterprise-operator" not found
To troubleshoot your Kubernetes Operator, see Review Logs from the Kubernetes Operator and other troubleshooting topics.
Important
If you need to remove the Kubernetes Operator or the namespace, you first must remove MongoDB resources.
Install a Specific Daily Build with Helm
MongoDB rebuilds Kubernetes Operator images every day to integrate the latest security and OS updates.
By default, helm
installs the latest build for the version of
the Kubernetes Operator you specify.
To install an earlier build, specify the build ID as a parameter with
--set build=<build-id>
. Build IDs are always in the format
-b<YYYYMMDD>T000000Z
, where <YYYYMMDD>
is the date that the
build you want to use was created.
Example
This example shows how to install the Kubernetes Operator with the latest image:
helm install enterprise-operator mongodb/enterprise-operator
This example shows how to install the Kubernetes Operator with the image created at midnight on February 5th, 2021:
helm install enterprise-operator mongodb/enterprise-operator \ --set build=-b20210205T000000Z
Note
MongoDB recommends using the default (latest) build.
Next Steps
After installing the MongoDB Enterprise Kubernetes Operator, you can: