Importante
Esta sección es solo para implementaciones de un solo clúster de Kubernetes. Para implementaciones multidistribuidas de clústeres de MongoDB, consulte la Visión general.
El operador de controladores de MongoDB para Kubernetes utiliza la API y las herramientas de Kubernetes para administrar los clústeres de MongoDB que se ejecutan dentro de su clúster de Kubernetes. El operador de Kubernetes funciona conjuntamente con Ops Manager. Este tutorial muestra cómo implementar Ops Manager en Kubernetes y, a continuación, cómo implementar y conectarse a su primer conjunto de réplicas de MongoDB con el operador de Kubernetes. Puede usar Kind para configurar rápidamente un clúster. Para obtener más información, consulte Kind.
Requisitos previos
Este tutorial requiere:
Un clúster de Kubernetes en ejecución.
Helm está instalado en tu máquina local.
Nodos de Kubernetes ejecutándose en arquitecturas de hardware compatibles.
El Shell de MongoDB instalado en tu máquina local.
Si utiliza Kind con Docker Desktop, asigne al menos 8 GB de memoria y 4 CPU en la configuración de recursos de Docker Desktop. Ops Manager requiere un mínimo de 5 GB de memoria para la aplicación y recursos adicionales para la base de datos de la aplicación y el operador de Kubernetes.
Procedimiento
Agrega el repositorio Helm Charts de MongoDB para Kubernetes a Helm.
helm repo add mongodb https://mongodb.github.io/helm-charts
Instala el operador de los controladores de MongoDB para Kubernetes
Para instalar el operador de Kubernetes con Helm, consulte las instrucciones en el repositorio.
Ejemplo
El siguiente comando instala los Controladores de MongoDB para el Operador de Kubernetes en el namespace mongodb con la opción opcional --create-namespace. Por defecto, el Operador de Kubernetes utiliza el namespace default.
helm install kubernetes-operator mongodb/mongodb-kubernetes --namespace mongodb --create-namespace
Cree el secreto de credenciales de administrador de Ops Manager.
Cree un secreto que contenga las credenciales iniciales del usuario administrador de Ops Manager. El operador de Kubernetes utiliza este secreto para configurar el primer usuario administrador al implementar el recurso de Ops Manager.
Ejecute el siguiente comando, reemplazando los valores de marcador de posición con sus credenciales preferidas:
kubectl create secret generic ops-manager-admin-secret \ --from-literal=Username="<admin-email>" \ --from-literal=Password="<admin-password>" \ --from-literal=FirstName="<first-name>" \ --from-literal=LastName="<last-name>"
Nota
Guarde estas credenciales de forma segura. Las necesitará para iniciar sesión en la interfaz de usuario de Ops Manager después de la implementación.
Despliegue el recurso Administrador de operaciones.
Copie y guarde el siguiente archivo YAML
ops-manager.yamlcomo:apiVersion: mongodb.com/v1 kind: MongoDBOpsManager metadata: name: ops-manager namespace: mongodb spec: replicas: 1 version: "8.0.0" adminCredentials: ops-manager-admin-secret externalConnectivity: type: NodePort configuration: mms.ignoreInitialUiSetup: "true" automation.versions.source: "mongodb" mms.fromEmailAddr: admin@example.com mms.replyToEmailAddr: admin@example.com mms.adminEmailAddr: admin@example.com mms.mail.transport: smtp mms.mail.hostname: localhost mms.mail.port: "25" backup: enabled: false applicationDatabase: topology: SingleCluster members: 3 version: "8.0.0" Para obtener más información, consulte la especificación de recursos de Ops Manager.
Ejecuta el siguiente comando:
kubectl apply -f ops-manager.yaml
Espere a que el recurso Administrador de operaciones alcance el estado de ejecución.
El operador de Kubernetes primero despliega el conjunto de réplicas de la base de datos de la aplicación y luego inicia la aplicación Ops Manager. Este proceso puede tardar varios minutos.
Ejecute el siguiente comando para realizar un seguimiento del estado del recurso:
kubectl get om -o yaml -w
Espere hasta que la salida muestre las siguientes fases:
status: applicationDatabase: phase: Running opsManager: phase: Running
Cuando ambos componentes alcancen Running, recupere la URL del Administrador de operaciones:
kubectl get om ops-manager -o jsonpath='{.status.opsManager.url}'
Anota esta URL. La necesitarás para el ConfigMap en un paso posterior.
Configure el operador de Kubernetes para Ops Manager.
Puedes usar la interfaz de usuario de Ops Manager para generar el ConfigMap y el Secret, o puedes crearlos manualmente.
Primero, redirija el puerto del servicio Ops Manager a su máquina local para que pueda acceder a la interfaz de usuario en su navegador:
kubectl port-forward svc/ops-manager-svc-ext 8080:8080
Luego, abre http://localhost:8080 en tu navegador e inicia sesión con las credenciales que creaste en el secreto de administrador.
Para usar la interfaz de usuario de Ops Manager:
Haz clic en Create New API Keys o Use Existing API Keys.
Complete el formulario. Para obtener más información, consulte Crear credenciales para el operador de Kubernetes.
Haga clic en Generate Key and YAML.
Como alternativa, puede crear el ConfigMap y el Secret manualmente siguiendo los pasos que se indican a continuación.
Crea y guarda el ConfigMap.
Si generó el ConfigMap desde la interfaz de usuario de Ops Manager, copie y guarde el archivo config-map.yaml generado. De lo contrario, cree y guarde el siguiente archivo. Establezca data.baseUrl en la URL de su instancia de Ops Manager desde status.opsManager.url.
Ejemplo:
apiVersion: v1 kind: ConfigMap metadata: name: my-project namespace: mongodb data: baseUrl: http://ops-manager-svc.mongodb.svc.cluster.local:8080 projectName: my-project orgId: <your-org-id>
Reemplace <your-org-id> con su ID de organización de Ops Manager. Puede encontrar este valor en la URL de la interfaz de usuario de Ops Manager: http://<ops-manager-url>/v2#/org/<orgId>/projects.
Para obtener más información, consulte las descripciones de los parámetros.
Crea y guarda el secreto.
Si generó el secreto desde la interfaz de usuario de Ops Manager, copie y guarde el secret.yaml archivo generado. De lo contrario, cree un secreto que contenga las claves API de su organización de Ops Manager.
Ejemplo:
apiVersion: v1 kind: Secret metadata: name: organization-secret namespace: mongodb stringData: publicKey: <public_key> privateKey: <private_key>
Para crear claves API programáticas, consulte la sección "Crear credenciales para el operador de Kubernetes".
Implementa el recurso de conjunto de réplicas de MongoDB.
Copie y guarde el siguiente archivo YAML:
apiVersion: mongodb.com/v1 kind: MongoDB metadata: name: demo-mongodb-cluster-1 namespace: mongodb spec: members: 3 version: 8.0.0 type: ReplicaSet security: authentication: enabled: true modes: ["SCRAM"] opsManager: configMapRef: name: my-project credentials: organization-secret persistent: true podSpec: podTemplate: spec: containers: - name: mongodb-enterprise-database resources: limits: cpu: 2 memory: 1.5G requests: cpu: 1 memory: 1G persistence: single: storage: 10Gi Ejecuta el siguiente comando:
kubectl apply -f <replica-set-conf>.yaml
Crea un secreto con la contraseña de tu usuario de base de datos.
Elige una contraseña para tu usuario de base de datos MongoDB y guárdala en un secreto. Esta contraseña puede ser cualquier valor que elijas. Deberás consultar este secreto al crear el usuario de la base de datos en el siguiente paso.
Puede almacenar la contraseña como texto plano (usando stringData) o como un valor codificado en Base64(usando data).
Para una contraseña de texto sin formato, crea y guarda el siguiente archivo YAML:
apiVersion: v1 kind: Secret metadata: name: mms-user-1-password # corresponds to user.spec.passwordSecretKeyRef.name type: Opaque stringData: password: <my-plain-text-password> # corresponds to user.spec.passwordSecretKeyRef.key
Para una contraseña codificada en Base64, crear y guardar el siguiente archivo YAML:
apiVersion: v1 kind: Secret metadata: name: mms-user-1-password # corresponds to user.spec.passwordSecretKeyRef.name type: Opaque data: password: <base-64-encoded-password> # corresponds to user.spec.passwordSecretKeyRef.key
Sustituya el marcador de posición por la contraseña que haya elegido. Para obtener más información, consulte la sección «Administrar usuarios de la base de datos mediante la autenticación SCRAM».
Cree un usuario de base de datos.
Copia y guarda el siguiente archivo Especificación de recursos de usuario de MongoDB:
apiVersion: mongodb.com/v1 kind: MongoDBUser metadata: name: mms-scram-user-1 spec: passwordSecretKeyRef: name: mms-user-1-password # Match to metadata.name of the User Secret key: password username: "mms-scram-user-1" db: "admin" # mongodbResourceRef: name: "demo-mongodb-cluster-1" # Match to MongoDB resource using authentication roles: - db: "admin" name: "clusterAdmin" - db: "admin" name: "userAdminAnyDatabase" - db: "admin" name: "readWrite" Ejecuta el siguiente comando:
kubectl apply -f <database-user-conf>.yaml
Conéctate al MongoDB set de réplicas.
Realice los siguientes pasos en la aplicación Ops Manager:
Haz clic en Deployment en la navegación izquierda.
Haga clic en para la implementación a la que desea conectarse.
Haga clic en Connect to this instance.
Ejecuta el comando de conexión en una terminal para conectar con la implementación.