Recuerdo que cuando escuche por primera vez el concepto de base de datos en contenedor me dio algo de inseguridad. Se me quito enseguida al ver su rendimiento pero en mas de una ocasion cuando digo que tengo las bases de datos en contenedores veo reacciones contrarias incluso hoy en día.

Cada base de datos es adecuada segun que escenario y para que, asi que no se puede decir que despelgar las bases de datos en contenedores sea bueno o malo, solo es una opcion. Desde la misma pagina oficial de mongo ofrecen codigo de despliegue de operadores mongogb para kubernetes que nos facilita mucho el trabajo si queremos desplegar mongodb dentro de nuestro cluster de kubernetes.

¿Pero que es un operador de kubernetes? Basicamente es algo que hace trabajo por ti.

En el caso de mongo Operators Manager Resource
https://docs.opsmanager.mongodb.com/current/application/

¿Que gano si lo despliego?
-Automation
-Monitoring
-Backup
-Server Pool

Pero esto ya lo podia hacer yo. (con otras herramientas y atutomatismos que se tienen que configurar y desplegar) ¿Vale la pena?
Es en este punto donde tienes que probar para ver si optas por desplegar el operador o sigues con tu standarizacion propia.

Al lío

Habilitar ntp

yum install ntp -y
systemctl start ntpd
systemctl status ntpd
systemctl enable ntpd

ansible nodes -a "yum install -y ntp"
ansible nodes -a "systemctl start ntpd"
ansible nodes -a "systemctl enable ntpd"

Instalar Operador

Primero descargamos el codigo de despliegue del repo de mongodb

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

Desplegamos los customresourcedefinition y un operador que tendra los permisos necesarios para crear recursos dentro del cluster.

kubectl create namespace mongodb

kubectl apply -f mongodb-enterprise.yaml

kubectl -n mongodb get serviceaccount

kubectl apply -f crds.yaml

Instalar Operators Manager

Creamos un secreto para el login.

kubectl create secret generic ops-manager-admin-secret  --from-literal=Username="adriandepalma@hotmail.es" --from-literal=Password="Passw0rd."  --from-literal=FirstName="Adrian" --from-literal=LastName="De Palma" -n mongodb
vi ops-manager-mongo.yaml

apiVersion: mongodb.com/v1
kind: MongoDBOpsManager
metadata:
  name: op-manager-mongo
  namespace: mongodb
spec:
  replicas: 1
  version: "4.2.0"
  adminCredentials: ops-manager-admin-secret
  backup:
    enabled: true
    opLogStores:
      - name: op-log-name
        mongodbResourceRef:
          name: op-log-resource-name
  externalConnectivity:
    type: LoadBalancer
  applicationDatabase:
    members: 3
    version: "4.0.7"
    persistent: true

kubectl -n mongodb apply -f ops-manager-mongo.yaml

Despues de esto se nos habra levantado un servicio con ip externa nos autenticamos con el secreto que hemos definido antes y nos pediria que configuremos un smtp y la config default del backup.

Con esto ya tenemos una interfaz desde donde adminsitrar nuestras bases de datos mongo.

PD: El operator manager es por namspace.


0 comentarios

Deja una respuesta

Marcador de posición del avatar

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *