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.
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.
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
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
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»
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:
- Servicios sin cabeza
- 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:{}
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