AKS(Azure Kubernetes Service)에서 고가용성 GitHub Actions 배포 및 테스트

이 문서에서는 AKS(Azure Kubernetes Service)에서 Azure Files를 사용하여 고가용성 GitHub Actions를 배포하고 테스트하는 방법을 알아봅니다.

GitHub Actions 샘플 워크플로

리포지토리에는 자체 호스팅 ARC 실행기를 테스트할 수 있는 세 가지 샘플 워크로드가 기본 GitHub 워크플로 폴더 에 있습니다.

  • dotnet-using-container.yml: 컨테이너를 사용하는 .NET 빌드는 .NET SDK를 설치하고 실행기 자체에 애플리케이션을 복원/빌드/게시합니다.
  • dotnet-without-container.yml: 컨테이너가 없는 .NET 빌드는 워크플로 컨테이너 기능을 사용하여 .NET SDK 컨테이너를 실행하고 컨테이너 내의 애플리케이션 내에서 빌드합니다. NuGet 캐싱은 기본적으로 이 컨테이너에 탑재됩니다.
  • container-service-test.yml: 컨테이너 및 서비스 테스트 워크플로도 컨테이너 기능을 사용하여 Ubuntu 컨테이너 및 Redis 서비스를 만듭니다. 두 컨테이너는 동일한 AKS Pod에서 실행됩니다. NuGet 캐싱도 이 컨테이너에 기본적으로 탑재됩니다.

세 워크플로 모두 runs-on: 필드에서 사용할 ARC 실행기 이름을 위한 입력 매개 변수가 있습니다. 앞에서 정의한 ARC_RUNNER_SCALESET_NAME="arc-runner-set" 변수입니다. 테스트를 용이하게 하기 위해 세 가지 워크플로의 옵션을 사용하여 workflow_dispatch: 수동으로 요청된 경우에만 해당 워크플로를 실행합니다. 리포지토리의 GitHub Actions 탭에서 워크플로 중 하나를 선택하고 워크로드를 실행합니다.

워크플로가 실행되면 AKS 클러스터에서 실행 중인 ARC에 러너를 요청합니다. Kubernetes의 Pod인 러너(실행기)가 작업에 할당되면, 워크플로가 해당 실행기에서 완료될 때까지 실행됩니다. 임시 실행기 방법을 사용하므로 워크플로를 실행하는 Pod는 마지막에 제거되고 다음 워크플로 실행을 위해 새 Pod가 만들어집니다.

리소스 삭제

준비가 되면 다음 명령을 사용하여 이 가이드에서 만든 모든 리소스를 삭제할 수 있습니다.

# Delete ARC runners scale sets 

helm delete "${ARC_RUNNER_SCALESET_NAME}" -n "${NAMESPACE_ARC_RUNNERS}" --wait 

# Delete ARC runners scale set controller 

helm delete "${ARC_CONTROLLER_NAME}" -n "${NAMESPACE_ARC_CONTROLLER}" --wait 

# Delete Azure File share configurations 

kubectl delete -f ./install/arc-runners-set-pv-pvc.yaml --wait 
kubectl delete -f ./install/arc-runners-storage-class-files.yaml --wait 

# Delete secrets 

kubectl delete secret azure-storage-secret -n arc-runners --wait 
kubectl delete secret ${ARC_RUNNER_GITHUB_SECRET_NAME} -n arc-runners --wait 

# Delete container runner configmap pod spec 

kubectl delete -f ./install/arc-runners-set-container-pod-spec.yaml --wait 

# Delete namespaces 

kubectl delete namespace ${NAMESPACE_ARC_RUNNERS} 
kubectl delete namespace ${NAMESPACE_ARC_CONTROLLER} 

다음 단계

AKS(Azure Kubernetes Service)에서 오픈 소스 소프트웨어를 배포하는 방법에 대한 자세한 내용은 다음 문서를 참조하세요.

기여자

Microsoft는 이 문서를 유지 관리합니다. 다음 기여자는 원래 그것을 썼다:

  • Jorge Arterio | 선임 클라우드 옹호자
  • Jeff Patterson | 주 제품 관리자
  • 레나 샤 | 선임 제품 관리자
  • 셰카르 싱 소로트 | Product Manager 2
  • Erin Schaffer | 콘텐츠 개발자 2