Implementación de Acciones de GitHub de alta disponibilidad en Azure Kubernetes Service (AKS) mediante la introducción a Azure Files

En esta guía, implementará un controlador de Acciones de GitHub de alta disponibilidad y agentes autohospedados que se ejecutan en Azure Kubernetes Service (AKS). Los ejecutores autohospedados usan recursos compartidos de archivos de Azure SMB para el almacenamiento persistente.

Importante

El software de código abierto se menciona en toda la documentación y ejemplos de AKS. El software que implemente se excluye de los contratos de nivel de servicio de AKS, la garantía limitada y el soporte técnico de Azure. A medida que usa la tecnología de código abierto junto con AKS, consulte las opciones de soporte técnico disponibles en las comunidades y los mantenedores de proyectos respectivos para desarrollar un plan.

Microsoft asume la responsabilidad de crear los paquetes de código abierto que implementamos en AKS. Esa responsabilidad incluye ser plenamente responsable del proceso de compilación, escaneo, firma, validación y corrección rápida, junto con el control de los binarios en las imágenes de contenedor. Para obtener más información, consulte Administración de vulnerabilidades para AKS y Cobertura del soporte técnico de AKS.

¿Qué es el controlador de ejecutor de acciones (ARC)?

Actions Runner Controller (ARC) es un operador de Kubernetes que organiza y escala ejecutores autohospedados para Acciones de GitHub. ARC se basa en volúmenes persistentes (PVs) para compartir información de trabajo entre el pod del ejecutor y el pod de trabajo de contenedor. Para obtener más información, consulte Acerca del controlado de ejecutor de acciones.

¿Por qué usar acciones de GitHub autohospedados en AKS?

Los runners de GitHub Actions autohospedados en AKS proporcionan a las organizaciones un mayor control, escalabilidad y seguridad sobre su infraestructura de CI/CD. En lugar de confiar en runners hospedados en GitHub, que son compartidos y efímeros, los runners autohospedados ofrecen:

  • Entornos personalizados: adapte los ejecutores para que coincidan con requisitos específicos de compilación, prueba o implementación.
  • Mejoras de rendimiento: aproveche el almacenamiento persistente y el almacenamiento en caché para reducir los tiempos de compilación y mejorar la confiabilidad.
  • Rentabilidad a escala: ejecutores de escalado dinámico dentro de su propia infraestructura, optimizando para flujos de trabajo frecuentes o de larga duración.
  • Seguridad y aislamiento mejorados: mantenga un control total sobre la infraestructura y los datos, que es ideal para sectores regulados o cargas de trabajo confidenciales.

Casos de uso comunes

  • Canalizaciones de CI/CD empresariales: destinadas a los equipos que necesitan entornos de compilación coherentes, seguros y escalables.
  • Canalizaciones monorepos o ML grandes: donde la persistencia de artefactos o almacenamiento en caché es fundamental.
  • Optimización del rendimiento: uso de recursos compartidos SMB premium de Azure Files para reducir la latencia de metadatos y aumentar las IOPS.

Prerrequisitos

  • En esta guía se presupone un conocimiento básico de los conceptos básicos de Kubernetes.
  • Necesita los roles integrados de AzurePropietario o Administrador de acceso de usuario y el de Colaborador en una suscripción en la cuenta de Azure.

Proceso de implementación

En esta guía, aprenderá a:

  • Use la CLI de Azure para crear un clúster de AKS de varias zonas.
  • Implemente un recurso compartido de archivos de Azure para usarlo en volúmenes persistentes de AKS.
  • Instale el controlador de ejecutor de acciones de GitHub (ARC) en AKS.
  • Instale un conjunto de escalado de ejecutores de ARC y monte el recurso compartido de archivos en AKS.
  • Ejecute un flujo de trabajo de ejemplo mediante Acciones de GitHub.

Arquitectura de implementación

Esta arquitectura de referencia muestra cómo implementar una solución de ejecutor autohospedado de Acciones de GitHub mediante AKS y Azure File Share (SMB). La solución permite a las organizaciones ejecutar trabajos de flujo de trabajo de GitHub de forma segura dentro de su propia infraestructura de Azure, a la vez que mantiene una administración y escalabilidad de almacenamiento eficientes.

Captura de pantalla del diagrama de arquitectura para Acciones de GitHub con Azure Files en AKS.

La arquitectura consta de tres componentes principales:

  1. Capa de integración de GitHub: conecta flujos de trabajo desde repositorios de GitHub a la infraestructura de Azure.
  2. Capa de orquestación de AKS: administra las instancias del ejecutor en contenedor y su ciclo de vida.
  3. Capa de almacenamiento: proporciona funcionalidades de almacenamiento persistentes y efímeras para los ejecutores.

Capa de integración de GitHub

El nivel de integración de GitHub conecta flujos de trabajo de repositorios de GitHub a la infraestructura de Azure. Los trabajos de flujo de trabajo se envían desde GitHub a través api.github.com de y githubusercontent.com a ejecutores autohospedados.

Capa de orquestación de clústeres de AKS

La capa de orquestación del clúster de AKS gestiona las instancias de ejecución en contenedores y su ciclo de vida. El clúster se divide en dos espacios de nombres: arc-controller y arc-runners.

arc-controller administra la infraestructura del ejecutor y los agentes de escucha de trabajos. arc-runners controla secretos, control de acceso y pods de ejecutor. Los ejecutores están en contenedores, usan almacenamiento efímero y se conectan a volúmenes compartidos y dedicados.

Capa de almacenamiento

La capa de almacenamiento recursos compartidos de archivos de Azure proporciona tanto recurso compartido de archivos NuGet con ReadWriteMany acceso para dependencias compartidas como almacenamiento efímero para ejecutores, todo respaldado por notificaciones de volumen persistentes.

Paso siguiente

Colaboradores

Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores:

  • Jorge Arterio | Promotor sénior de la nube
  • Jeff Patterson | Administrador de productos principal
  • Rena Shah | Jefe de producto sénior
  • Shekhar Singh Sorot | Administrador de productos 2
  • Erin Schaffer | Desarrollador de contenido 2