소개
Actions Runner Controller (ARC)는 GitHub Actions에 대한 자체 호스트형 실행기를 오케스트레이션하고 스케일링하는 Kubernetes 연산자입니다. 자세한 내용은 Kubernetes 문서의 작동 패턴을 참조하세요.
ARC를 사용하면 리포지토리, 조직 또는 엔터프라이즈에서 실행되는 워크플로 수에 따라 오토스케일링되는 실행기 확장 집합을 만들 수 있습니다. 제어된 실행기가 임시 실행기이거나 컨테이너 기반일 수 있으므로, 새 실행기 인스턴스는 신속하고 명확하게 스케일 업 또는 스케일 다운할 수 있습니다. 오토스케일링에 대한 자세한 내용은 “자체 호스트형 실행기로 자동 스케일링”을 참조하세요.
Helm을 사용하여 Kubernetes에서 ARC를 설정한 다음, 실행기 확장 집합을 사용하는 워크플로를 만들고 실행할 수 있습니다. 실행기 확장 집합에 대한 자세한 내용은 "Actions Runner Controller를 사용하여 실행기 확장 집합 배포"을 참조하세요.
필수 조건
ARC를 사용하려면 다음이 있는지 확인합니다.
-
Kubernetes 클러스터
-
관리 클라우드 환경의 경우 AKS를 사용할 수 있습니다. 자세한 내용은 Azure AI 서비스 설명서의 Azure Kubernetes 서비스를 참조하세요.
-
로컬 설정의 경우 minikube 또는 kind를 사용할 수 있습니다. 자세한 내용은 minikube 설명서의 minkube 시작 및 kind 설명서의 kind를 참조하세요.
참고: OpenShift 클러스터는 현재 지원되지 않습니다.
-
-
Helm 3
- 자세한 내용은 Helm 설명서에서 "Helm 설치"를 참조하세요.
-
ARC를 배포할 필요는 없지만 프로덕션 워크플로에서 ARC를 배포하기 전에 컨트롤러, 수신기 및 임시 실행기에서 로그를 수집하고 유지하는 방법을 구현했는지 확인하는 것이 좋습니다.
Actions Runner Controller 설치
-
클러스터에 운영자 및 CRD(사용자 지정 리소스 정의)를 설치하려면 다음을 수행합니다.
- Helm 차트에서 연산자 Pod를 만들 위치로
NAMESPACE
값을 업데이트합니다. 이 네임스페이스는 Kubernetes API 서버에 대한 액세스를 허용해야 합니다. - Helm 차트 설치
다음 예에서는 차트의 최신 버전을 설치합니다. 특정 버전을 설치하려면 설치하려는 차트 버전과 함께
--version
인수를 전달할 수 있습니다. 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
추가 Helm 구성 옵션은 ARC 설명서의
values.yaml
을 참조하세요. - Helm 차트에서 연산자 Pod를 만들 위치로
-
ARC에서 GitHub에 인증할 수 있도록 하려면 personal access token (classic)을(를) 생성합니다. 자세한 내용은 "GitHub API에 인증"을 참조하세요.
실행기 확장 집합 구성
-
실행기 확장 집합을 구성하려면 ARC 구성의 값을 사용하여 터미널에서 다음 명령을 실행합니다.
명령을 실행할 때 다음 사항에 유의하세요.
-
INSTALLATION_NAME
값을 신중하게 업데이트합니다. 설치 이름을 워크플로의runs-on
값으로 사용합니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을 참조하세요. -
실행기 Pod를 만들려는 위치로
NAMESPACE
값을 업데이트합니다. -
GITHUB_CONFIG_URL
을 리포지토리, 조직 또는 엔터프라이즈의 URL로 설정합니다. 실행기에서 속하게 될 엔터티입니다. -
이 예제 명령은 Helm 차트의 최신 버전을 설치합니다. 특정 버전을 설치하려면 설치하려는 차트 버전과 함께
--version
인수를 전달할 수 있습니다. GitHub 컨테이너 레지스트리에서 릴리스 목록을 찾을 수 있습니다.고:
- 보안을 위해 실행기 포드는 운영자 포드가 있는 네임스페이스가 아닌 다른 네임스페이스에 만듭니다.
- 보안을 위해 Kubernetes 비밀을 만들고 비밀 참조를 전달합니다. 비밀을 CLI에서 일반 텍스트로 전달하면 보안 위험이 발생할 수 있습니다. 자세한 내용은 "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
추가 Helm 구성 옵션은 ARC 설명서의
values.yaml
을 참조하세요.
-
-
터미널에서 다음 명령을 실행하여 설치를 확인합니다.
Bash helm list -A
helm list -A
다음과 유사한 결과가 표시됩니다.
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
-
관리자 Pod를 설치하려면 터미널에서 다음 명령을 실행합니다.
Bash kubectl get pods -n arc-systems
kubectl get pods -n arc-systems
모든 항목이 성공적으로 설치되면 Pod의 상태가 실행 중으로 표시됩니다.
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
설치에 성공하지 못한 경우 문제 해결 정보는 "Actions Runner Controller 오류 문제 해결"을 참조하세요.
실행기 확장 집합 사용
이제 실행기 확장 집합 실행기를 사용하는 간단한 테스트 워크플로를 만들고 실행하게 될 것입니다.
-
리포지토리에서 다음 예제와 유사한 워크플로를 만듭니다. 값은
runs-on
자동 스케일링 실행기 집합을 설치할 때 사용한 Helm 설치 이름과 일치해야 합니다.리포지토리에 파일 추가에 대한 자세한 내용은 "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!"
-
리포지토리에 워크플로를 추가한 후 워크플로를 수동으로 트리거합니다. 자세한 내용은 "워크플로 수동 실행"을 참조하세요.
-
워크플로가 실행되는 동안 생성되는 실행기 Pod를 보려면 터미널에서 다음 명령을 실행합니다.
Bash kubectl get pods -n arc-runners
kubectl get pods -n arc-runners
성공하면 출력은 다음과 유사하게 표시됩니다.
NAMESPACE NAME READY STATUS RESTARTS AGE arc-runners arc-runner-set-rmrgw-runner-p9p5n 1/1 Running 0 21s
다음 단계
Actions Runner Controller은(는) GitHub Actions 실행기를 효율적으로 관리하는 데 도움이 될 수 있습니다. 시작할 준비가 되셨나요? ARC를 사용하여 다음 단계를 수행하는 데 유용한 몇 가지 리소스는 다음과 같습니다.
- 인증 정보에 대한 자세한 내용은 GitHub API에 인증을 참조하세요.
- 워크플로에서 ARC 실행기를 사용하는 방법에 대한 도움말은 "워크플로에서 Actions Runner Controller 실행기 사용"을 참조하세요.
- 배포 정보는 "Actions Runner Controller를 사용하여 실행기 확장 집합 배포"을 참조하세요.
법적 고지
다음은 Apache-2.0 라이선스에서 https://github.com/actions/actions-runner-controller/로부터 일부 조정되었습니다.
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.