Skip to main content

Azure에 GitHub Enterprise Server 설치

Azure에 GitHub Enterprise Server를 설치하려면 Premium Storage를 지원하는 메모리 최적화 인스턴스에 배포해야 합니다.

글로벌 Azure 또는 Azure Government에 GitHub Enterprise Server를 배포할 수 있습니다.

필수 조건

  • GitHub Enterprise 라이선스 파일이 있어야 합니다. 자세한 내용은 "GitHub Enterprise Server 평가판 설정" 및 "GitHub Enterprise 라이선스 정보"을 참조하세요.
  • 새 머신을 프로비전할 수 있는 Azure 계정이 있어야 합니다. 자세한 내용은 Microsoft Azure 웹 사이트를 참조하세요.
  • VM(가상 머신)을 시작하는 데 필요한 대부분의 작업은 Azure Portal을 사용하여 수행할 수도 있습니다. 그러나 초기 설정을 위해 Azure CLI(명령줄 인터페이스)를 설치하는 것이 좋습니다. Azure CLI 2.0을 사용하는 예제는 다음과 같습니다. 자세한 내용은 Azure 가이드 Azure CLI 2.0 설치를 참조하세요.

하드웨어 고려 사항

최소 요구 사항

GitHub Enterprise Server 인스턴스에 대한 사용자 라이선스 수에 따라 다른 하드웨어 구성을 사용하는 것이 좋습니다. 최소 요구 사항보다 더 많은 리소스를 프로비저닝하면 인스턴스의 성능과 스케일링이 향상됩니다.

사용자 라이선스x86-64 vCPUs메모리루트 스토리지연결된(데이터) 스토리지
평가판, 데모 또는 10명의 라이트 사용자432GB200GB150GB
10~3,000848GB200GB300GB
3,000~50001264GB200GB500GB
5,000~8,0001696GB200GB750GB
8,000~10,000+20160GB200GB1000GB

인스턴스 사용자에 대해 GitHub Actions를 사용하도록 설정하려는 경우 더 많은 리소스가 필요합니다.

여러 요구 사항에 대한 자세한 내용은 "GitHub Enterprise Server용 GitHub Actions 시작"을 참조하세요.

인스턴스 사용자에 대해 Container registry를 사용하도록 설정하려는 경우 더 많은 리소스가 필요합니다. 이러한 요구 사항에 대한 자세한 내용은 "엔터프라이즈를 위한 GitHub Packages 시작"을 참조하세요.

기존 인스턴스의 리소스 조정에 대한 자세한 내용은 "스토리지 용량 늘리기" 및 "CPU 또는 메모리 리소스 늘리기"를 참조하세요.

스토리지

IOPS(초당 입출력 작업 수)가 높고 GitHub Enterprise Server의 대기 시간이 짧은 고성능 SSD를 사용하는 것이 좋습니다. 워크로드는 I/O 집약적입니다. 운영 체제 미설치 하이퍼바이저를 사용하는 경우 디스크를 직접 연결하거나 SAN(스토리지 영역 네트워크)의 디스크를 사용하는 것이 좋습니다.

인스턴스에는 루트 디스크와 별도로 영구 데이터 디스크가 필요합니다. 자세한 내용은 "시스템 개요"을 참조하세요.

GitHub Actions을 구성하려면 외부 BLOB 스토리지를 제공해야 합니다. 자세한 내용은 "GitHub Enterprise Server용 GitHub Actions 시작"을 참조하세요.

루트 파일 시스템의 사용 가능한 공간은 전체 디스크 크기의 50%입니다. 새 인스턴스를 빌드하거나 기존 인스턴스를 사용하여 인스턴스의 루트 디스크 크기를 조정할 수 있습니다. 자세한 내용은 "시스템 개요" 및 "스토리지 용량 늘리기"를 참조하세요.

CPU 및 메모리

GitHub Enterprise Server에 필요한 CPU 및 메모리 리소스는 사용자, 자동화 및 통합에 대한 활동 수준에 따라 달라집니다.

GitHub Enterprise Server 인스턴스에 프로비전하는 모든 VM은 x86-64 CPU 아키텍처를 사용해야 합니다. Aarch64 또는 arm64와 같은 다른 아키텍처는 지원하지 않습니다.

GitHub Enterprise Server 인스턴스의 사용자에 대해 GitHub Actions를 사용하도록 설정하려는 경우 인스턴스에 대한 추가 CPU 및 메모리 리소스를 프로비저닝해야 할 수 있습니다. 자세한 내용은 "GitHub Enterprise Server용 GitHub Actions 시작"을 참조하세요.

CPU 리소스를 늘릴 때 GitHub에서는 인스턴스에 프로비저닝하는 각 vCPU(최대 16개 vCPU)에 대해 최소 6.5GB의 메모리를 추가하는 것이 좋습니다. 16개 이상의 vCPU를 사용하는 경우 각 vCPU에 대해 6.5GB의 메모리를 추가할 필요는 없지만 충분한 메모리가 있는지 확인하기 위해 인스턴스를 모니터링해야 합니다.

경고: 사용자가 외부 시스템에 GitHub Enterprise Server에 대한 활동을 알리도록 웹후크 이벤트를 구성하는 것이 좋습니다. 변경 또는 _폴링_에 대한 자동화된 검사는 인스턴스의 성능 및 스케일링 성능에 부정적인 영향을 줍니다. 자세한 내용은 "웹후크 정보"을 참조하세요.

GitHub Enterprise Server의 용량 및 성능 모니터링에 대한 자세한 내용은 "인스턴스 모니터링"을 참조하세요.

인스턴스의 CPU 또는 메모리 리소스를 늘릴 수 있습니다. 자세한 내용은 "CPU 또는 메모리 리소스 늘리기"을 참조하세요.

가상 머신 유형 확인

Azure에서 GitHub Enterprise Server 인스턴스을(를) 시작하기 전에 조직의 요구 사항에 가장 적합한 머신 유형을 결정해야 합니다. 메모리 최적화 머신에 대한 자세한 내용은 Microsoft Azure 설명서의 메모리 최적화 가상 머신 크기를 참조하세요. GitHub Enterprise Server에 대한 최소 리소스 요구 사항을 검토하려면 "최소 요구 사항"을 참조하세요.

인스턴스 크기를 조정하여 항상 CPU 또는 메모리를 스케일 업할 수 있습니다. 인스턴스에 사용할 수 있는 리소스를 변경하려면 사용자의 가동 중지 시간이 필요하므로 GitHub에서는 규모에 맞게 리소스를 오버프로비저닝하는 것이 좋습니다.

GitHub Enterprise Server 어플라이언스에는 Premium Storage 데이터 디스크가 필요하며 Premium Storage를 지원하는 모든 Azure VM에서 지원됩니다. s 접미사가 있는 Azure VM 유형은 Premium Storage를 지원합니다. 자세한 내용은 Azure 설명서의 Azure에서 사용할 수 있는 디스크 유형 및 “Azure Premium Storage: 고성능을 위한 디자인”을 참조하세요.

GitHub에서는 GitHub Enterprise Server에 메모리 최적화 VM을 권장합니다. 자세한 내용은 Azure 설명서의 “메모리 최적화 가상 머신 크기”를 참조하세요.

GitHub Enterprise Server는 VM 유형을 지원하는 모든 지역을 지원합니다. 각 VM에 대해 지원되는 지역에 대한 자세한 내용은 Azure의 “지역별 사용 가능한 제품”을 참조하세요.

GitHub Enterprise Server 가상 머신 만들기

인스턴스를 만들려면 GitHub Enterprise Server 이미지를 가상 머신으로 가져오고 인스턴스 데이터에 대한 추가 스토리지 볼륨을 연결해야 합니다. 자세한 내용은 “하드웨어 고려사항”을 참조하세요.

  1. 가장 최근의 GitHub Enterprise Server 어플라이언스 이미지를 찾습니다. vm image list 명령에 대한 자세한 내용은 Microsoft 설명서의 "az vm image list"를 참조하세요.

    az vm image list --all -f GitHub-Enterprise | grep '"urn": "GitHub:' | sort -V
    
  2. 찾은 어플라이언스 이미지를 사용하여 새 VM을 만듭니다. 자세한 내용은 Microsoft 설명서의 az vm create를 참조하세요.

    VM 이름, 리소스 그룹, VM 크기, 기본 설정 Azure 지역 이름, 이전 단계에서 나열한 어플라이언스 이미지 VM의 이름 및 Premium Storage용 스토리지 SKU에 대한 옵션을 전달합니다. 리소스 그룹에 대한 자세한 내용은 Microsoft 설명서의 리소스 그룹을 참조하세요.

    az vm create -n VM_NAME -g RESOURCE_GROUP --size VM_SIZE -l REGION --image APPLIANCE_IMAGE_NAME --storage-sku Premium_LRS
    
  3. 필요한 포트를 열도록 VM에서 보안 설정을 구성합니다. 관리자 및 사용자 목적을 위해 노출해야 하는 네트워크 서비스에 따라 선택적으로 네트워크 포트를 여는 것이 좋습니다. 자세한 내용은 Microsoft 설명서의 "네트워크 포트" 및 az vm open-port를 참조하세요. 열려는 데 필요한 포트를 확인하기 위해 각 포트에 대한 설명은 아래 표를 참조하세요.

    az vm open-port -n VM_NAME -g RESOURCE_GROUP --port PORT_NUMBER
    

    이 표는 각 포트가 사용되는 대상을 식별합니다.

    포트서비스설명
    22SSHSSH 액세스를 통한 Git입니다. 퍼블릭/프라이빗 리포지토리에 대한 복제, 가져오기 및 푸시 작업이 지원됩니다.
    25SMTP암호화를 사용한 SMTP(STARTTLS) 지원입니다.
    80HTTP웹 애플리케이션 액세스입니다. SSL을 활성화하면 모든 요청이 HTTPS 포트로 리디렉션됩니다.
    122SSH인스턴스 셸 액세스입니다. 기본 SSH 포트(22)는 애플리케이션 git+ssh 네트워크 트래픽 전용입니다.
    161/UDPSNMP네트워크 모니터링 프로토콜 작업에 필요합니다.
    443HTTPSHTTPS 액세스를 통한 웹 애플리케이션 및 Git입니다.
    1194/UDPVPN고가용성 구성에서 복제 네트워크 터널을 보호합니다. WireGuard를 사용하여 암호화됩니다.
    8080HTTP일반 텍스트 웹 기반 관리 콘솔입니다. SSL을 사용하지 않도록 수동으로 설정하지 않는 한 필요하지 않습니다.
    8443HTTPS웹 기반 관리 콘솔을 보호합니다. 기본 설치 및 구성에 필요합니다.
    9418Git간단한 Git 프로토콜 포트입니다. 공용 리포지토리에만 작업을 복제하고 페치합니다. 암호화되지 않은 네트워크 통신입니다. 인스턴스에서 프라이빗 모드를 사용하도록 설정한 경우 익명 Git 읽기 액세스를 사용하도록 설정한 경우에만 이 포트를 여는 것이 필요합니다. 자세한 내용은 "엔터프라이즈에서 리포지토리 관리 정책 적용"을 참조하세요.
  4. 암호화되지 않은 새 데이터 디스크를 만들어 VM에 연결하고 사용자 라이선스 수에 따라 크기를 구성합니다. 자세한 내용은 Microsoft 설명서의 az vm disk attach를 참조하세요.

    VM 이름(예: ghe-acme-corp), 리소스 그룹, Premium Storage SKU, 디스크 크기(예: 200) 및 결과 VHD의 이름에 대한 옵션을 전달합니다.

    az vm disk attach --vm-name VM_NAME -g RESOURCE_GROUP --sku Premium_LRS --new -z SIZE_IN_GB --name ghe-data.vhd --caching ReadWrite
    

    참고: 비프로덕션 인스턴스가 충분한 I/O 처리량을 가지려면 권장되는 최소 디스크 크기는 읽기/쓰기 캐시가 활성화된 상태에서 150GiB입니다(--caching ReadWrite).

GitHub Enterprise Server 가상 머신 구성

인스턴스를 구성하려면 인스턴스의 상태를 확인하고, 라이선스 파일을 업로드하고, 루트 관리 콘솔 암호를 설정하고, 인스턴스 설정을 구성한 다음 인스턴스를 다시 시작해야 합니다.

경고: 공격자가 새 인스턴스를 손상시키지 않도록 하려면 루트 관리 콘솔 암호를 개인적으로 설정하고 가능한 한 빨리 첫 번째 사용자를 만들어야 합니다.

  1. VM을 구성하기 전에 ReadyRole 상태가 될 때까지 기다려야 합니다. vm list 명령을 사용하여 VM의 상태를 확인합니다. 자세한 내용은 Microsoft 설명서의 az vm list를 참조하세요.

    $ az vm list -d -g RESOURCE_GROUP -o table
    > Name    ResourceGroup    PowerState    PublicIps     Fqdns    Location    Zones
    > ------  ---------------  ------------  ------------  -------  ----------  -------
    > VM_NAME RESOURCE_GROUP   VM running    40.76.79.202           eastus
    
    

    참고: Azure는 VM에 대한 FQDNS 항목을 자동으로 만들지 않습니다. 자세한 내용은 Azure Portal에서 Linux VM에 대한 정규화된 도메인 이름 만들기 Azure 가이드를 참조하세요.

    1. 가상 머신의 공용 DNS 이름을 복사하여 웹 브라우저에 붙여넣습니다.
  2. 메시지가 표시되면 라이선스 파일을 업로드하고 관리 콘솔 암호를 설정합니다. 자세한 내용은 "GitHub Enterprise 라이선스 관리"을 참조하세요.

  3. 관리 콘솔에서 원하는 설정을 구성하고 저장합니다. 자세한 내용은 "GitHub Enterprise 구성"을(를) 참조하세요.

    1. 인스턴스가 자동으로 다시 시작됩니다.
  4. 인스턴스 방문을 클릭합니다.

Azure 확장 기능

GitHub Enterprise Server은(는) Azure 확장 기능 설치를 지원하지 않습니다. GitHub Enterprise Server 이미지는 기본 VM 관리 기능만 지원하고 고급 VM 관리 기능은 차단하는 사용자 지정 waagent 패키지와 함께 제공됩니다.

GitHub Enterprise Server 인스턴스의 시스템 불안정을 방지하기 위해 walinuxagent 서비스는 의도적으로 제한된 모드로 GitHub Enterprise Server에서 실행되므로 에이전트가 다른 에이전트를 설치하는 것은 명시적으로 허용되지 않습니다. Azure Insights 또는 Azure Backups용 Monitoring Agent 확장 등 GitHub Enterprise Server 이미지와 함께 제공되는 것 이외에, 추가 에이전트 및 확장을 사용하는 VM 관리 기능은 지원되지 않습니다.

GitHub Enterprise Server은(는) 필요한 애플리케이션 및 서비스만 이용해 사용자 지정 Linux 운영 체제를 실행하므로, 운영 체제 패키지를 직접 설치하거나 업데이트할 경우 사용자 지정을 덮어쓰게 되면서 예기치 않은 동작이 발생할 수 있습니다. 자세한 내용은 "시스템 개요"을 참조하세요.

추가 참고 자료