0Pricing
DevOps Bootcamp · Lección

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 DevOps Bootcamp 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 DevOps Bootcamp, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de DevOps Bootcamp 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 --client

Manifiesto 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: LoadBalancer

Flujo 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.yaml

Actualizació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 kubeconfig en GitHub Secrets.
  • Los flujos de trabajo utilizan este secreto para configurar kubectl.
  • kubectl apply -f se 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 DevOps Bootcamp, actualiza a CoddyKit PRO. El curso de DevOps Bootcamp 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 DevOps Bootcamp 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 DevOps Bootcamp?

No se requiere experiencia previa. DevOps Bootcamp 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 DevOps Bootcamp?

Sí. Cada lección de DevOps Bootcamp 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

  1. Creación de imágenes Docker con Actions
  2. Publicación de imágenes en registros
  3. Despliegue en Kubernetes con Actions
  4. Charts de Helm y manifiestos de Kubernetes en CI/CD
← Volver a DevOps Bootcamp