Skip to main content

Inicio rápido para Actions Runner Controller

Prueba Actions Runner Controller en 5 minutos.

Aviso legal

Introducción

Actions Runner Controller (ARC) es un operador de Kubernetes que organiza y escala los ejecutores autohospedados para GitHub Actions. Para obtener más información, consulta Patrón de operador en la documentación de Kubernetes.

Con ARC, puedes crear conjuntos de escalado de ejecutor que se escalen automáticamente en función del número de flujos de trabajo que se ejecutan en el repositorio, la organización o la empresa. Dado que los ejecutores controlados pueden ser efímeros y estar basados en contenedores, las nuevas instancias de ejecutores se pueden escalar o reducir verticalmente de forma rápida y limpia. Para obtener más información sobre el escalado automático, consulta "Autoescalar con ejecutores auto-hospedados".

Puedes configurar ARC en Kubernetes mediante Helm y, a continuación, crear y ejecutar un flujo de trabajo que use conjuntos de escalado de ejecutor. Para obtener más información sobre los conjuntos de escalado de ejecutor, consulta "Implementación de conjuntos de escalado de ejecutor con Actions Runner Controller".

Prerrequisitos

Para usar ARC, asegúrate de que tienes lo siguiente.

  • Un clúster de Kubernetes

    • Para un entorno de nube administrado, puedes usar AKS. Para obtener más información, consulta Azure Kubernetes Service en la documentación de Azure.

    • Para una configuración local, puedes usar minikube o kind. Para obtener más información, consulta inicio de minikube en la documentación de minikube y tipo en la documentación de tipos.

      Nota: Los clústeres de OpenShift no son compatibles actualmente.

  • Helm 3

  • Aunque no es necesario implementar ARC, se recomienda asegurarse de que ha implementado una manera de recopilar y conservar registros del controlador, los agentes de escucha y los ejecutores efímeros antes de implementar ARC en flujos de trabajo de producción.

Instalación de Actions Runner Controller

  1. Para instalar el operador y las definiciones de recursos personalizados (CRD) en el clúster, haz lo siguiente.

    1. En el gráfico de Helm, actualiza el valor NAMESPACE a la ubicación en la que deseas que se creen los pods de operador. Este espacio de nombres debe permitir el acceso al servidor de API de Kubernetes.
    2. Instala el gráfico de Helm.

    En el ejemplo siguiente se instala la versión más reciente del gráfico. Para instalar una versión específica, puedes pasar el argumento --version junto con la versión del gráfico que deseas instalar. Puedes encontrar la lista de versiones en Container Registry de GitHub.

    Bash
    NAMESPACE="arc-systems"
    helm install arc \
        --namespace "${NAMESPACE}" \
        --create-namespace \
        oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set-controller
    

    Para ver más opciones de configuración de Helm, consulta values.yaml en la documentación de ARC.

  2. Para permitir que ARC se autentique en GitHub, genera un personal access token (classic). Para más información, consulta Autenticación en la API de GitHub.

Configuración de un conjunto de escalado de ejecutor

  1. Para configurar el conjunto de escalado del ejecutor, ejecuta el siguiente comando en el terminal mediante valores de la configuración de ARC.

    Al ejecutar el comando, ten en cuenta lo siguiente.

    • Actualiza el valor INSTALLATION_NAME cuidadosamente. Usarás el nombre de instalación como valor de runs-on en los flujos de trabajo. Para obtener más información, vea «Sintaxis del flujo de trabajo para Acciones de GitHub».

    • Actualiza el valor NAMESPACE a la ubicación en la que deseas que se creen los pods del ejecutor.

    • Establece GITHUB_CONFIG_URL en la dirección URL del repositorio, de la organización o de la empresa. Esta es la entidad a la que pertenecerán los ejecutores.

    • Este comando de ejemplo instala la versión más reciente del gráfico de Helm. Para instalar una versión específica, puedes pasar el argumento --version con la versión del gráfico que deseas instalar. Puedes encontrar la lista de versiones en Container Registry de GitHub.

      Nota:

      • Como procedimiento recomendado de seguridad, crea los pods del ejecutor en un espacio de nombres diferente al espacio de nombres que contiene los pods del operador.
      • Como procedimiento recomendado de seguridad, crea secretos de Kubernetes y pasa las referencias de los secretos. Pasar los secretos en texto sin formato a través de la CLI puede suponer un riesgo de seguridad. Para obtener más información, consulta "Implementación de conjuntos de escalado de ejecutor con Actions Runner Controller".
      Bash
      INSTALLATION_NAME="arc-runner-set"
      NAMESPACE="arc-runners"
      GITHUB_CONFIG_URL="https://github.com/<your_enterprise/org/repo>"
      GITHUB_PAT="<PAT>"
      helm install "${INSTALLATION_NAME}" \
          --namespace "${NAMESPACE}" \
          --create-namespace \
          --set githubConfigUrl="${GITHUB_CONFIG_URL}" \
          --set githubConfigSecret.github_token="${GITHUB_PAT}" \
          oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set
      

      Para ver más opciones de configuración de Helm, consulta values.yaml en la documentación de ARC.

  2. Desde el terminal, ejecuta el siguiente comando para comprobar la instalación.

    Bash
    helm list -A
    

    Debería ver una salida similar a la siguiente.

    NAME            NAMESPACE       REVISION        UPDATED                                 STATUS          CHART                                       APP VERSION
    arc             arc-systems     1               2023-04-12 11:45:59.152090536 +0000 UTC deployed        gha-runner-scale-set-controller-0.4.0       0.4.0
    arc-runner-set  arc-runners     1               2023-04-12 11:46:13.451041354 +0000 UTC deployed        gha-runner-scale-set-0.4.0                  0.4.0
    
  3. Para comprobar el pod del administrador, ejecuta el siguiente comando en el terminal.

    Bash
    kubectl get pods -n arc-systems
    

    Si todo se instaló correctamente, el estado de los pods se muestra como En ejecución.

    NAME                                                   READY   STATUS    RESTARTS   AGE
    arc-gha-runner-scale-set-controller-594cdc976f-m7cjs   1/1     Running   0          64s
    arc-runner-set-754b578d-listener                       1/1     Running   0          12s
    

Si la instalación no se realizó correctamente, consulta "Solución de errores de Actions Runner Controller" para obtener información sobre solución de problemas.

Uso de conjuntos de escalado de ejecutor

Ahora crearás y ejecutarás un flujo de trabajo de prueba sencillo que usa los ejecutores del conjunto de escalado del ejecutor.

  1. En un repositorio, crea un flujo de trabajo similar al ejemplo siguiente. El valor runs-on debe coincidir con el nombre de instalación de Helm que usaste al instalar el ejecutor de escalado automático establecido.

    Para más información sobre cómo agregar flujos de trabajo a un repositorio, consulta "Guía de inicio rápido para GitHub Actions".

    YAML
    name: Actions Runner Controller Demo
    on:
      workflow_dispatch:
    
    jobs:
      Explore-GitHub-Actions:
        # You need to use the INSTALLATION_NAME from the previous step
        runs-on: arc-runner-set
        steps:
        - run: echo "🎉 This job uses runner scale set runners!"
    
  2. Una vez que hayas agregado el flujo de trabajo al repositorio, desencadena manualmente dicho flujo de trabajo. Para obtener más información, vea «Ejecutar un flujo de trabajo manualmente».

  3. Para ver los pods del ejecutor que se crean mientras se ejecuta el flujo de trabajo, ejecuta el siguiente comando desde el terminal.

    Bash
    kubectl get pods -n arc-runners
    

    Una salida correcta será similar a la siguiente.

    NAMESPACE     NAME                                                  READY   STATUS    RESTARTS      AGE
    arc-runners   arc-runner-set-rmrgw-runner-p9p5n                     1/1     Running   0             21s
    

Pasos siguientes

Actions Runner Controller puede ayudarte a administrar eficientemente los ejecutores de GitHub Actions. ¿Ya está listo para comenzar? Estos son algunos recursos útiles para que completes los pasos siguientes con ARC:

Algunas partes se han adaptado a partir de https://github.com/actions/actions-runner-controller/ con licencia Apache-2.0:

Copyright 2019 Moto Ishizawa

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.