【AWS】社内GitLabサーバーとしてゼロからネットワークを構築した時のメモ
今まで無料で利用出来ていた会社のGitLabが、社員数増加により利用できなくなったため、会社でGitLab専用のサーバーを用意してGitLab self-managed版をインストールして自社で運用することになりました。
AWSの学習の目的も兼ねてその構築を任せてもらったので、サーバー、ドメイン、メール機能等、インフラ資材はすべてAWSを活用して構築しました。その時の一連の手順を今後のためにマニュアル化したかった為こちらにまとめることにしました。これからGitLabを自前で運用しようとお考えの方、企業様の参考になれれば幸いです。
サーバーだけでなくVPCやサブネット等、何もないところからネットワークを構築しているのでやや長いです...。
今回のネットワーク構成は、AWSの書籍情報を参考にしているので、GitHub, Notion, WordPress などのGitLab運用以外のネットワーク構築としての応用も可能です。
GitLabを構築する方以外にも参考になれば幸いです。
※本記事は、インフラについて何も知らない&今までにサーバーを立てた事ない方を対象としています。また、高度なセキュリティ対策は考慮していません。
この記事でやっていくこと
- AWS内に自前のGitLab用にサーバー(EC2)を立てる。
- EC2だけでなくサブネット, ゲートウェイなど関連するインフラ資材は全て作成する。
- ローカルからEC2にSSH接続するための設定
最終的にこんな感じでAWS内にインフラ資材を構築していきます。
参考書籍
Amazon Web Services基礎からのネットワーク&サーバー構築(日経BP)
過去に読んだこちらの書籍情報を参考にしています。2019年に購入したものなので、現在のものとは若干の違いがあるかもしれません
目次
- VPCを作成する。
- サブネットを作成する。
- インターネットゲートウェイを作成する。
- ルートテーブルを作成する。
- EC2用にキーペアを作成する。
- EC2用にセキュリティーグループを作る。
- EC2インスタンスを新しく起動する。
- EC2にグローバルIPアドレスを割り当てる。
- 外部からSSH接続する。
VPCを作成する。
まずは、AWS上にVPCと呼ばれる仮想的なネットワークを作ります。
VPC領域を構築すると、ユーザーごとに隔離されたネットワークを作れます。作ったネットワークには、任意のネットワーク設定ができ、ルーターなど仮想的なネットワーク機器も配置できます。
では作っていきます。
-
サービスの検索ボックスに「VPC」と検索して、「お使いの VPC」画面に遷移します。
右上にある「VPCを作成」ボタンを押します。
-
必要な情報を入力していきます。
作成するリソース → 「VPC のみ」
名前タグ → 「my-gitlab-vpc」
IPv4 CIDR ブロック → 「IPv4 CIDR の手動入力」
IPv4 CIDR → 「10.0.0.0/16」
IPv6 CIDR ブロック → 「IPv6 CIDR ブロックなし」
※名前は一例です、IPv4のアドレス範囲は適宜あったものを使用して下しさい
テナンシーはデフォルトにして、タグは未設定でも問題ありません。入力したら「VPCを作成」ボタンを押します。
- 画面上部にVPCが作られた旨メッセージが表示されます。
以上で、「10.0.0.0/16」というCIDRブロックをもったプライベートなネットワーク空間が出来上がりました。VPCの作成は以上になります。
サブネットを作成する。
次に、サブネットを作成していきます。
サブネットとは、割り当てられたCIDRブロックを、さらに細かなCIDRブロックに分割した領域の事を言います。
今回は先ほどVPC領域に割り当てた「10.0.0.0/16」というCIDRブロックを、さらに「/24」の大きさで切って256分割してパブリックなサブネットを作っていきます。
では作っていきます。
-
「VPC ダッシュボード」画面から、「サブネット」画面に遷移します。
右上にある「サブネットを作成」ボタンを押します。
-
必要な情報を入力していきます。
VPC ID → 先ほど作った「my-gitlab-vpc」のVPC
サブネット名 → 「my-gitlab-subnet」
アベイラビリティーゾーン → 「アジアパシフィック (東京) / ap-northeast-1a」
IPv4 CIDR ブロック → 「10.0.1.0/24」
※名前は一例です、IPv4のアドレス範囲は適宜あったものを使用して下しさい
タグの設定はそのままで「サブネットを作成」ボタンを押します。
- 画面上部にサブネットが作られた旨メッセージが表示されます。以上で、サブネット(10.0.1.0/24)ができました。サブネットの作成は以上になります。
次に、このパブリックサブネットを、インターネットに接続する設定をしましょう。
インターネットゲートウェイを作成する。
次に、インターネットゲートウェイを作成していきます。
AmazonVPCにおいて、サブネットをインターネットに接続するには、「インターネットゲートウエイ」を用います。では作っていきます。
-
「VPC ダッシュボード」画面から、「インターネットゲートウェイ」画面に遷移します。
右上にある「インターネットゲートウェイを作成」ボタンを押します。
-
必要な情報を入力していきます。
名前タグ → 「my-gitlab-internet-gateway」
タグの設定はそのままで「インターネットゲートウェイの作成」ボタンを押します。
- 画面上部にインターネットゲートウェイが作られた旨メッセージが表示されます。
インターネットゲートウェイとして機能させるにはVPCにアタッチさせる必要があるのでやっていきます。
- インターネットゲートウェイの一覧画面で、先ほど作った「my-gitlab-internet-gateway」のチェックボックスを選び「アクション」→「VPCにアタッチ」をクリックします。
- 名前タグに、名前が「my-gitlab-vpc」のVPCを選んで「インターネットゲートウェイのアタッチ」を選びます。
- インターネットゲートウェイがVPCにアタッチされました。これでインターネットゲートウェイの設定は以上です。
ルートテーブルを作成する。
次に、ルートテーブルを作成していきます。
ネットワークにデータを流すためには、「ルーティング情報」と呼ばれる設定が必要で、この設定は、「ルーティングテーブル」や「ルートテーブル」と呼ばれます。
では作っていきます。
-
「VPC ダッシュボード」画面から、「ルートテーブル」画面に遷移します。
右上にある「ルートテーブルを作成」ボタンを押します。
-
必要な情報を入力していきます。
名前 → 「my-gitlab-route」
VPC → 名前が「my-gitlab-vpc」のVPC
タグの設定はそのままで「ルートテーブルを作成」ボタンを押します。
-
画面上部にルートテーブルが作られた旨メッセージが表示されます。
これで、新しくルートテーブルが作られましたが、デフォルトの送信先は「送信先:10.0.0.0/16」「ターゲット:local」という1項目だけが設定されています。この設定のままではVPC内でしか通信できず、インターネットと通信できません。そこで、送信先を追加してインターネットと通信できるようにします。具体的には、送信先に「0.0.0.0/0」を追加してインターネットゲートウェイに転送するという設定を追加します。それではやっていきます。
- ルートテーブルを修正します。
ルートテーブルの一覧画面で、先ほど作った「my-gitlab-route」のチェックボックスを選び「アクション」→「ルートを編集」をクリックします。
- 必要情報を入力していきます。
送信先 → 「0.0.0.0/0」
ターゲット → 名前が「my-gitlab-internet-gateway」のインターネットゲートウェイ
「変更を保存」をクリックする。
-
送信先が追加され画面上部にルートの設定が変更された旨メッセージが表示されます。
-
最後にルートテーブルをサブネットに紐づけます。
ルートテーブルの詳細情報が見れる画面の下部の「サブネットの関連付け」タブ→「サブネットの関連付けを編集」をクリックします。
そのあと、「利用可能なサブネット」の中に「my-gitlab-subnet」があるのでチェックを入れ「関連付けを保存」をクリックします。
-
画面上部にルートテーブルが作られた旨メッセージが表示されます。
これでルートテーブルの設定は以上です。
EC2用にキーペアを作成する。
これで、サーバーの土台となるネットワーク領域ができました。ここからサーバーを起動していきますが、サーバーの起動時に必要なRSAキーペアを先に作っておきます。
-
サービスの検索ボックスに「EC2」と検索して、「EC2 ダッシュボード」画面内の「キーペア」に遷移します。
右上にある「キーペアを作成」ボタンを押します。
-
必要な情報を入力していきます。
名前 → 「my-gitlab-key」
キーペアのタイプ → 「RSA」
プライベートキーファイル形式 → 「.pem」
タグの設定はそのままで「キーペアを作成」ボタンを押します。
- 画面上部にキーペアを作成した旨メッセージが表示されます。
キーペアの作成は以上になります。
EC2用にセキュリティーグループを作る。
続いて、EC2用にセキュリティーグループを作っていきます。セキュリティーグループはファイアウォールに当たりますが、AWSではセキュリティーグループと呼ばれます。
それでは設定していきます。
-
「EC2 ダッシュボード」画面内の「セキュリティグループ」に遷移します。
右上にある「セキュリティグループを作成」ボタンを押します。
-
必要な情報を入力していきます。
セキュリティグループ名 → 「my-gitlab-ec2-security-group」
説明 → 「for my-gitlab-ec2-security-group」
VPC → 名前が「my-gitlab-vpc」のVPC -
インバウンドルールを追加していきます。
今回は、外部からのhttp、https、SSH接続を許可するので、画像のようにそれぞれ3つ「タイプ」と「ソース」を追加します。SSHのソースはSSH接続元のIPアドレスを指定します。
アウトバウンドルール、タグの設定はそのままで「キーペアを作成」ボタンを押します。
- 画面上部にセキュリティグループを作成した旨メッセージが表示されます。
セキュリティグループの作成は以上になります。
EC2インスタンスを新しく起動する。
いよいよサーバーを準備していきます。
-
「EC2 ダッシュボード」画面内の「インスタンス」に遷移します。
右上にある「インスタンスを起動」ボタンを押します。
-
必要な情報を入力していきます。
名前 → 「my-gitlab-ec2」
アプリケーションおよび OS イメージ → Ubuntu
インスタンスタイプ → 「t3.large」
キーペア名 → 先ほど作った「my-gitlab-key」
- ネットワーク設定の「編集」を押して必要な情報を入力していきます。
VPC → 「my-gitlab-vpc」
サブネット → 「my-gitlab-subnet」
パブリック IP の自動割り当て → 「無効化」
ファイアウォール (セキュリティグループ) → 「既存のセキュリティグループを選択する」
共通のセキュリティグループ → 「my-gitlab-ec2-security-group」
ほかの情報やタグの設定はそのままで「インスタンスを起動」ボタンを押します。
- 画面上部にインスタンスが起動した旨メッセージが表示されます。
これでインスタンスの起動手順は以上になります。
EC2にグローバルIPアドレスを割り当てる。
起動したサーバーに対して、グローバルIPアドレスを割り振っていきます。
グローバルIPアドレスの取得は「Elastic IP」を利用します。
-
まずは、IPアドレス取得します。
「EC2 ダッシュボード」画面内の「Elastic IP」に遷移して、右上にある「Elastic IP アドレスを割り当てる」ボタンを押します。
-
必要な情報を入力していきます。
ネットワークボーダーグループ → 「ap-northeast-1」
パブリック IPv4 アドレスプール → 「Amazon の IPv4 アドレスプール」
タグの設定はそのままで「割り当て」ボタンを押します。
- 画面上部にIPアドレスを割り当てた旨メッセージが表示されます。
次にこのアドレスをEC2に紐づけます。 - 「Elastic IP」画面に遷移して、取得したアドレスを選択して、右上にある「アクション」→「Elastic IP アドレスの関連付け」をクリックします。
- 必要な情報を入力していきます。
リソースタイプ → 「インスタンス」
インスタンス → 「my-gitlab-ec2」
プライベート IP アドレス → 「10.0.1.26」
ほかの情報はそのままで「関連付ける」ボタンを押します。
- 画面上部に関連付けされた旨メッセージが表示されます。
外部からSSH接続する。
最後に、最後に外部からSSH接続でサーバーへの接続を試みます。
- ターミナル上でSSH接続します。
PS C:\Users\user> ssh -i "C:\Users\user\.ssh\my-gitlab-key.pem" ubuntu@52.68.157.238
- EC2に接続出来たら成功!!!!
お疲れ様でした!
これで、サーバーの土台となるネットワーク領域と外部からアクセス可能なサーバーの構築ができました。
次回は、この箱にGitLabをインストールして、SSL証明書の取得、メール設定(SES)、ドメイン取得(Route 53)をしていきます。
以上になります。最後までご覧いただきありがとうございました。
Discussion