필수 조건
- GitHub Enterprise 라이선스 파일이 있어야 합니다. 자세한 내용은 "GitHub Enterprise Server 평가판 설정" 및 "GitHub Enterprise 라이선스 정보"을 참조하세요.
- EC2 인스턴스를 시작하고 EBS 볼륨을 만들 수 있는 AWS 계정이 있어야 합니다. 자세한 내용은 Amazon Web Services 웹 사이트를 참조하세요.
- GitHub Enterprise Server 인스턴스을(를) 시작하는 데 필요한 대부분의 작업은 AWS 관리 콘솔을 사용하여 수행할 수도 있습니다. 그러나 초기 설정을 위해 AWS CLI(명령줄 인터페이스)를 설치하는 것이 좋습니다. AWS CLI를 사용하는 예제는 다음과 같습니다. 자세한 내용은 Amazon 가이드 AWS 관리 콘솔 사용 및 AWS 명령줄 인터페이스란?을 참조하세요.
참고: 현재 GitHub Enterprise Server는 Amazon IMDSv2 메타데이터 API 사용을 지원하지 않습니다.
이 .가이드에서는 사용자가 다음 AWS 개념에 대해 잘 알고 있다고 가정합니다.
- EC2 인스턴스 시작
- EBS 볼륨 관리
- 보안 그룹 사용(인스턴스에 대한 네트워크 액세스 관리)
- EIP(탄력적 IP 주소)(프로덕션 환경에 강력하게 권장됨)
- EC2 및 가상 프라이빗 클라우드(가상 프라이빗 클라우드에서 시작하려는 경우)
- AWS 가격 책정(비용 계산 및 관리)
"GitHub Enterprise Server 배포를 위한 AWS 아키텍처 다이어그램"에서 아키텍처 개요를 제공하는 다이어그램을 참조하세요.
이 가이드에서는 AWS에 GitHub Enterprise Server 인스턴스을(를) 설정할 때 최소 권한 원칙을 권장합니다. 자세한 내용은 AWS IAM(ID 및 액세스 관리) 설명서를 참조하세요.
하드웨어 고려 사항
최소 요구 사항
GitHub Enterprise Server 인스턴스에 대한 사용자 라이선스 수에 따라 다른 하드웨어 구성을 사용하는 것이 좋습니다. 최소 요구 사항보다 더 많은 리소스를 프로비저닝하면 인스턴스의 성능과 스케일링이 향상됩니다.
사용자 라이선스 | x86-64 vCPUs | 메모리 | 루트 스토리지 | 연결된(데이터) 스토리지 |
---|---|---|---|---|
평가판, 데모 또는 10명의 라이트 사용자 | 4 | 32GB | 200GB | 150GB |
10~3,000 | 8 | 48GB | 200GB | 300GB |
3,000~5000 | 12 | 64GB | 200GB | 500GB |
5,000~8,000 | 16 | 96GB | 200GB | 750GB |
8,000~10,000+ | 20 | 160GB | 200GB | 1000GB |
인스턴스 사용자에 대해 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 또는 메모리 리소스 늘리기"을 참조하세요.
인스턴스 유형 확인
AWS에서 GitHub Enterprise Server 인스턴스을(를) 시작하기 전에 조직의 요구 사항에 가장 적합한 머신 유형을 결정해야 합니다. GitHub Enterprise Server에 대한 최소 요구 사항을 검토하려면 "최소 요구 사항"을 참조하세요.
인스턴스 크기를 조정하여 항상 CPU 또는 메모리를 스케일 업할 수 있습니다. 인스턴스에 사용할 수 있는 리소스를 변경하려면 사용자의 가동 중지 시간이 필요하므로 GitHub에서는 규모에 맞게 리소스를 오버프로비저닝하는 것이 좋습니다.
GitHub에서는 GitHub Enterprise Server에 대한 메모리 최적화 인스턴스를 권장합니다. 자세한 내용은 Amazon EC2 웹 사이트의 Amazon EC2 인스턴스 유형을 참조하세요.
GitHub Enterprise Server AMI 선택
GitHub Enterprise Server 포털 또는 AWS CLI를 사용하여 GitHub Enterprise Server에 대한 AMI(Amazon Machine Image)를 선택할 수 있습니다.
GitHub Enterprise Server에 대한 API는 AWS GovCloud(미국 동부 및 미국 서부) 지역에서 사용할 수 있습니다. 이를 통해 특정 규정 요구 사항이 있는 미국 고객이 연방 규정 준수 클라우드 환경에서 GitHub Enterprise Server를 실행할 수 있습니다. AWS의 연방 및 기타 표준 준수에 대한 자세한 내용은 AWS의 GovCloud(미국) 페이지 및 AWS 규정 준수 페이지를 참조하세요.
GitHub Enterprise Server 포털을 사용하여 AMI 선택
-
새 인스턴스에 사용할 이미지로 이동합니다.
- 릴리스 정보로 이동합니다.
- 오른쪽 사이드바에서 다운로드할 버전을 클릭합니다.
- GitHub Enterprise Server X.X.X 다운로드를 클릭합니다.
-
"클라우드의 GitHub"에서 "플랫폼 선택" 드롭다운 메뉴를 선택하고 Amazon Web Services를 클릭합니다.
-
"AWS 지역 선택" 드롭다운 메뉴를 선택하고 원하는 지역을 클릭합니다.
-
표시되는 AMI ID를 기록해 둡니다.
AWS CLI를 사용하여 AMI 선택
-
AWS CLI를 사용하여 GitHub의 AWS 소유자 ID(GovCloud의 경우
025577942450
및 기타 지역의 경우895557238572
)에서 게시한 GitHub Enterprise Server 이미지 목록을 가져옵니다. 자세한 내용은 AWS 설명서의 describe-images를 참조하세요.aws ec2 describe-images \ --owners OWNER_ID \ --query 'sort_by(Images,&Name)[*].{Name:Name,ImageID:ImageId}' \ --output=text
-
최신 GitHub Enterprise Server 이미지에 대한 AMI ID를 기록해 둡니다.
보안 그룹 생성
AMI를 처음으로 설정하는 경우 보안 그룹을 만들고 아래 표의 각 포트에 대한 새 보안 그룹 규칙을 추가해야 합니다. 자세한 내용은 AWS 가이드 보안 그룹 사용을 참조하세요.
-
AWS CLI를 사용하여 새 보안 그룹을 만듭니다. 자세한 내용은 AWS 설명서의 create-security-group을 참조하세요.
aws ec2 create-security-group --group-name SECURITY_GROUP_NAME --description "SECURITY GROUP DESCRIPTION"
-
새로 만든 보안 그룹의 보안 그룹 ID(
sg-xxxxxxxx
)를 기록해 둡니다. -
아래 표의 각 포트에 대한 보안 그룹 규칙을 만듭니다. 관리자 및 사용자 목적을 위해 노출해야 하는 네트워크 서비스에 따라 선택적으로 네트워크 포트를 여는 것이 좋습니다. 자세한 내용은 AWS 설명서의 "네트워크 포트" 및 authorize-security-group-ingress를 참조하세요.
aws ec2 authorize-security-group-ingress --group-id SECURITY_GROUP_ID --protocol PROTOCOL --port PORT_NUMBER --cidr SOURCE IP RANGE
이 표는 각 포트가 사용되는 대상을 식별합니다.
포트 서비스 설명 22 SSH SSH 액세스를 통한 Git입니다. 퍼블릭/프라이빗 리포지토리에 대한 복제, 가져오기 및 푸시 작업이 지원됩니다. 25 SMTP 암호화를 사용한 SMTP(STARTTLS) 지원입니다. 80 HTTP 웹 애플리케이션 액세스입니다. SSL을 활성화하면 모든 요청이 HTTPS 포트로 리디렉션됩니다. 122 SSH 인스턴스 셸 액세스입니다. 기본 SSH 포트(22)는 애플리케이션 git+ssh 네트워크 트래픽 전용입니다. 161/UDP SNMP 네트워크 모니터링 프로토콜 작업에 필요합니다. 443 HTTPS HTTPS 액세스를 통한 웹 애플리케이션 및 Git입니다. 1194/UDP VPN 고가용성 구성에서 복제 네트워크 터널을 보호합니다. WireGuard를 사용하여 암호화됩니다. 8080 HTTP 일반 텍스트 웹 기반 관리 콘솔입니다. SSL을 사용하지 않도록 수동으로 설정하지 않는 한 필요하지 않습니다. 8443 HTTPS 웹 기반 관리 콘솔을 보호합니다. 기본 설치 및 구성에 필요합니다. 9418 Git 간단한 Git 프로토콜 포트입니다. 공용 리포지토리에만 작업을 복제하고 페치합니다. 암호화되지 않은 네트워크 통신입니다. 인스턴스에서 프라이빗 모드를 사용하도록 설정한 경우 익명 Git 읽기 액세스를 사용하도록 설정한 경우에만 이 포트를 여는 것이 필요합니다. 자세한 내용은 "엔터프라이즈에서 리포지토리 관리 정책 적용"을 참조하세요.
GitHub Enterprise Server 인스턴스 만들기
인스턴스를 만들려면 GitHub Enterprise Server AMI를 사용하여 EC2 인스턴스를 시작하고 인스턴스 데이터에 대한 추가 스토리지 볼륨을 연결해야 합니다. 자세한 내용은 “하드웨어 고려사항”을 참조하세요.
참고: 데이터 디스크를 암호화하여 추가 수준의 보안을 확보하고 인스턴스에 쓰는 모든 데이터가 보호되도록 할 수 있습니다. 암호화된 디스크를 사용하는 경우 성능이 약간 향상됩니다. 볼륨을 암호화하기로 결정한 경우 인스턴스를 처음 시작하기 전에 이 작업을 수행하는 것이 좋습니다. 자세한 내용은 EBS 암호화에 대한 Amazon 가이드를 참조하세요.
경고: 인스턴스를 구성한 후 암호화를 사용하도록 설정하려는 경우 데이터를 암호화된 볼륨으로 마이그레이션해야 하므로 사용자에게 약간의 가동 중지 시간이 발생합니다.
EC2 인스턴스 시작
AWS CLI에서 AMI 및 만든 보안 그룹을 사용하여 EC2 인스턴스를 시작합니다. 인스턴스 데이터에 대해 스토리지 볼륨으로 사용할 새 블록 디바이스를 연결하고 사용자 라이선스 수에 따라 크기를 구성합니다. 자세한 내용은 AWS 설명서의 run-instances를 참조하세요.
aws ec2 run-instances \
--security-group-ids SECURITY_GROUP_ID \
--instance-type INSTANCE_TYPE \
--image-id AMI_ID \
--block-device-mappings '[{"DeviceName":"/dev/xvdf","Ebs":{"VolumeSize":SIZE,"VolumeType":"TYPE"}}]' \
--region REGION \
--ebs-optimized
탄력적 IP 할당 및 인스턴스와 연결
프로덕션 인스턴스인 경우 GitHub Enterprise Server 구성을 진행하기 전에 EIP(탄력적 IP)를 할당하고 인스턴스와 연결하는 것이 좋습니다. 그렇지 않으면 인스턴스가 다시 시작된 후 인스턴스의 공용 IP 주소가 유지되지 않습니다. 자세한 내용은 Amazon 설명서에서 탄력적 IP 주소 배정 및 실행 중인 인스턴스와 탄력적 IP 주소 연결을 참조하세요.
프로덕션 고가용성 구성에서 기본 및 복제본 인스턴스에는 별도의 EIP가 할당되어야 합니다. 자세한 내용은 "고가용성 구성"을(를) 참조하세요.
GitHub Enterprise Server 인스턴스 구성
인스턴스를 구성하려면 라이선스 파일을 업로드하고, root 관리 콘솔 암호를 설정하고 인스턴스 설정을 구성한 다음 인스턴스를 다시 시작해야 합니다.
경고: 공격자가 새 인스턴스를 손상시키지 않도록 하려면 루트 관리 콘솔 암호를 개인적으로 설정하고 가능한 한 빨리 첫 번째 사용자를 만들어야 합니다.
- 가상 머신의 공용 DNS 이름을 복사하여 웹 브라우저에 붙여넣습니다.
- 메시지가 표시되면 라이선스 파일을 업로드하고 관리 콘솔 암호를 설정합니다. 자세한 내용은 "GitHub Enterprise 라이선스 관리"을 참조하세요.
- 관리 콘솔에서 원하는 설정을 구성하고 저장합니다. 자세한 내용은 "GitHub Enterprise 구성"을(를) 참조하세요.
- 인스턴스가 자동으로 다시 시작됩니다.
- 인스턴스 방문을 클릭합니다.