Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Guía de inicio rápido para el Operador de Kubernetes

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.

Los controladores de MongoDB para el operador de Kubernetes utilizan la API y las herramientas de Kubernetes para gestionar los clústeres de MongoDB que se ejecutan en su clúster de Kubernetes. El operador de Kubernetes funciona junto con Ops Manager. Este tutorial demuestra cómo implementar Ops Manager en Kubernetes y luego implementar y conectarse a su primer set de réplicas de MongoDB con el operador de Kubernetes. Puede utilizar Kind para configurar rápidamente un clúster. Para obtener más información, consulte Kind.

Utilice este tutorial para evaluar Kubernetes Operator. Dado que Kind ejecuta un único nodo en su máquina local, el despliegue que cree aquí no podrá soportar la pérdida del nodo y no está dimensionado para el tráfico de producción. Una vez finalizado, consulte los Pasos siguientes para aprender cómo migrar a un despliegue de producción.

Este tutorial requiere:

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.

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

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
3

Si aún no lo has hecho, ejecuta el siguiente comando para ejecutar todos los comandos kubectl en el namespace que creaste:

kubectl config set-context $(kubectl config current-context) --namespace=mongodb
4

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 cuando implementa 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

Almacene estas credenciales de forma segura. Las necesita para iniciar sesión en la Interfaz de Usuario de MongoDB Ops Manager después de la implementación.

5
  1. Copia y guarda el siguiente archivo YAML como ops-manager.yaml:

    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 MongoDB Ops Manager.

  2. Ejecuta el siguiente comando:

    kubectl apply -f ops-manager.yaml
6

El operador de Kubernetes primero implementa el set de réplicas de la base de datos de la aplicación, luego inicia la aplicación de MongoDB Ops Manager. Este proceso puede tardar varios minutos.

Ejecute el siguiente comando para rastrear el estado de los recursos:

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 alcanzan Running, recupere la URL de MongoDB Ops Manager:

kubectl get om ops-manager -o jsonpath='{.status.opsManager.url}'

Tenga en cuenta esta URL. Lo necesitará para el ConfigMap en un paso posterior.

7

Puede utilizar la interfaz de usuario de Ops Manager para generar ConfigMap y Secret, o puede crearlos manualmente.

Primero, reenvíe el puerto de servicio de MongoDB Ops Manager a su máquina local para poder acceder a la Interfaz de Usuario en su navegador:

kubectl port-forward svc/ops-manager-svc-ext 8080:8080

Luego, abra http://localhost:8080 en su navegador e inicie sesión con las credenciales que creó en el secreto de administrador.

Para utilizar la Interfaz de Usuario de Ops Manager:

  1. Haz clic en Create New API Keys o Use Existing API Keys.

  2. Complete el formulario. Para obtener más información, consulte Crear credenciales para el operador de Kubernetes.

  3. Haga clic en Generate Key and YAML.

Alternativamente, puede crear el ConfigMap y el secreto manualmente en los siguientes pasos.

8

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 MongoDB 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 el Identificador de la Organización de MongoDB Ops Manager. Puede encontrar este valor en la URL de la interfaz de usuario de MongoDB Ops Manager: http://<ops-manager-url>/v2#/org/<orgId>/projects.

Para obtener más información, consulte las descripciones de los parámetros.

9

Si generó el secreto desde la interfaz de usuario de MongoDB Ops Manager, copie y guarde el archivo secret.yaml generado. De lo contrario, cree un secreto que contenga las API claves para su organización de MongoDB Ops Manager.

Ejemplo:

apiVersion: v1
kind: Secret
metadata:
name: organization-secret
namespace: mongodb
stringData:
publicKey: <public_key>
privateKey: <private_key>

Para crear claves de API programáticas, consulte Crear credenciales para el operador de Kubernetes.

10

Ejecuta el siguiente comando:

kubectl apply -f secret.yaml -f config-map.yaml
11
  1. 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
  2. Ejecuta el siguiente comando:

    kubectl apply -f <replica-set-conf>.yaml
12

Elija una contraseña para su usuario de base de datos de MongoDB y almacénela en un secreto. Esta contraseña puede ser cualquier valor que elija. Hará referencia a este secreto cuando cree el usuario de base de datos en el siguiente paso.

Puedes almacenar la contraseña como texto sin formato (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

Reemplace el marcador de posición con la contraseña elegida. Para obtener más información, consulte Gestionar usuarios de bases de datos utilizando autenticación SCRAM.

13
  1. 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"
  2. Ejecuta el siguiente comando:

    kubectl apply -f <database-user-conf>.yaml
14

Puede ver el usuario recién creado en Cloud Manager u Ops Manager:

  1. Desde la vista Deployment del proyecto, haz clic en la pestaña Security.

  2. Haz clic en la pestaña anidada MongoDB Users.

15

Realice los siguientes pasos en la aplicación MongoDB Ops Manager:

  1. Haz clic en Deployment en la navegación izquierda.

  2. Haga clic en para la implementación a la que desea conectarse.

  3. Haga clic en Connect to this instance.

  4. Ejecuta el comando de conexión en una terminal para conectar con la implementación.

La implementación que creó se ejecuta en un único nodo Kind y utiliza la configuración de recursos predeterminada. Para pasar de esta implementación de evaluación a una implementación de producción:

  1. Planifique el despliegue en producción para elegir una arquitectura, confirmar la compatibilidad de versiones y establecer el alcance del despliegue del operador de Kubernetes.

  2. Instale el operador de Kubernetes en un clúster de Kubernetes de producción que tenga más de un nodo y un storageClass que admita la expansión de volumen.

  3. Aplique las mejores prácticas de producción para el almacenamiento, la persistencia, las zonas de disponibilidad y los límites de recursos.

  4. Proteja la implementación con TLS, autenticación y cifrado en reposo.

  5. Implemente la solución en varios clústeres de Kubernetes si necesita sobrevivir a la pérdida de un clúster de Kubernetes completo.