¿Cómo instalar y ejecutar MongoDB en Kubernetes?

MongoDB es conocido como un servidor de base de datos orientado a documentos. Una organización con sede en Nueva York llamada 10 gen estaba creando una plataforma como servicio similar a Window Azure y luego desarrolló MongoDB como PAAS (Platform As A Service) en 2007 y luego la lanzó como una base de datos de código abierto. server en 2009 y luego la compañía ganó popularidad como MongoDB Inc, donde la palabra Mongo se deriva de Humongous. En términos más simples, podemos definirlo como un producto de servidor de base de datos de código abierto que se utiliza para almacenar documentos. Aquí, se describe cada componente necesario para usar MongoDB en Kubernetes, y también cómo hacer que la colección sea accesible fuera de Kubernetes. También cómo realizar tareas básicas dentro de MongoDB. Como principiante, crear secciones individuales mientras comprende los pasos involucrados es una excelente manera de aprender sobre Kubernetes y MongoDB.

Manifiestos de Kubernetes del clúster de MongoDB

Todo el YAML de Kubernetes Mongdb que se usa en esta guía está alojado en Github. Clone el repositorio para referencia y uso.

https://github.com/yashjeswani63/kubernetes-mongodb

Git-repository

 

Hemos definido todos los archivos YAML de MongoDB Kubernetes. Si no desea crear cada manifiesto, simplemente compile un repositorio y emita el siguiente comando de la lista compilada.

kubectl aplicar -f 

Después de instalar MongoDB en Kubernetes, para limpiar los elementos de publicación, haga lo siguiente.

kubectl eliminar -f 

Comencemos con la configuración.

Crear secretos MongoDB

Los secretos en Kubernetes son objetos que se utilizan para proporcionar a los buques información confidencial. Son similares a ConfigMaps con la diferencia de que los datos se almacenan en un formato codificado. Para la seguridad de nuestro modelo MongoDB, es aconsejable limitar el acceso a un sitio web con una contraseña. Usaremos secretos para montar las contraseñas deseadas en contenedores. Guarde el siguiente manifiesto:

mongodb-secrets.yaml

apiVersión: v1

datos:

  contraseña: cGFzc3dvcmQxMjM=

  nombre de usuario: YWRtaW51c2Vy

tipo: secreto

metadatos:

  creaciónMarca de tiempo: nulo

  nombre: mongo-creds

Crea el secreto.

kubectl apply -f mongodb-secrets.yaml

Iniciaremos sesión con esta información.

MongoDB-secret

 

Crear volumen persistente de MongoDB

Necesitamos volúmenes para realizar un seguimiento de los datos. De esta manera, incluso si nuestro pod falla, los datos no se pierden. Para Kubernetes, hay dos elementos esenciales para crear volúmenes.

  • PersistentVolumes (PV) : son cosas que almacenan el mapa. Es una pieza de almacenamiento en una colección proporcionada por el administrador.
  • Reclamaciones de volumen continuas (PVC) : son elementos de Kubernetes que sirven como aplicaciones de almacenamiento. Kubernetes busca PV donde se pueda demandar espacio y asignarlo a PVC. PVC solo funciona si tiene habilitado un suministro de volumen flexible en la colección de Kubernetes.

Construyamos un PVC para nuestro modelo MongoDB. Guarde lo siguiente como mongodb-pvc.yaml.

apiVersión: v1

tipo: PersistentVolumeClaim

metadatos:

  nombre: pvc

Especificaciones:

  nombre de la clase de almacenamiento: «»

  modos de acceso:

    – Leer y escribir una vez 

  nombre del volumen: pv

  recursos:

    peticiones:

      almacenamiento: 1Gi

MongoDB-persistant-volume

 

Cree el PV.

kubectl create -f mongodb-pvc.yaml

apiVersión: v1

tipo: volumen persistente

metadatos:

  nombre: mongo-datos

Especificaciones:

  modos de acceso:

    – Leer y escribir una vez

  capacidad:

    almacenamiento: 1Gi

  hostPath:

    ruta: /datos/mongo

Continous-volume-planes

 

Implementación de la implementación de MongoDB

Vamos a crear una publicación ahora. Agregué una descripción del archivo de publicación de MongoDB nuevamente al final de esta sección. Guarde el siguiente manifiesto como mongodb-deployment.yaml. Aquí usamos la imagen oficial de mongo del docker hub.

apiVersión: apps/v1

tipo: Despliegue

metadatos:

  creaciónMarca de tiempo: nulo

  etiquetas:

    aplicación: mongo

  nombre: mongo

Especificaciones:

  réplicas: 1

  selector:

    etiquetas de coincidencia:

      aplicación: mongo

  estrategia: {}

  modelo:

    metadatos:

      creaciónMarca de tiempo: nulo

      etiquetas:

        aplicación: mongo

    Especificaciones:

      contenedores:

      – imagen: mongo

        nombre: mongo

        argumentos: [“–dbpath”,”/data/db”]

        Sonda de vida:

          ejecutivo:

            dominio:

              -mongo

              – –disableImplicitSessions

              – –evaluar

              – “db.adminCommand(‘ping’)”

          segundos de retardo inicial: 30

          PeriodSegundos: 10

          tiempo de esperaSegundos: 5

          umbral de éxito: 1

          Umbral de fallo: 6

        sonda de preparación:

          ejecutivo:

            dominio:

              -mongo

              – –disableImplicitSessions

              – –evaluar

              – “db.adminCommand(‘ping’)”

          segundos de retardo inicial: 30

          PeriodSegundos: 10

          tiempo de esperaSegundos: 5

          umbral de éxito: 1

          Umbral de fallo: 6

        env:

        – nombre: MONGO_INITDB_ROOT_USERNAME

          valorDe:

            referencia de clave secreta:

              nombre: mongo-creds

              clave: nombre de usuario

        – nombre: MONGO_INITDB_ROOT_PASSWORD

          valorDe:

            referencia de clave secreta:

              nombre: mongo-creds

              clave: contraseña

        montajes de volumen:

        – nombre: “mongo-data-dir”

          ruta de montaje: “/datos/db”

      volúmenes:

      – nombre: “mongo-data-dir”

        reclamación de volumen persistente:

          nombre del reclamo: «pvc»

MongoDB-deployment

 

Crear uso.

kubectl apply -f mongodb-deployment.yaml

La aplicación YAML MongoDB tiene muchas funciones, como env vars de secretos, sondas, etc. Profundicemos en lo que hace cada parte.

Conexión a MongoDB desde el exterior

Probemos y accedamos a la base de datos sin colección. Para hacerlo, necesitamos crear otro servicio de Kubernetes. Los servicios en Kubernetes son cosas que los pods usan para comunicarse. Los servicios de tipo ClusterIP se utilizan a menudo para la comunicación entre módulos. Para empezar, es importante saber que existen dos tipos de servicios de ClusterIP:

  1. Servicios sin cabeza
  2. Servicios

Los servicios estándar de Kubernetes sirven como balances de carga y siguen la mente de todos contra todos para distribuir la carga. Los servicios sin cabeza no funcionan como balanceadores de carga. Además, Kubernetes proporciona servicios estándar para IP, mientras que los servicios sin cabeza no están disponibles. Los servicios sin cabeza se usan más comúnmente cuando se usan aplicaciones statefulset.

En el caso de nuestro ejemplo de fuente MongoDB, usaremos el servicio estándar con Nodeport 32000 ya que usamos el tipo de envío. Vamos a crear un servicio de tipo NodePort. Descargue el servicio Kubernetes MongoDB debajo de YAML como mongodb-nodeport-svc.yaml.

apiVersión: v1

tipo: Servicio

metadatos:

  etiquetas:

    aplicación: mongo

  nombre: mongo-nodeport-svc

Especificaciones:

  puertos:

  – puerto: 27017

    protocolo: TCP

    puerto de destino: 27017

    NodePuerto: 32000

  selector:

    aplicación: mongo

  tipo: puerto de Node

estado:

  equilibrador de carga:{}

MongoDB-nodeport

 

Cree un archivo svc.

kubectl create -f mongodb-nodeport-svc.yaml

Para conectarse fuera de la colección de Kubernetes, debe usar la dirección IP del miembro del personal de la colección de Kubernetes o la dirección del balance de carga. En caso de que sigas a Minikube, puedes usar minikube IP para conectarte. Para identificar la IP de minikube o las URL de servicio, use las siguientes instrucciones.

minikube ip

servicio minikube –url mongo-nodeport-svc

Conectar comando:

mongo –host <ip> –port <puerto de nodeport svc> -u adminuser -p contraseña123

Publicación traducida automáticamente

Artículo escrito por yashjeswani63 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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