Docs Menu
Docs Home
/
MongoDB Enterprise Kubernetes Operator
/

Install the MongoDB Enterprise Kubernetes Operator

On this page

  • Prerequisites and Considerations
  • Install with Kubernetes
  • Install with OpenShift
  • Verify the Installation
  • Next Steps

Before you install the Kubernetes Operator, make sure you plan for your installation:

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.

The installation procedure varies based on how you want to configure your environment:

Note

Use the same namespace throughout

By default, the Kubernetes Operator deploys all resources in your Kubernetes cluster to the namespace mongodb. You can deploy Kubernetes Operator resources to a different namespace by editing 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
---
...
1

To learn about optional Kubernetes Operator installation settings, see Operator kubectl and oc Installation Settings.

Note

To enable the Public Preview of static containers, which improve and simplify security, see Static Containers (Public Preview). We don't recommend using this feature in production while it's in Public Preview.

2

Populate the <version> placeholder and run the following kubectl command to deploy your chosen version of the Kubernetes Operator to your Kubernetes cluster:

kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-enterprise-kubernetes/<version>/mongodb-enterprise.yaml
3

Populate the <version> placeholder and run the following kubectl command to deploy your chosen version of the CRDs to your Kubernetes cluster:

kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-enterprise-kubernetes/<version>/crds.yaml

Use the MongoDB Helm Charts for Kubernetes.

1

You can add the Kubernetes Operator Helm Chart locally by running:

helm repo add mongodb https://mongodb.github.io/helm-charts
2

To learn about optional Kubernetes Operator installation settings, see Operator Helm Installation Settings.

3

Run the following kubectl command with your desired Kubernetes Operator version to deploy the CRDs to your Kubernetes cluster:

kubectl apply -f https://raw.githubusercontent.com/mongodb/mongodb-enterprise-kubernetes/<version>/crds.yaml
4

Run the following helm command to deploy the Kubernetes Operator to the default namespace in your Kubernetes cluster:

helm install --upgrade enterprise-operator mongodb/enterprise-operator

You can pass the --namespace and --create-namespace flags to deploy the Kubernetes Operator to a non-default namespace, like so:

helm install --upgrade enterprise-operator mongodb/enterprise-operator \
--namespace mongodb \
--create-namespace

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.

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

By default, the Kubernetes Operator deploys all resources in your Kubernetes cluster to the namespace mongodb. You can deploy Kubernetes Operator resources to a different namespace by editing 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
---
...
1

Invoke the following git command:

git clone https://github.com/mongodb/mongodb-enterprise-kubernetes.git
2

For example, if you cloned the repository in your home directory, run:

cd ~/mongodb-enterprise-kubernetes
3

Invoke the following oc command:

oc apply -f crds.yaml
4

To learn about optional Kubernetes Operator installation settings, see Operator kubectl and oc Installation Settings.

Note

To enable the Public Preview of static containers, which improve and simplify security, see Static Containers (Public Preview). We don't recommend using this feature in production while it's in Public Preview.

5
---
# 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.

6

Invoke the following oc command:

oc apply -f mongodb-enterprise-openshift.yaml

Use the MongoDB Helm Charts for Kubernetes.

You can install the Kubernetes Operator with Helm 3.

1
helm repo add mongodb https://mongodb.github.io/helm-charts
2

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.

Note

To enable the Public Preview of static containers, which improve and simplify security, see Static Containers (Public Preview). We don't recommend using this feature in production while it's in Public Preview.

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.

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.

After installing the MongoDB Enterprise Kubernetes Operator, you can: