Configuración y Lanzamiento de Despliegue en Kubernetes
Ahora que tu aplicación funciona correctamente dentro de contenedores, el siguiente desafío es orquestar y gestionar esos contenedores a gran escala. Aquí es donde Kubernetes resulta útil.
Para comenzar, se debe definir el estado deseado de la aplicación utilizando archivos YAML. Un archivo describirá un Deployment, que gestiona actualizaciones y escalado, mientras que otro definirá un Service, que expone la aplicación a la red y la hace accesible para los usuarios.
YAML (YAML Ain't Markup Language) es un formato legible por humanos para archivos de configuración. Se utiliza frecuentemente para describir infraestructura, automatizar procesos y almacenar configuraciones de aplicaciones.
Un Deployment garantiza que siempre se esté ejecutando la cantidad deseada de instancias de la aplicación (Pods) y facilita la implementación de actualizaciones o la reversión a versiones anteriores. Un Service expone estos contenedores a la red y distribuye el tráfico entrante entre ellos.
Ejecutar Minikube
Minikube es una herramienta ligera que permite ejecutar un clúster de Kubernetes local en tu computadora. Crea un entorno virtual donde puedes probar y explorar Kubernetes sin necesidad de servicios en la nube.
Después de instalar Minikube y agregarlo a la variable PATH de tu sistema, abre PowerShell (o la terminal de tu preferencia) y ejecuta:
Este comando verifica si Minikube está disponible y muestra la versión instalada.
Una vez que hayas confirmado que Minikube está instalado, inicia tu clúster local de Kubernetes con:
Este comando crea y lanza un clúster local de Kubernetes en tu máquina. Descarga los componentes necesarios e inicia el plano de control y los nodos de trabajo.
Despliegue: Implementación de la Aplicación
Comienza creando el archivo deployment.yaml
. Un Deployment en Kubernetes garantiza que siempre se esté ejecutando una cantidad específica de Pods (instancias de la aplicación) y permite actualizarlos o revertirlos sin tiempo de inactividad.
deployment.yaml
En este manifiesto, el parámetro replicas especifica cuántas instancias de Pod deben ejecutarse al mismo tiempo — en este caso, dos. Para saber qué Pods gestionar, el Deployment utiliza una combinación de selector y etiquetas: el selector actúa como un filtro para encontrar Pods con una etiqueta específica, y la plantilla de Pod define esa etiqueta. Cuando las etiquetas coinciden, el Deployment considera esos Pods como propios y se encarga de mantener su cantidad, actualizarlos y reiniciarlos si es necesario.
Todos los Pods se ejecutan en el puerto 3000. Todos pueden usar el mismo puerto porque cada Pod opera en su propio espacio de red aislado, por lo que no hay conflicto entre ellos.
Servicio: Acceso de red a la aplicación
Una vez que el Deployment está configurado, se necesita un Service para proporcionar acceso de red y balanceo de carga entre los Pods. Cree el archivo service.yaml
:
service.yaml
Este manifiesto define un Service llamado my-app-service
que dirige el tráfico a los Pods con la etiqueta app: my-app
. Escucha en el puerto 80 externamente y reenvía las solicitudes al puerto 3000 dentro de los Pods.
El tipo LoadBalancer
es importante porque expone la aplicación externamente y distribuye el tráfico entre los Pods.
Despliegue de la aplicación en Kubernetes
Una vez que los archivos YAML estén listos, pueden aplicarse al clúster:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
El comando kubectl apply -f
crea o actualiza recursos en el clúster según el contenido del archivo YAML.
Verificación del estado
Después de aplicar los archivos de configuración, es importante confirmar que todo se haya desplegado según lo esperado. Dado que los Pods y Servicios tardan un momento en iniciarse, comience listando los Pods en ejecución:
Si el archivo deployment.yaml
especifica replicas: 2
, deben aparecer dos Pods en la salida.
Para confirmar que el Servicio está en ejecución y es accesible:
Esto mostrará la dirección IP del Servicio y los puertos a través de los cuales se puede acceder a la aplicación.
Obtener la URL del Servicio
Para acceder a tu aplicación, ejecuta el siguiente comando en PowerShell o en tu terminal:
Este comando solicita a Minikube que devuelva la URL donde tu aplicación está expuesta. Minikube verifica el Servicio que creaste (my-app-service
) y proporciona un enlace que puedes abrir en tu navegador.
Escalado de la Aplicación
Kubernetes facilita el ajuste de la cantidad de Pods en ejecución sin detener la aplicación.
Por ejemplo, para escalar de 2 a 4 réplicas:
Ejecutar kubectl get pods
nuevamente ahora mostrará cuatro Pods activos.
Kubernetes proporciona herramientas potentes para gestionar aplicaciones contenerizadas a cualquier escala.
Un Deployment garantiza que el número correcto de Pods esté en ejecución y puede actualizarse o revertirse fácilmente.
Un Service expone la aplicación a la red y distribuye el tráfico entrante.
Los archivos de configuración YAML hacen que la configuración sea clara y legible, mientras que los comandos kubectl
permiten aplicar y gestionar estas configuraciones en tiempo real.
1. ¿Cuál es el propósito principal de un Deployment en Kubernetes?
2. ¿Por qué varios Pods pueden ejecutarse en el mismo número de puerto (por ejemplo, 3000
) sin conflictos?
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 3.7
Configuración y Lanzamiento de Despliegue en Kubernetes
Desliza para mostrar el menú
Ahora que tu aplicación funciona correctamente dentro de contenedores, el siguiente desafío es orquestar y gestionar esos contenedores a gran escala. Aquí es donde Kubernetes resulta útil.
Para comenzar, se debe definir el estado deseado de la aplicación utilizando archivos YAML. Un archivo describirá un Deployment, que gestiona actualizaciones y escalado, mientras que otro definirá un Service, que expone la aplicación a la red y la hace accesible para los usuarios.
YAML (YAML Ain't Markup Language) es un formato legible por humanos para archivos de configuración. Se utiliza frecuentemente para describir infraestructura, automatizar procesos y almacenar configuraciones de aplicaciones.
Un Deployment garantiza que siempre se esté ejecutando la cantidad deseada de instancias de la aplicación (Pods) y facilita la implementación de actualizaciones o la reversión a versiones anteriores. Un Service expone estos contenedores a la red y distribuye el tráfico entrante entre ellos.
Ejecutar Minikube
Minikube es una herramienta ligera que permite ejecutar un clúster de Kubernetes local en tu computadora. Crea un entorno virtual donde puedes probar y explorar Kubernetes sin necesidad de servicios en la nube.
Después de instalar Minikube y agregarlo a la variable PATH de tu sistema, abre PowerShell (o la terminal de tu preferencia) y ejecuta:
Este comando verifica si Minikube está disponible y muestra la versión instalada.
Una vez que hayas confirmado que Minikube está instalado, inicia tu clúster local de Kubernetes con:
Este comando crea y lanza un clúster local de Kubernetes en tu máquina. Descarga los componentes necesarios e inicia el plano de control y los nodos de trabajo.
Despliegue: Implementación de la Aplicación
Comienza creando el archivo deployment.yaml
. Un Deployment en Kubernetes garantiza que siempre se esté ejecutando una cantidad específica de Pods (instancias de la aplicación) y permite actualizarlos o revertirlos sin tiempo de inactividad.
deployment.yaml
En este manifiesto, el parámetro replicas especifica cuántas instancias de Pod deben ejecutarse al mismo tiempo — en este caso, dos. Para saber qué Pods gestionar, el Deployment utiliza una combinación de selector y etiquetas: el selector actúa como un filtro para encontrar Pods con una etiqueta específica, y la plantilla de Pod define esa etiqueta. Cuando las etiquetas coinciden, el Deployment considera esos Pods como propios y se encarga de mantener su cantidad, actualizarlos y reiniciarlos si es necesario.
Todos los Pods se ejecutan en el puerto 3000. Todos pueden usar el mismo puerto porque cada Pod opera en su propio espacio de red aislado, por lo que no hay conflicto entre ellos.
Servicio: Acceso de red a la aplicación
Una vez que el Deployment está configurado, se necesita un Service para proporcionar acceso de red y balanceo de carga entre los Pods. Cree el archivo service.yaml
:
service.yaml
Este manifiesto define un Service llamado my-app-service
que dirige el tráfico a los Pods con la etiqueta app: my-app
. Escucha en el puerto 80 externamente y reenvía las solicitudes al puerto 3000 dentro de los Pods.
El tipo LoadBalancer
es importante porque expone la aplicación externamente y distribuye el tráfico entre los Pods.
Despliegue de la aplicación en Kubernetes
Una vez que los archivos YAML estén listos, pueden aplicarse al clúster:
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
El comando kubectl apply -f
crea o actualiza recursos en el clúster según el contenido del archivo YAML.
Verificación del estado
Después de aplicar los archivos de configuración, es importante confirmar que todo se haya desplegado según lo esperado. Dado que los Pods y Servicios tardan un momento en iniciarse, comience listando los Pods en ejecución:
Si el archivo deployment.yaml
especifica replicas: 2
, deben aparecer dos Pods en la salida.
Para confirmar que el Servicio está en ejecución y es accesible:
Esto mostrará la dirección IP del Servicio y los puertos a través de los cuales se puede acceder a la aplicación.
Obtener la URL del Servicio
Para acceder a tu aplicación, ejecuta el siguiente comando en PowerShell o en tu terminal:
Este comando solicita a Minikube que devuelva la URL donde tu aplicación está expuesta. Minikube verifica el Servicio que creaste (my-app-service
) y proporciona un enlace que puedes abrir en tu navegador.
Escalado de la Aplicación
Kubernetes facilita el ajuste de la cantidad de Pods en ejecución sin detener la aplicación.
Por ejemplo, para escalar de 2 a 4 réplicas:
Ejecutar kubectl get pods
nuevamente ahora mostrará cuatro Pods activos.
Kubernetes proporciona herramientas potentes para gestionar aplicaciones contenerizadas a cualquier escala.
Un Deployment garantiza que el número correcto de Pods esté en ejecución y puede actualizarse o revertirse fácilmente.
Un Service expone la aplicación a la red y distribuye el tráfico entrante.
Los archivos de configuración YAML hacen que la configuración sea clara y legible, mientras que los comandos kubectl
permiten aplicar y gestionar estas configuraciones en tiempo real.
1. ¿Cuál es el propósito principal de un Deployment en Kubernetes?
2. ¿Por qué varios Pods pueden ejecutarse en el mismo número de puerto (por ejemplo, 3000
) sin conflictos?
¡Gracias por tus comentarios!