Compartir comentarios
Las respuestas se generan en base a la documentación.

Desplegar en Kubernetes

Requisitos previos

  • Descarga e instala Docker Desktop como se describe en Obtener Docker.
  • Completa los pasos para contenerizar una aplicación en la Parte 2.
  • Asegúrate de que Kubernetes esté activado en Docker Desktop: Si Kubernetes no está funcionando, sigue las instrucciones de Orquestación para terminar de configurarlo.

Introducción

Ahora que has demostrado que los componentes individuales de tu aplicación se ejecutan como contenedores independientes, es hora de organizarlos para que sean gestionados por un orquestador como Kubernetes. Kubernetes proporciona muchas herramientas para escalar, conectar en red, proteger y mantener tus aplicaciones contenerizadas, más allá de las capacidades de los contenedores por sí mismos.

Para validar que tu aplicación contenerizada funciona bien en Kubernetes, utilizarás el entorno de Kubernetes integrado en Docker Desktop directamente en tu máquina de desarrollo para desplegar tu aplicación, antes de pasarla a un clúster de Kubernetes completo en producción. El entorno de Kubernetes creado por Docker Desktop cuenta con todas las funciones disponibles, lo que significa que tiene todas las características de Kubernetes que tu aplicación disfrutará en un clúster real, accesibles desde la comodidad de tu máquina de desarrollo.

Describir aplicaciones usando YAML de Kubernetes

Todos los contenedores en Kubernetes se programan como pods, que son grupos de contenedores ubicados en el mismo lugar que comparten algunos recursos. Además, en una aplicación del mundo real casi nunca se crean pods individuales. En su lugar, la mayoría de tus cargas de trabajo se programan como despliegues (deployments), que son grupos escalables de pods mantenidos automáticamente por Kubernetes. Por último, todos los objetos de Kubernetes pueden y deben describirse en manifiestos llamados archivos YAML de Kubernetes. Estos archivos YAML describen todos los componentes y configuraciones de tu aplicación de Kubernetes y se pueden usar para crear y destruir tu aplicación en cualquier entorno de Kubernetes.

Ya escribiste un archivo YAML de Kubernetes básico en la parte de descripción general de Orquestación de este tutorial. Ahora, puedes escribir un archivo YAML ligeramente más sofisticado para ejecutar y administrar tu aplicación Todo, usando la imagen de contenedor getting-started creada en la Parte 2 del tutorial de inicio rápido. Coloca lo siguiente en un archivo llamado bb.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: bb-demo
  namespace: default
spec:
  replicas: 1
  selector:
    matchLabels:
      bb: web
  template:
    metadata:
      labels:
        bb: web
    spec:
      containers:
        - name: bb-site
          image: getting-started
          imagePullPolicy: Never
---
apiVersion: v1
kind: Service
metadata:
  name: bb-entrypoint
  namespace: default
spec:
  type: NodePort
  selector:
    bb: web
  ports:
    - port: 3000
      targetPort: 3000
      nodePort: 30001

En este archivo YAML de Kubernetes, hay dos objetos separados por ---:

  • Un Deployment, que describe un grupo escalable de pods idénticos. En este caso, obtendrás solo una replica, o copia de tu pod, y ese pod (que se describe bajo la clave template:) tiene un solo contenedor dentro, basado en tu imagen getting-started del paso anterior en este tutorial.
  • Un servicio NodePort, que enrutará el tráfico desde el puerto 30001 en tu host al puerto 3000 dentro de los pods a los que se dirige, lo que te permitirá acceder a tu aplicación Todo desde la red.

Además, ten en cuenta que aunque el YAML de Kubernetes puede parecer largo y complicado al principio, casi siempre sigue el mismo patrón:

  • La apiVersion, que indica la API de Kubernetes que analiza este objeto
  • El kind (tipo) que indica qué tipo de objeto es
  • Algunos metadatos (metadata) que aplican cosas como nombres a tus objetos
  • La especificación (spec) que detalla todos los parámetros y configuraciones de tu objeto.

Desplegar y verificar tu aplicación

  1. En una terminal, navega a donde creaste bb.yaml y despliega tu aplicación en Kubernetes:

    $ kubectl apply -f bb.yaml
    

    Deberías ver una salida como la siguiente, que indica que tus objetos de Kubernetes se crearon correctamente:

    deployment.apps/bb-demo created
    service/bb-entrypoint created
  2. Asegúrate de que todo haya funcionado enumerando tus despliegues:

    $ kubectl get deployments
    

    Si todo va bien, tu despliegue debería listarse de la siguiente manera:

    NAME      READY   UP-TO-DATE   AVAILABLE   AGE
    bb-demo   1/1     1            1           40s

    Esto indica que el único pod que solicitaste en tu YAML está activo y ejecutándose. Realiza la misma comprobación para tus servicios:

    $ kubectl get services
    
    NAME            TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
    bb-entrypoint   NodePort    10.106.145.116   <none>        3000:30001/TCP   53s
    kubernetes      ClusterIP   10.96.0.1        <none>        443/TCP          138d
    

    Además del servicio kubernetes predeterminado, vemos nuestro servicio bb-entrypoint aceptando tráfico en el puerto 30001/TCP.

  3. Abre un navegador y visita tu aplicación Todo en localhost:30001. Deberías ver tu aplicación Todo, igual que cuando la ejecutaste como un contenedor independiente en la Parte 2 del tutorial.

  4. Una vez satisfecho, elimina tu aplicación:

    $ kubectl delete -f bb.yaml
    

Conclusión

En este punto, has utilizado con éxito Docker Desktop para desplegar tu aplicación en un entorno de Kubernetes completo en tu máquina de desarrollo. Ahora puedes agregar otros componentes a tu aplicación y aprovechar todas las características y el poder de Kubernetes, directamente en tu propia máquina.

Además de despliegue en Kubernetes, también has descrito tu aplicación en un archivo YAML de Kubernetes. Este simple archivo de texto contiene todo lo que necesitas para crear tu aplicación en un estado de ejecución. Puedes registrarlo en tu control de versiones y compartirlo con tus colegas. Esto te permite distribuir tus aplicaciones a otros clústeres (como los clústeres de prueba y producción que probablemente vengan después de tus entornos de desarrollo).

Referencias de Kubernetes

Más documentación sobre todos los objetos de Kubernetes nuevos utilizados en este artículo está disponible aquí: