title: Quickstart for Actions Runner Controller
shortTitle: Quickstart
intro: >-
In this tutorial, you'll try out the basics of {% data
variables.product.prodname_actions_runner_controller %}.
versions:
fpt: '*'
ghec: '*'
ghes: '*'
type: quick_start
topics:
- Actions Runner Controller
defaultPlatform: linux
redirect_from:
- >-
/actions/hosting-your-own-runners/managing-self-hosted-runners-with-actions-runner-controller/quickstart-for-actions-runner-controller
- /actions/tutorials/quickstart-for-actions-runner-controller
- >-
/actions/tutorials/actions-runner-controller/quickstart-for-actions-runner-controller
Prerequisites
In order to use ARC, ensure you have the following.
A Kubernetes cluster
- For a managed cloud environment, you can use AKS. For more information, see Azure Kubernetes Service in the Azure documentation.
- For a local setup, you can use minikube or kind. For more information, see minikube start in the minikube documentation and kind in the kind documentation.
Helm 3
- For more information, see Installing Helm in the Helm documentation.
While it is not required for ARC to be deployed, we recommend ensuring you have implemented a way to collect and retain logs from the controller, listeners, and ephemeral runners before deploying ARC in production workflows.
Installing Actions Runner Controller
To install the operator and the custom resource definitions (CRDs) in your cluster, do the following.
- In your Helm chart, update the
NAMESPACEvalue to the location you want your operator pods to be created. This namespace must allow access to the Kubernetes API server. - Install the Helm chart.
The following example installs the latest version of the chart. To install a specific version, you can pass the
--versionargument along with the version of the chart you wish to install. You can find the list of releases in the GitHub Container Registry.NAMESPACE="arc-systems" helm install arc \ --namespace "{% raw %}${NAMESPACE}{% endraw %}" \ --create-namespace \ oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-set-controllerFor additional Helm configuration options, see
values.yamlin the ARC documentation.- In your Helm chart, update the
To enable ARC to authenticate to {% data variables.product.company_short %}, generate a {% data variables.product.pat_v1 %}. For more information, see AUTOTITLE.
Configuring a runner scale set
To configure your runner scale set, run the following command in your terminal, using values from your ARC configuration.
When you run the command, keep the following in mind.
Update the
INSTALLATION_NAMEvalue carefully. You will use the installation name as the value ofruns-onin your workflows. For more information, see AUTOTITLE.Update the
NAMESPACEvalue to the location you want the runner pods to be created.Set
GITHUB_CONFIG_URLto the URL of your repository, organization, or enterprise. This is the entity that the runners will belong to. {% ifversion fpt %}Set
GITHUB_PATto a {% data variables.product.company_short %} {% data variables.product.pat_generic %} with therepoandadmin:orgscopes for repository and organization runners. {% else %}Set
GITHUB_PATto a {% data variables.product.company_short %} {% data variables.product.pat_generic %} with therepoandmanage_runners:orgscopes for repository and organization runners, and themanage_runners:enterprisescope for enterprise runners. {% endif %}This example command installs the latest version of the Helm chart. To install a specific version, you can pass the
--versionargument with the version of the chart you wish to install. You can find the list of releases in the GitHub Container Registry.- {% data reusables.actions.actions-runner-controller-security-practices-namespace %}
- {% data reusables.actions.actions-runner-controller-security-practices-secret %} For more information, see AUTOTITLE.
INSTALLATION_NAME="arc-runner-set" NAMESPACE="arc-runners" GITHUB_CONFIG_URL="https://github.com/<your_enterprise/org/repo>" GITHUB_PAT="<PAT>" helm install "{% raw %}${INSTALLATION_NAME}{% endraw %}" \ --namespace "{% raw %}${NAMESPACE}{% endraw %}" \ --create-namespace \ --set githubConfigUrl="{% raw %}${GITHUB_CONFIG_URL}{% endraw %}" \ --set githubConfigSecret.github_token="{% raw %}${GITHUB_PAT}{% endraw %}" \ oci://ghcr.io/actions/actions-runner-controller-charts/gha-runner-scale-setFor additional Helm configuration options, see
values.yamlin the ARC documentation.
From your terminal, run the following command to check your installation.
helm list -AYou should see an output similar to the following.
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.0To check the manager pod, run the following command in your terminal.
kubectl get pods -n arc-systemsIf everything was installed successfully, the status of the pods shows as Running.
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
If your installation was not successful, see AUTOTITLE for troubleshooting information.
Using runner scale sets
Now you will create and run a simple test workflow that uses the runner scale set runners.
In a repository, create a workflow similar to the following example. The
runs-onvalue should match the Helm installation name you used when you installed the autoscaling runner set.For more information on adding workflows to a repository, see AUTOTITLE.
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!"Once you've added the workflow to your repository, manually trigger the workflow. For more information, see AUTOTITLE.
To view the runner pods being created while the workflow is running, run the following command from your terminal.
kubectl get pods -n arc-runners -wA successful output will look similar to the following.
NAMESPACE NAME READY STATUS RESTARTS AGE arc-runners arc-runner-set-rmrgw-runner-p9p5n 1/1 Running 0 21s
Next steps
{% data variables.product.prodname_actions_runner_controller %} can help you efficiently manage your {% data variables.product.prodname_actions %} runners. Ready to get started? Here are some helpful resources for taking your next steps with ARC:
- For detailed authentication information, see AUTOTITLE.
- For help using ARC runners in your workflows, see AUTOTITLE.
- For deployment information, see AUTOTITLE.
Legal notice
{% data reusables.actions.actions-runner-controller-legal-notice %}