C贸mo implementar una aplicaci贸n de varios niveles con Kubernetes

archivo test-db-deployment.yaml

Una aplicaci贸n de varios niveles es una aplicaci贸n distribuida entre m谩s de una capa. Separa l贸gicamente las capas operativas. El n煤mero de capas var铆a seg煤n los requisitos comerciales y de la aplicaci贸n. En este art铆culo, veremos una aplicaci贸n dividida en 2 capas, backend y frontend. Usaremos MongoDB como backend para almacenar datos y Python Flask como servidor web frontend. Implementaremos estas dos aplicaciones utilizando implementaciones en Kubernetes y tendremos servicios para enviarles solicitudes.

rRequisitos previos

  1. Cl煤ster de Kubernetes con al menos 1 nodo trabajador.
    Si quieres aprender a crear un Cluster de Kubernetes, haz clic aqu铆. Esta gu铆a lo ayudar谩 a crear un cl煤ster de Kubernetes con 1 maestro y 2 nodos en instancias AWS Ubuntu 18.04 EC2.
  2. Comprensi贸n b谩sica de implementaciones y servicios.
    Consulte Implementaciones y servicios para obtener una comprensi贸n b谩sica.

驴Que haremos?

  1. Implementar una aplicaci贸n de varios niveles

Implementar una aplicaci贸n de varios niveles

Cree un nuevo archivo llamado 芦test-db-deployment.yaml禄 con el siguiente contenido. Esto definir谩 una implementaci贸n de MongoDB que actuar谩 como una base de datos, una capa de back-end.

vim prueba-db-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test-db
spec:
  selector:
    matchLabels:
      appdb: testdb
  replicas: 1
  template:
    metadata:
      labels:
        appdb: testdb
    spec:
      containers:
      - name: test-db
        image: mongo:3.3
        env:
        - name: MONGODB_DATABASE
          value: testdata
        ports:
        - containerPort: 27017

archivo test-db-deployment.yaml

Ahora, cree un servicio que atender谩 las solicitudes a MongoDB desde nuestra aplicaci贸n frontend. Este servicio escuchar谩 en el puerto 27017 y reenviar谩 solicitudes a MongoDB en el mismo puerto.

vim prueba-db-servicio.yaml

apiVersion: v1
kind: Service
metadata:
  name: mongodb
  labels:
    app: testdb
spec:
  ports:
  - port: 27017
    protocol: TCP
  selector:
    appdb: testdb

archivo test-db-service.yaml

El siguiente paso es definir una aplicaci贸n frontend. Cree un nuevo archivo que contenga la siguiente definici贸n de implementaci贸n.

Esto escuchar谩 en el puerto 5000.

Las solicitudes a MongoDB se reenviar谩n a MONGODB_HOST, es decir, al servicio mongodb.

vim prueba-web-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: test
spec:
  selector:
    matchLabels:
      app: test
  replicas: 1
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
      - name: test-app
        image: teamcloudyuga/rsvpapp
        env:
        - name: MONGODB_HOST
          value: mongodb
        ports:
        - containerPort: 5000
          name: web-port

archivo test-web-deployment.yaml

Para acceder a la interfaz, crearemos un servicio de tipo NodePort escuchando en el puerto 31081. Esto significa que se puede acceder al servidor web Python Flask en IP = IP-Of-Any-Node y Port = 31081. Cree una nueva con la siguiente definici贸n de servicio.

vim prueba-servicio-web.yaml

apiVersion: v1
kind: Service
metadata:
  name: test
  labels:
    apps: test
spec:
  type: NodePort
  ports:
  - name: tcp-31081-5000
    nodePort: 31081
    port: 5000
    protocol: TCP
  selector:
    app: test

archivo test-web-service.yaml

Ahora, estamos listos para crear una aplicaci贸n de muestra de 2 niveles. Antes de continuar, verifiquemos si el cl煤ster tiene alg煤n objeto.

Ejecute los siguientes comandos para verificar los pods, las implementaciones y los servicios que se ejecutan en el cl煤ster.

kubectl obtener vainas

kubectl obtener implementaciones

servicio de obtenci贸n de kubectl

comprobar los objetos existentes

En la captura de pantalla anterior, se puede ver que solo hay 1 servicio predeterminado de kubernetes en el cl煤ster.

Ahora, ejecute el siguiente comando uno por uno desde el directorio donde ha creado 4 archivos para crear la implementaci贸n de MongoDB, el servicio MongoDB, la implementaci贸n del servidor web Python Flask y el servicio del servidor web Python Flask.

kubectl create -f test-db-deployment.yamlPublicidad

kubectl create -f prueba-db-servicio.yaml

kubectl create -f test-web-deployment.yaml

kubectl create -f prueba-servicio-web.yaml

crear implementaciones y servicios

En la captura de pantalla anterior, puede ver que la implementaci贸n de MongoDB, el servicio MongoDB, la implementaci贸n del servidor web Python Flask y el servicio del servidor web Python Flask se crearon correctamente.

Para verificar lo mismo, ejecute los siguientes comandos.

kubectl obtener vainas

kubectl obtener implementaciones

servicio de obtenci贸n de kubectl

En la siguiente captura de pantalla, puede ver que se han creado 2 pods y 2 servicios. Los pods que se crearon est谩n controlados por la implementaci贸n que creamos.

comprobar los objetos reci茅n creados

Ahora, estamos listos para acceder a la aplicaci贸n en IP-de-cualquier-nodo:NodePort es decir IP-de-cualquier-Nodo:31081.

Una vez que presione la URL en el navegador, ver谩 la aplicaci贸n de la siguiente manera. Esta es una aplicaci贸n de muestra que utiliza la imagen acoplable disponible p煤blicamente y pertenece a CloudYuga. Aqu铆 puede ver que el conteo de RSVP es 0, esto significa que MongoDB no tiene ning煤n dato.

acceder a la aplicaci贸n en NodeIP:NodePort

Ahora, podemos agregar algunas entradas de demostraci贸n.

Al agregar algunas entradas, podemos ver que el conteo ha cambiado. Esto significa que los datos se han almacenado en MongoDB.

a帽adir datos en la aplicaci贸n

Ahora, cuando ya no necesite estas aplicaciones, puede eliminar todos los objetos ejecutando el siguiente comando desde el directorio donde tiene todos sus archivos de objetos de Kubernetes.

kubectl eliminar -f .

elimine las implementaciones y los servicios todos juntos

El comando anterior eliminar谩 la implementaci贸n de MongoDB, el servicio MongoDB, la implementaci贸n del servidor web Python Flask y el servicio del servidor web Python Flask que creamos.

Para verificar si todos los objetos que creamos se han eliminado con 茅xito, ejecute el siguiente comando.

kubectl obtener todo

En la siguiente captura de pantalla, puede ver que solo hay un servicio de kubernetes predeterminado y los objetos que hab铆amos creado ya no existen.

verificar si todos los objetos que creamos han sido eliminados

Conclusi贸n

En este art铆culo, creamos una implementaci贸n de la base de datos y el servicio de back-end de MongoDB para acceder a la base de datos y, para la interfaz, creamos la implementaci贸n y el servicio de la aplicaci贸n basada en Python Flask para acceder a esta interfaz. Tambi茅n vimos que los datos se almacenaban en la base de datos del servidor. Esta es una aplicaci贸n de dos niveles de muestra que utiliza im谩genes acoplables disponibles p煤blicamente.

Deja una respuesta

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