Share via


Azure VMware Solution에서 GitHub Enterprise Server 구성

이 문서에서는 Azure VMware Solution 프라이빗 클라우드에 GitHub.com의 “온-프레미스” 버전인 GitHub Enterprise Server를 설정하는 방법을 배웁니다. 시나리오에서는 GitHub Actions에서 분당 최대 25개 작업을 실행하는 최대 3,000명의 개발자를 지원할 수 있는 GitHub Enterprise Server 인스턴스를 다룹니다. GitHub Actions와 같은 (작성 시점에서의) 미리 보기 기능 설정이 포함되어 있습니다. 특정 요구 사항에 맞게 설정을 사용자 지정하려면 VMware에서 GitHub Enterprise Server 설치에 나열된 요구 사항을 검토하세요.

시작하기 전에

GitHub Enterprise Server에는 유효한 라이선스 키가 필요합니다. 평가판 라이선스에 등록할 수 있습니다. 통합을 통해 GitHub Enterprise Server의 기능을 확장하려는 경우 5개의 무료 개발자 라이선스 자격이 있는지 확인합니다. GitHub의 파트너 프로그램을 통해 이 라이선스를 신청하세요.

VMware에 GitHub Enterprise Server 설치

  1. VMware ESXi/vSphere(OVA)용 GitHub Enterprise Server의 최신 릴리스를 다운로드하고, 다운로드한 OVA 템플릿을 배포합니다.

    Screenshot showing the GitHub Enterprise Server on VMware installation options.

    Screenshot showing the Deploy the OVA Template menu option.

  2. 새 가상 머신에 인식 가능한 이름을 제공합니다(예: GitHubEnterpriseServer). 인스턴스가 업그레이드될 때 이러한 세부 정보가 오래된 정보가 될 수 있으므로 VM 이름에 릴리스 정보를 포함할 필요가 없습니다.

  3. 지금은 모든 기본값(나중에 편집할 세부 정보)을 선택하고 OVA를 가져올 때까지 기다립니다.

  4. 가져온 후에는 요구 사항에 따라 하드웨어 구성을 조정합니다. 예 시나리오에서는 다음과 같은 구성이 필요합니다.

    리소스 표준 설정 표준 설정 + "베타 기능"(Actions)
    vCPU 4 8
    메모리 32GB 61GB
    연결된 스토리지 250GB 300GB
    루트 스토리지 200GB 200GB

    요구 사항은 다양할 수 있습니다. VMware에 GitHub Enterprise Server 설치에서 하드웨어 고려 사항에 대한 지침을 참조하세요. 또한 상황에 따라 하드웨어 구성을 사용자 지정하려면 VMware에 대한 CPU 또는 메모리 리소스 추가를 참조하세요.

GitHub Enterprise Server 인스턴스 구성

Screenshot of the Install GitHub Enterprise window.

새로 프로비전된 VM(가상 머신)이 켜진 후 브라우저를 통해 VM을 구성합니다. 라이선스 파일을 업로드하고 관리 콘솔 암호를 설정해야 합니다. 이 암호는 안전한 위치에 기록해 두어야 합니다.

Screenshot of the GitHub Enterprise SSH access screen to add a new SSH key.

최소한 다음 단계를 수행하는 것이 좋습니다.

  1. SSH를 통해 관리 셸에 액세스할 수 있도록 퍼블릭 SSH 키를 관리 콘솔에 업로드합니다.

  2. 신뢰할 수 있는 인증 기관에서 서명한 인증서를 사용할 수 있도록 인스턴스에서 TLS를 구성합니다. 설정을 적용합니다.

    Screenshot showing the settings being applied to your instance.

  3. 인스턴스가 다시 시작되는 동안 GitHub Actions에 사용할 Blob Storage를 구성합니다.

    GitHub Enterprise Server(현재 "베타" 기능으로 제공)에서 GitHub Actions를 사용하려면 외부 Blob storage가 필요합니다. Actions는 이 외부 Blob Storage를 사용하여 아티팩트와 로그를 저장합니다. GitHub Enterprise Server의 Actions는 Azure Blob Storage를 스토리지 공급자로 지원합니다(기타 일부). 따라서 스토리지 계정 유형의 BlobStorage를 사용하여 새 Azure 스토리지 계정을 만들어야 합니다.

    Screenshot showing the instance details to enter for provisioning an Azure Blob Storage account.

  4. 새 BlobStorage 리소스 배포가 완료되면 나중에 사용할 수 있도록 연결 문자열(액세스 키에서 사용 가능)을 저장합니다.

  5. 인스턴스가 다시 시작된 후 인스턴스에서 새 관리자 계정을 만듭니다. 이 사용자의 암호를 기록해 두어야 합니다.

    Screenshot showing the Create admin account for GitHub Enterprise.

다른 구성 단계

프로덕션에 사용하도록 인스턴스를 강화하려면 다음과 같은 선택적 설정 단계를 수행하는 것이 좋습니다.

  1. 보호를 위한 고가용성 구성:

    • 소프트웨어 충돌(OS 또는 애플리케이션 수준)
    • 하드웨어 오류(스토리지, CPU, RAM 등)
    • 가상화 호스트 시스템 오류
    • 논리적으로 또는 물리적으로 손상된 네트워크
  2. backup-utilities구성하여 주 인스턴스와 별개인 가용성에 호스팅된 재해 복구용 버전 지정된 스냅샷을 제공합니다.

  3. 유효한 TLS 인증서를 사용하여 하위 도메인 격리를 설정하고 사이트 간 스크립팅 및 기타 관련 취약성을 완화합니다.

GitHub Actions 실행기 설정

이 시점에서 관리자 계정이 생성된 GitHub Enterprise Server 인스턴스를 실행해야 합니다. GitHub Actions에서 지속성을 위해 사용할 외부 Blob Storage도 있어야 합니다.

Azure VMware Solution을 사용하여 GitHub Actions를 실행할 위치를 만듭니다.

  1. 클러스터에서 새 VM을 프로비저닝하고 Ubuntu Server의 최신 릴리스를 기준으로 사용합니다.

    Screenshot showing the virtual machine name and location to provision a new VM.

  2. 컴퓨팅 리소스, 스토리지, 호환성을 선택하여 설정을 계속 진행합니다.

  3. VM에 설치하려는 게스트 OS를 선택합니다.

    Screenshot showing the Guest OS Family and Guest OS version to install on the VM.

  4. VM을 만든 후에는 전원을 켜고 SSH를 통해 연결합니다.

  5. GitHub Actions 워크플로에서 작업을 실행하는 Actions 실행기 애플리케이션을 설치합니다. 릴리스 페이지에서 또는 다음 빠른 스크립트를 실행하여 Actions 실행기의 최신 Linux x64 릴리스를 찾고 다운로드합니다. 이 스크립트를 사용하려면 사용자의 VM에는 curl 및 jq가 모두 있어야 합니다.

    LATEST\_RELEASE\_ASSET\_URL=$( curl https://api.github.com/repos/actions/runner/releases/latest | \
    
    jq -r '.assets | .[] | select(.name | match("actions-runner-linux-arm64")) | .url' )
    
    DOWNLOAD\_URL=$( curl $LATEST\_RELEASE\_ASSET\_URL | \
    
    jq -r '.browser\_download\_url' )
    
    curl -OL $DOWNLOAD\_URL
    

    이제 VM에 actions-runner-linux-arm64-*.tar.gz 파일이 로컬로 있어야 합니다. 이 tarball를 로컬로 추출합니다.

    tar xzf actions-runner-linux-arm64-\*.tar.gz
    

    이 추출은 config.shrun.sh 스크립트를 포함하여 몇몇 파일의 압축을 로컬로 풉니다.

GitHub Actions 사용

GitHub Enterprise Server 인스턴스에서 GitHub Actions를 구성하고 사용하도록 설정합니다.

  1. SSH를 통해 GitHub Enterprise Server 인스턴스의 관리 셸에 액세스하고 다음 명령을 실행합니다.

  2. Blob Storage 연결 문자열을 포함하는 환경 변수를 설정합니다.

    export CONNECTION\_STRING="<your connection string from the blob storage step>"
    
  3. Actions 스토리지를 구성합니다.

    ghe-config secrets.actions.storage.blob-provider azure
    
    ghe-config secrets.actions.storage.azure.connection-string "$CONNECTION\_STRING`      
    
  4. 설정을 적용합니다.

    ghe-config-apply
    
  5. 사전 검사를 실행하여 GitHub Enterprise Server에서 Actions에 필요한 추가 소프트웨어를 설치합니다.

    ghe-actions-precheck -p azure -cs "$CONNECTION\_STRING"
    
  6. Actions를 사용하도록 설정하고 구성을 다시 적용합니다.

    ghe-config app.actions.enabled true
    
    ghe-config-apply      
    
  7. Blob Storage의 상태를 확인합니다.

    ghe-actions-check -s blob
    

    ‘Blob Storage가 정상 상태입니다.’라는 출력이 표시됩니다.

  8. 이제 GitHub Actions가 구성되었으므로 사용자가 사용할 수 있도록 설정합니다. GitHub Enterprise Server 인스턴스에 관리자 권한으로 로그인하고 페이지의 오른쪽 위에서 을 선택합니다.

  9. 왼쪽 사이드바에서 Enterprise 개요, 정책, Actions를 차례로 선택하고 모든 조직에 대해 Actions를 사용하도록 설정 옵션을 선택합니다.

  10. 자체 호스팅 실행기 탭에서 실행기를 구성합니다. 드롭다운에서 새로 추가를 선택하고 새 실행기를 선택합니다. 실행할 명령 세트가 표시됩니다.

  11. 명령을 복사하여 실행기를 구성합니다. 예를 들면 다음과 같습니다.

    ./config.sh --url https://10.1.1.26/enterprises/octo-org --token AAAAAA5RHF34QLYBDCHWLJC7L73MA
    
  12. config.sh 명령을 복사하고 Actions 실행기(이전에 만들었음)의 세션에 붙여넣습니다.

    Screenshot showing the GitHub Actions runner registration and settings.

  13. ./run.sh 명령을 사용하여 실행기를 ‘실행’합니다.

    엔터프라이즈의 조직에서 이 실행기를 사용할 수 있도록 설정하려면 조직 액세스를 편집합니다. 조직의 하위 집합과 특정 리포지토리로 액세스를 제한할 수도 있습니다.

    Screenshot of how to edit access for the self-hosted runners.

(선택 사항) GitHub Connect 구성

이 단계는 선택 사항이지만 GitHub.com에서 사용할 수 있는 오픈 소스 작업을 사용하려는 경우에 권장됩니다. 이를 통해 워크플로에서 재사용 가능한 작업을 참조하여 다른 사용자의 작업을 빌드할 수 있습니다.

GitHub Connect를 사용하도록 설정하려면 GitHub Connect를 사용하여 GitHub.com 작업에 대한 자동 액세스 사용 설정의 단계를 수행합니다.

GitHub Connect가 사용 설정되면 GitHub.com에서 작업을 사용할 서버를 선택합니다.

Screenshot of the Server can use actions from GitHub.com in workflow runs Enabled.

첫 번째 워크플로 설정 및 실행

이제 Actions 및 GitHub Connect가 설정되었으므로 이 모든 작업을 사용하도록 하겠습니다. 다음은 octokit/request-action을 참조하는 훌륭한 워크플로 예제이며, GitHub Actions를 통해 지원되는 GitHub API를 사용하는 상호 작용을 통해 GitHub를 "스크립팅"할 수 있습니다.

이 기본 워크플로에서는 octokit/request-action을 사용하여 API를 사용하는 GitHub에서 이슈를 엽니다.

Screenshot of an example workflow.

참고 항목

GitHub.com은 작업을 호스트하지만 GitHub Enterprise Server에서 실행될 때 자동으로 GitHub Enterprise Server API를 사용합니다.

GitHub Connect를 사용하도록 선택하지 않은 경우 다음 대체 워크플로를 사용할 수 있습니다.

Screenshot of an alternative example workflow.

  1. 인스턴스의 리포지토리로 이동하여 위의 워크플로를 .github/workflows/hello-world.yml과 같이 추가합니다.

    Screenshot of another alternative example workflow.

  2. 리포지토리의 작업 탭에서 워크플로가 실행되기를 기다립니다.

    Screenshot of an executed example workflow.

    처리되는 것을 확인할 수 있습니다.

    Screenshot of the workflow processed by runner.

모든 사항이 성공적으로 실행되면 리포지토리에 "Hello world"라는 새 이슈가 표시될 것입니다.

Screenshot of the Hello world issue in GitHub created by github-actions.

축하합니다! Azure VMware Solution 프라이빗 클라우드에서 실행되는 GitHub Enterprise Server에서 첫 번째 Actions 워크플로를 완료했습니다.

이 문서에서는 Azure VMware Solution 프라이빗 클라우드 위에 GitHub Enterprise Server(자체 호스팅 GitHub.com)의 새 인스턴스를 설정합니다. 이 인스턴스에는 GitHub Actions에 대한 지원이 포함되며 로그와 아티팩트의 지속성을 위해 Azure Blob Storage를 사용합니다. 하지만 이제 GitHub Actions로 수행할 수 있는 작업의 일부만 살펴보았습니다. GitHub의 마켓플레이스에서 Actions의 목록을 살펴보거나 직접 만들어 보세요.

다음 단계

Azure VMware Solution 프라이빗 클라우드에서 GitHub Enterprise Server를 설정하는 방법을 알아보았으므로 이제 다음에 대해 자세히 알아봅니다.