diff --git a/content/blog/guide-to-setup-ghe-on-aws/10.png b/content/blog/guide-to-setup-ghe-on-aws/10.png new file mode 100644 index 000000000..6127abdab Binary files /dev/null and b/content/blog/guide-to-setup-ghe-on-aws/10.png differ diff --git a/content/blog/guide-to-setup-ghe-on-aws/11.png b/content/blog/guide-to-setup-ghe-on-aws/11.png new file mode 100644 index 000000000..7004ef4d2 Binary files /dev/null and b/content/blog/guide-to-setup-ghe-on-aws/11.png differ diff --git a/content/blog/guide-to-setup-ghe-on-aws/9.png b/content/blog/guide-to-setup-ghe-on-aws/9.png index 7004ef4d2..4b4b3a01e 100644 Binary files a/content/blog/guide-to-setup-ghe-on-aws/9.png and b/content/blog/guide-to-setup-ghe-on-aws/9.png differ diff --git a/content/blog/guide-to-setup-ghe-on-aws/index.md b/content/blog/guide-to-setup-ghe-on-aws/index.md index 12d78d84d..f24c673ea 100644 --- a/content/blog/guide-to-setup-ghe-on-aws/index.md +++ b/content/blog/guide-to-setup-ghe-on-aws/index.md @@ -412,6 +412,20 @@ $ ghe-cluster-each --replica 'ghe-repl-status'   +### 백업 구성 + +- Github Enterprise Server는 공식적으로 Replica와 백업 동시 운영을 적극 권장하고 있습니다. +- [backup-utils](https://github.com/github/backup-utils)를 사용해서 백업을 수행합니다. +- 백업 서버는 독립적인 서버이며, EC2 혹은 Kubernetes 클러스터에서 운영되는 Cronob 형태로 배포 및 운영이 가능합니다. 컴퓨팅 리소스 비용 절감과 운영 자동화의 장점을 가져가기 위해 cronJob 기반의 backup-utils 운영을 권장드립니다. +- 백업 시간은 최소 1시간 미만으로 권장합니다. +- 자세한 설치 및 구성방법은 [Github Enterprise 백업 인스턴스 구성](/blog/ghe-backup-utils/) 페이지에서 확인할 수 있습니다. + +  + +--- + +  + ### Github for Jira 연동 퍼블릭 서브넷에 ALB 또는 NLB 등을 배치해서 퍼블릭 경로를 통한 HTTPS 인바운드 경로를 만들어줘야 Jira Cloud가 Github Enterprise Server와 API 통신이 가능하므로, Github for Jira 앱을 등록할 수 있습니다. @@ -432,7 +446,9 @@ $ ghe-cluster-each --replica 'ghe-repl-status'   -Github for Jira를 사용해서 App을 등록하려면, 아래 Jira Cloud의 Public IP 대역을 모두 추가해야 합니다. +#### Jira의 Public IP 범위 + +Github for Jira를 사용해서 Github App을 등록하려면, 아래 Jira Cloud의 Public IP 대역 14개를 모두 추가해야 합니다. ```bash 13.52.5.96/28 @@ -442,7 +458,6 @@ Github for Jira를 사용해서 App을 등록하려면, 아래 Jira Cloud의 Pub 18.234.32.224/28 18.246.31.224/28 52.215.192.224/28 -104.192.136.240/28 104.192.137.240/28 104.192.138.240/28 104.192.140.240/28 @@ -452,11 +467,83 @@ Github for Jira를 사용해서 App을 등록하려면, 아래 Jira Cloud의 Pub 185.166.142.240/28 ``` -위 IPv4 네트워크 대역은 [Jira 공식문서](https://support.atlassian.com/organization-administration/docs/ip-addresses-and-domains-for-atlassian-cloud-products/)에 나와있습니다. +Jira의 Public IPv4 네트워크 대역은 Jira 공식문서 [IP addresses and domains for Atlassian cloud products](https://support.atlassian.com/organization-administration/docs/ip-addresses-and-domains-for-atlassian-cloud-products/) 페이지에서 확인할 수 있습니다. + +  + +#### Prefix list로 IP 목록 관리하기 + +AWS에서 Github Enterprise Server 인프라를 운영하는 경우, 위 14개 IP 범위 리스트를 [Customer managed prefix list](https://docs.aws.amazon.com/vpc/latest/userguide/working-with-managed-prefix-lists.html) 리소스라는 단위로 하나로 묶은 후, SG Inbound rule에 Prefix list를 추가하는 형태로 운영하면 편합니다. + +![Prefix list](./9.png) + +배경지식으로 설명하자면 Prefix list를 사용하여 Security Group(SG)의 인바운드 룰을 관리하면 여러 가지 편리한 점이 있습니다. + +- Security Group 규칙이 간단해져서 시각적으로나 관리적으로 더 깔끔해집니다. +- 대규모 환경에서 여러 IP를 관리하기가 더 수월해집니다. 여러 VPC와 계정에서 동일한 prefix list를 재사용할 수 있습니다. +- 새로운 IP를 허용하거나 기존 IP를 제거할 때, prefix list만 수정하면 모든 관련 Security Group이 자동으로 업데이트됩니다. 이는 관리자의 작업 시간을 크게 줄여줍니다. + +  + +다음 과정은 AWS CLI를 사용해서 Prefix list 리소스를 생성하고, Jira Cloud의 Public IP 범위 목록을 추가하는 과정입니다. + +```bash +aws ec2 create-managed-prefix-list \ + --region ap-northeast-2 \ + --address-family IPv4 \ + --max-entries 14 \ + --prefix-list-name public-ip-ranges-for-jira-cloud +``` + +  + +Prefix list 목록을 조회한 후, 새롭게 생성된 Prefix List ID를 확인합니다. + +```bash +aws ec2 describe-managed-prefix-lists \ + --region ap-northeast-2 \ + --query 'PrefixLists[*].[PrefixListId, PrefixListName]' \ + --output text +``` + +  + +Jira Cloud의 Public IP 목록을 해당 Prefix List의 목록entry 추가합니다. + +> **트러블슈팅 팁**: +> `describe-managed-prefix-lists` 명령어 실행시 `A prefix list version is required` 에러가 발생하는 경우, current-version 옵션`--current-version`이 선언되었는지, 그리고 현재 Prefix list의 버전이 맞는지를 다시 확인합니다. + +```bash +aws ec2 modify-managed-prefix-list \ + --region ap-northeast-2 \ + --prefix-list-id pl- \ + --current-version 1 \ + --add-entries \ + "Cidr=13.52.5.96/28,Description=jira-cloud-public-ip-01" \ + "Cidr=13.236.8.224/28,Description=jira-cloud-public-ip-02" \ + "Cidr=18.136.214.96/28,Description=jira-cloud-public-ip-03" \ + "Cidr=18.184.99.224/28,Description=jira-cloud-public-ip-04" \ + "Cidr=18.234.32.224/28,Description=jira-cloud-public-ip-05" \ + "Cidr=18.246.31.224/28,Description=jira-cloud-public-ip-06" \ + "Cidr=52.215.192.224/28,Description=jira-cloud-public-ip-07" \ + "Cidr=104.192.137.240/28,Description=jira-cloud-public-ip-08" \ + "Cidr=104.192.138.240/28,Description=jira-cloud-public-ip-09" \ + "Cidr=104.192.140.240/28,Description=jira-cloud-public-ip-10" \ + "Cidr=104.192.142.240/28,Description=jira-cloud-public-ip-11" \ + "Cidr=104.192.143.240/28,Description=jira-cloud-public-ip-12" \ + "Cidr=185.166.143.240/28,Description=jira-cloud-public-ip-13" \ + "Cidr=185.166.142.240/28,Description=jira-cloud-public-ip-14" +``` + +이후 새롭게 생성된 Prefix list를 ELB SG의 인바운드룰에 추가합니다. + +![Prefix list for jira cloud](./10.png) + +Prefix list를 사용한 Jira Cloud IP 등록 작업이 완료되었습니다. ELB SG에 Jira Cloud Public IP 범위를 허용한 이후에는 Jira Admin 콘솔에서 Github for Jira가 정상적으로 수행됩니다.   -#### 연동 시 장점 +#### Github for Jira 연동 시 장점 Github for Jira 앱을 등록해서 Github Enterprise Server와 Jira Cloud를 연동할 경우, 다음과 같은 장점이 있습니다. @@ -492,7 +579,7 @@ ghe-support-bundle -t `ghe-support-bundle` 명령어를 사용하는 방식은 Github Enterprise Server는 NAT Gateway를 경유해 외부 Github Support 서버와 연결될 수 있어야 합니다. -![ghe-support-bundle 명령어 실행시 구조](./9.png) +![ghe-support-bundle 명령어 실행시 구조](./11.png) ` 값에는 Github Support 페이지 상에서 확인되는 서포트 티켓 번호 7자리를 입력합니다.