Skip to main content

AWS で GitHub Enterprise Server をインストールする

GitHub Enterprise Server をAmazon Web Services (AWS) にインストールするには、Amazon Elastic Compute Cloud (EC2) インスタンスを起動し、個別の Amazon Elastic Block Store (EBS) データボリュームを作成してアタッチする必要があります。

前提条件

注: 現時点では、GitHub Enterprise Server では Amazon IDMSv2 メタデータ API の使用はサポートされていません。

本ガイドは、読者が以下のAWSの概念に馴染んでいることを前提としています。

アーキテクチャの概要については、GitHub Enterprise Server のデプロイに関する AWS のアーキテクチャの図を参照してください。

このガイドでは、AWS で your GitHub Enterprise Server instance を設定する際に最小権限の原則を推奨しています。 詳細については、AWS の ID とアクセス管理 (IAM) に関するドキュメントを参照してください。

ハードウェアに関する考慮事項

最小要件

your GitHub Enterprise Server instanceのユーザライセンス数に応じた様々なハードウェア構成をおすすめします。 最小要件以上のリソースを提供すれば、インスタンスのパフォーマンスとスケーラビリティは向上します。

ユーザー ライセンスvCPU 数メモリストレージの接続ルート ストレージ
トライアル、デモ、あるいは10人の軽量ユーザ432 GB150 GB200 GB
10-3000848 GB300 GB200 GB
3000-50001264 GB500 GB200 GB
5000-80001696 GB750 GB200 GB
8000-10000+20160 GB1000 GB200 GB

インスタンスのユーザーに対して GitHub Actions を有効にする予定の場合は、さらに多くのリソースが必要です。

これらの要件の詳細については、「GitHub Enterprise Server の GitHub Actions の概要」を参照してください。

既存のインスタンスのリソースの調整の詳細については、「ストレージ容量の増加」および「CPU またはメモリ リソースの増加」を参照してください。

ストレージ

GitHub Enterprise Serverには、高い秒あたりの入出力操作(IOPS)と低いレイテンシを持つ高性能なSSDをおすすめします。 ワークロードはI/O集中的です。 ベアメタルのハイパーバイザを使用するなら、直接アタッチされたディスクか、ストレージエリアネットワーク(SAN)からのディスクを利用することをおすすめします。

インスタンスには、ルートディスクとは別の永続化用のデータディスクが必要です。 詳細については、「システムの概要」をご覧ください。

GitHub Actions を構成するには、外部 BLOB ストレージを指定する必要があります。 詳細については、「GitHub Enterprise Server の GitHub Actions の概要」を参照してください。

ルート ファイルシステム上の使用可能な領域は、ディスクの合計サイズの 50% です。 新しいインスタンスを構築するか、既存のインスタンスを利用して、インスタンスのルートディスクのサイズを変更できます。 詳細については、「システムの概要」および「ストレージ容量の増加」を参照してください。

CPU とメモリ

GitHub Enterprise Serverが必要とするCPU及びメモリリソースは、ユーザ、自動化、インテグレーションのアクティビティのレベルによります。

GitHub Enterprise Server インスタンスのユーザーに対して GitHub Actions を有効にする予定の場合は、インスタンスに追加の CPU とメモリ リソースをプロビジョニングする必要がある場合があります。 詳細については、「GitHub Enterprise Server の GitHub Actions の概要」を参照してください。

CPUリソースを増やす場合、インスタンスにプロビジョニングする各vCPUごとに少なくとも6.5GBのメモリを追加する(最大16vCPUまで)ことをおすすめします。 16以上のvCPUを使う場合は、各vCPUごとに6.5GBのメモリを追加する必要はありませんが、インスタンスが十分なメモリを持っているかをモニターするべきです。

警告: GitHub Enterprise Server 上のアクティビティを外部システムに通知する Webhook イベントを構成することをおすすめします。 変更の自動チェックまたは ポーリング は、インスタンスのパフォーマンスとスケーラビリティに悪影響を与えます。 詳細については、「Webhook について」を参照してください。

GitHub Enterprise Server の容量とパフォーマンスの監視の詳細については、「アプライアンスを監視する」を参照してください。

インスタンスのCPUあるいはメモリリソースは増やすことができます。 詳細については、「CPU またはメモリ リソースの増加」を参照してください。

インスタンスタイプの決定

AWS でyour GitHub Enterprise Server instance を起動する前に、Organization のニーズに最適なマシンタイプを決定する必要があります。 GitHub Enterprise Server の最小要件を確認するには、「最小要件」を参照してください。

注: インスタンスをサイズ変更すれば、いつでも CPU やメモリをスケールアップできます。 しかし、CPUあるいはメモリのリサイズにはユーザにとってのダウンタイムが生じるので、スケールのためのリソースを前もってオーバープロビジョニングしておくことをおすすめします。

GitHubは、GitHub Enterprise Serverにメモリ最適化されたインスタンスをおすすめします。 詳細については、Amazon EC2 Web サイトの「Amazon EC2 Instance Types (Amazon EC2 インスタンス タイプ)」を参照してください。

GitHub Enterprise Server AMI を選択する

GitHub Enterprise Server には、GitHub Enterprise Server ポータルまたは AWS CLI を使用することで、Amazon Machine Image (AMI) を選択できます。

GitHub Enterprise Server用のAMIは、AWS GovCloud (US東部およびUS西部) 地域で利用できます。 これにより、特定の規制要件を満たす米国のお客様は、連邦準拠のクラウド環境で GitHub Enterprise Server を実行できます。 AWS の連邦および他の標準への準拠の詳細については、AWS の GovCloud (米国) ページAWS のコンプライアンス ページを参照してください。

GitHub Enterprise Server を使用して AMI を選択する

  1. 新しいインスタンスに使用するイメージに移動します。

    • [リリース ノート]に移動します。
    • 右側のサイドバーで、ダウンロードするバージョンをクリックします。
    • [GitHub Enterprise Server X.X.X のダウンロード] をクリックします。
  2. [クラウドの GitHub] の下にある [プラットフォームの選択] ドロップダウン メニューを選択し、 [アマゾン ウェブ サービス] をクリックします。

  3. [AWS のリージョンの選択] ドロップダウン メニューを選択し、希望するリージョンをクリックします。

  4. 表示されたAMI IDをメモしておいてください。

AWS CLIを使ったAMIの選択

  1. 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
  2. 最新の GitHub Enterprise Server イメージ用の AMI ID をメモしておきます。

セキュリティ グループの作成

AMI を初めてセットアップする場合は、セキュリティグループを作成し、下記の表にある各ポートに関する新しいセキュリティグループのルールを追加する必要があります。 詳細については、セキュリティ グループの使用に関する AWS のガイドを参照してください。

  1. AWS CLI を使用して、新しいセキュリティグループを作成します。 詳細については、AWS のドキュメントの "create-security-group" を参照してください。

    $ aws ec2 create-security-group --group-name SECURITY_GROUP_NAME --description "SECURITY GROUP DESCRIPTION"
  2. 新しく作成したセキュリティ グループのセキュリティ グループ ID (sg-xxxxxxxx) を書き留めておきます。

  3. 下記の表にある各ポートに関するセキュリティグループのルールを作成します。 詳細については、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

    次の表に、各ポートの使用目的を示します

    Portサービス説明
    22SSHGit over SSHのアクセス。 パブリック/プライベートリポジトリのクローン、フェッチ、プッシュ操作がサポートされています。
    25SMTP暗号化(STARTTLS)付きのSMTPサポート。
    80HTTPWebアプリケーションへのアクセス。 SSL が有効になっている場合、すべての要求は HTTPS ポートにリダイレクトされます。
    122SSHインスタンスのシェルへのアクセス。 既定の SSH ポート (22) は、アプリケーションの git+ssh ネットワーク トラフィック専用です。
    161/UDPSNMPネットワークモニタリングプロトコルの処理に必要。
    443HTTPSWebアプリケーション及びGit over HTTPSのアクセス。
    1194/UDPVPNHigh Availability設定でのセキュアなレプリケーションネットワークトンネル。
    8080HTTPプレーンテキストの Webベースの [Management Console]。 SSL を手動で無効にしない限り必要ありません。
    8443HTTPSセキュアな Webベースの [Management Console]。 基本的なインストールと設定に必要です。
    9418GitシンプルなGitプロトコルのポートです。 パブリックリポジトリのクローンとフェッチのみができます。 暗号化されていないネットワーク通信。 インスタンスでプライベートモードを有効化した場合、このポートをオープンする必要があるのは、匿名Git読み取りアクセスも有効化している場合のみです。 詳細については、「Enterprise でリポジトリ管理ポリシーを適用する」を参照してください。

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

Elastic IP を割り当ててとインスタンスに関連付ける

これが本番インスタンスである場合は、GitHub Enterprise Server の設定に進む前に、Elastic IP (EIP) を割り当ててそれをインスタンスに関連付けることを強くおすすめします。 そうしなければ、インスタンスのパブリック IP アドレスはインスタンスの再起動後に保持されません。 詳細については、Amazon のドキュメントのエラスティック IP アドレスの割り当ておよび実行中のインスタンスへのエラスティック IP アドレスの関連付けに関するページを参照してください。

稼働状態の High Availability 設定では、プライマリインスタンスとレプリカインスタンスの両方に別々の EIP を割り当ててください。 詳細については、高可用性のための GitHub Enterprise Server の構成に関するページを参照してください。

GitHub Enterprise Server インスタンスを設定する

  1. 仮想マシンのパブリックDNS名をコピーして、Webブラウザに貼り付けてください。 2. プロンプトでライセンスファイルをアップロードし、管理コンソールのパスワードを設定してください。 詳細については、「GitHub Enterprise のライセンスの管理」を参照してください。 3. [Management Console] で、目的の設定を構成して保存します。 詳細については、GitHub Enterprise Server アプライアンスの構成に関するページを参照してください。
  2. インスタンスは自動的に再起動します。 1. [Visit your instance](インスタンスにアクセスする) をクリックします。

参考資料