Despliegue en Kubernetes con Actions
Configure el despliegue continuo en clústeres de Kubernetes y gestione despliegues y servicios directamente desde GitHub Actions.
Despliegue en Kubernetes con Actions es una lección gratuita de CI/CD with GitHub Actions & DevOps Pipelines en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de CI/CD with GitHub Actions & DevOps Pipelines, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de CI/CD with GitHub Actions & DevOps Pipelines incluye 4 lecciones en total.
Introducción a la CD en K8s con Actions
¡Le damos la bienvenida! En esta lección, aprenderá a configurar la implementación continua (CD) en clústeres de Kubernetes mediante GitHub Actions.
Automatizar las implementaciones significa que los cambios de su aplicación pueden entrar en producción de forma rápida y fiable, sin pasos manuales.
Abordaremos la autenticación, la aplicación de manifiestos de Kubernetes y la gestión de actualizaciones.
Aspectos esenciales de las implementaciones en K8s
Antes de implementar, recordemos rápidamente dos recursos fundamentales de Kubernetes:
- Deployments: Gestionan los Pods de su aplicación y garantizan que siempre se esté ejecutando el número deseado de réplicas. También gestionan las actualizaciones y las reversiones.
- Services: Definen cómo acceder a su aplicación, por ejemplo, internamente dentro del clúster o externamente mediante un LoadBalancer.
Nuestro objetivo es aplicar en el clúster, desde GitHub Actions, los archivos YAML que definen estos recursos.
Autenticación de Actions en K8s
Para realizar la implementación, el flujo de trabajo de GitHub Actions debe comunicarse con el servidor de API de su clúster de Kubernetes.
Esto requiere autenticación. La forma estándar de autenticarse en Kubernetes es mediante un archivo kubeconfig.
Debemos proporcionar de forma segura el contenido de este archivo al ejecutor del flujo de trabajo.
Protección de kubeconfig
El archivo kubeconfig contiene información confidencial, como los endpoints del clúster y las credenciales de usuario. ¡Debe mantenerse en secreto!
GitHub Actions proporciona Secrets para este fin. Almacenará el contenido de su archivo kubeconfig como un secreto del repositorio.
¿Cómo obtener su kubeconfig? Depende de su proveedor de K8s, por ejemplo, aws eks update-kubeconfig o gcloud container clusters get-credentials.
Configuración del contexto de K8s
Una vez que haya almacenado su kubeconfig como secreto, por ejemplo, con el nombre KUBE_CONFIG_DATA, su flujo de trabajo podrá utilizarlo.
La práctica habitual consiste en escribir el contenido del secreto en un archivo temporal del ejecutor y, a continuación, establecer la variable de entorno KUBECONFIG para que apunte a él.
Esto indica a kubectl dónde encontrar los datos de conexión del clúster.
Uso de `kubectl` en los flujos de trabajo
kubectl es la herramienta oficial de línea de comandos para interactuar con clústeres de Kubernetes. Los ejecutores de GitHub Actions ya tienen kubectl preinstalado.
Después de configurar el kubeconfig, puede ejecutar cualquier comando de kubectl en los pasos de su flujo de trabajo.
Veamos un ejemplo básico:
name: K8s Setup Test
on: [workflow_dispatch]
jobs:
test-kubeconfig:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Kubeconfig
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
run: |
mkdir -p ~/.kube
echo "$KUBE_CONFIG_DATA" > ~/.kube/config
chmod 600 ~/.kube/config
echo "KUBECONFIG=$HOME/.kube/config" >> $GITHUB_ENV
- name: Verify kubectl access
run: kubectl version --clientManifiesto sencillo de Deployment en K8s
A continuación se muestra un manifiesto básico de Kubernetes con un Deployment y un Service para una aplicación llamada "hello-world". Esto es lo que pediremos a Kubernetes que ejecute.
Este ejemplo utiliza una imagen sencilla de Nginx y la expone en el puerto 80.
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-app-deployment
spec:
replicas: 1
selector:
matchLabels:
app: hello-app
template:
metadata:
labels:
app: hello-app
spec:
containers:
- name: hello-app
image: nginx:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: hello-app-service
spec:
selector:
app: hello-app
ports:
- protocol: TCP
port: 80
targetPort: 80
type: LoadBalancerFlujo de trabajo completo de implementación
Ahora integremos el paso de implementación en un flujo de trabajo. Después de compilar y publicar la imagen del contenedor, como se explicó en lecciones anteriores, puede implementarla.
Este flujo de trabajo supone que el secreto kubeconfig está configurado y que el archivo de manifiesto, por ejemplo, k8s/deployment.yaml, existe en su repositorio.
name: Deploy to Kubernetes
on:
push:
branches:
- main
workflow_dispatch:
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Kubeconfig
env:
KUBE_CONFIG_DATA: ${{ secrets.KUBE_CONFIG_DATA }}
run: |
mkdir -p ~/.kube
echo "$KUBE_CONFIG_DATA" > ~/.kube/config
chmod 600 ~/.kube/config
echo "KUBECONFIG=$HOME/.kube/config" >> $GITHUB_ENV
- name: Deploy application to K8s
run: kubectl apply -f k8s/deployment.yamlActualización de la aplicación
Una de las grandes ventajas de kubectl apply es su idempotencia. Si los recursos definidos en su archivo YAML ya existen, kubectl apply los actualizará en lugar de crear otros nuevos.
Para implementar una nueva versión de su aplicación, solo tiene que actualizar la etiqueta de imagen en deployment.yaml y publicar el cambio. GitHub Actions se activará y Kubernetes realizará una actualización gradual, sustituyendo poco a poco los Pods antiguos por otros nuevos para garantizar un tiempo de inactividad mínimo.
Comprobación rápida
Ha aprendido los pasos esenciales para implementar una aplicación en Kubernetes mediante GitHub Actions.
¿Cuál de las siguientes opciones muestra la secuencia correcta de pasos de un flujo de trabajo de GitHub Actions para implementar un manifiesto de Kubernetes?
Repaso y próximos pasos
¡Excelente trabajo! Ha aprendido a configurar la implementación continua en Kubernetes mediante GitHub Actions.
- Almacenamos los datos confidenciales de
kubeconfigen GitHub Secrets. - Los flujos de trabajo utilizan este secreto para configurar
kubectl. kubectl apply -fse utiliza para implementar o actualizar manifiestos de K8s.- Kubernetes gestiona las actualizaciones graduales cuando se aplican cambios.
Esta potente combinación automatiza sus implementaciones y hace que el proceso de desarrollo sea más fluido y rápido. ¡Siga explorando funciones más avanzadas de K8s!
Preguntas frecuentes
¿La lección «Despliegue en Kubernetes con Actions» es gratis?
Sí — el texto completo de «Despliegue en Kubernetes con Actions» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de CI/CD with GitHub Actions & DevOps Pipelines, actualiza a CoddyKit PRO. El curso de CI/CD with GitHub Actions & DevOps Pipelines incluye 4 lecciones en total.
¿Qué aprenderé en «Despliegue en Kubernetes con Actions»?
Configure el despliegue continuo en clústeres de Kubernetes y gestione despliegues y servicios directamente desde GitHub Actions. Practicas CI/CD with GitHub Actions & DevOps Pipelines con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar CI/CD with GitHub Actions & DevOps Pipelines?
No se requiere experiencia previa. CI/CD with GitHub Actions & DevOps Pipelines en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Despliegue en Kubernetes con Actions»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de CI/CD with GitHub Actions & DevOps Pipelines?
Sí. Cada lección de CI/CD with GitHub Actions & DevOps Pipelines incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Creación de imágenes Docker con Actions
- Publicación de imágenes en registros
- Despliegue en Kubernetes con Actions
- Charts de Helm y manifiestos de Kubernetes en CI/CD