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.
Requisitos previos
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.
Note
Los clústeres de OpenShift no son compatibles actualmente.
-
-
Helm 3
- Para más información, consulta Instalación de Helm en la documentación de Helm.
-
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
-
Para instalar el operador y las definiciones de recursos personalizados (CRD) en el clúster, haz lo siguiente.
- 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. - 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
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. - En el gráfico de Helm, actualiza el valor
-
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
-
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 deruns-on
en los flujos de trabajo. Para más información, consulta 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.Note
- 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
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.
-
-
Desde el terminal, ejecuta el siguiente comando para comprobar la instalación.
Bash helm list -A
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
-
Para comprobar el pod del administrador, ejecuta el siguiente comando en el terminal.
Bash kubectl get pods -n arc-systems
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.
-
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!"
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!"
-
Una vez que hayas agregado el flujo de trabajo al repositorio, desencadena manualmente dicho flujo de trabajo. Para más información, consulta Ejecutar un flujo de trabajo manualmente.
-
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
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:
- Para obtener información detallada sobre la autenticación, consulta Autenticación en la API de GitHub.
- Para obtener ayuda sobre el uso de ejecutores de ARC en los flujos de trabajo, consulta Uso de ejecutores de Actions Runner Controller en un flujo de trabajo.
- Para obtener información sobre la implementación, consulta Implementación de conjuntos de escalado de ejecutor con Actions Runner Controller.
Aviso legal
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.