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: 30001En 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 unareplica, o copia de tu pod, y ese pod (que se describe bajo la clavetemplate:) tiene un solo contenedor dentro, basado en tu imagengetting-starteddel 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
En una terminal, navega a donde creaste
bb.yamly despliega tu aplicación en Kubernetes:$ kubectl apply -f bb.yamlDeberí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 createdAsegúrate de que todo haya funcionado enumerando tus despliegues:
$ kubectl get deploymentsSi 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 40sEsto 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 138dAdemás del servicio
kubernetespredeterminado, vemos nuestro serviciobb-entrypointaceptando tráfico en el puerto 30001/TCP.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.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í: