GCPにDjangoの環境を整えていく01(VPC/subnet/Internet Gateway/FW/VM)

こんにちは。
株式会社クラスアクト インフラストラクチャ事業部の大塚です。

以前AWSで以下のような環境を構築しました。超単純ではありますが、、、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/fd6e790b-534f-838f-2483-da3507ad365a.png)

今回はこの環境をGCP上に立ち上げてみたいと思います。
AWS側の構築手順は以下となります。

https://qiita.com/ohtsuka-shota/items/347bf23fdfeafb542255

# 環境イメージ
今回構築するイメージは以下となります。
VPCとsubnet、Firewallを使ってネットワーク周りを整理。
そのあと、整理したネットワーク上にGCEを使ってVMを1台デプロイ。
デプロイしたVMに接続しインターネットに接続できるか。また逆にローカルからVMに対してhttp接続できるかを確認していきたいと思います。

ちなみに、AWSではIGWをデプロイしたりアタッチしたりしていましたが、GCPはそのあたりの設定は不要なようですね。
![GCP01-ページ1.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/05ae275f-21ee-40ac-3e54-441c66ae34fb.png)


# 環境構築
## VPC及びsubnetの作成
Google Cloudの管理コンソールにログインしVPCネットワークを押下します。
初めてだと以下のようなエラーが表示されると思います。
続行を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/dd08aeb2-068e-4d75-c947-052f7055feaf.png)
Compute Engine APIを有効化するか問われますので、有効化します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/eb550035-9301-84a5-c8aa-68465985db6a.png)
5分程度待つと有効化が完了します。
defaultのVPCが作成されていることがわかります。今回はVPCを新規作成していきます。VPCネットワークを作成を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/53c2438f-442f-fe23-258b-d62e95e59b56.png)
以下の設定でVPCを作成します。
- 名前：classact-vpc
- IPv6：無効
- 新しいサブネット
    - 名前：classact-public-subnet01
    - リージョン：asia-northeast-1
    - IPv4範囲：192.168.1.0/24
- ファイアウォール ルール：ここでは何もチェックを入れません
- 動的ルーティングモード：リージョン
![screencapture-console-cloud-google-networking-networks-add-2024-04-20-06_30_22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/fd4e51d4-d371-3d45-d1ea-f9fb443efaf1.png)

作成できたことを確認します。
作成したclassct-vpcを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/3f1c01f0-7f21-e1ee-5c17-cc1b154b5860.png)

ルーティングの情報を確認してみます。
ルートタブを選択して、ネットワークに上記で作成したVPCを選択し、リージョンをsubnetで指定したasia-northeast1を選択します。
subnet用のルーティングとインターネットに抜けるルーティングがデフォルトで登録されていることがわかります。
この辺りはAWSのRouteTableとは少し異なりますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/e99f79d0-9710-117e-f6a0-769cb2a2d9bd.png)

## FWの設定
VPCに対するFWを設定していきます。
ファイアウォールタブを選択すると、特段設定が入っていないことがわかります。
ファイアウォールルールを追加するを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/8516291b-de03-0f9f-a7ef-b0c71e71a459.png)
今回は以下のような設定を行いました。
- 名前：classact-vpc-subnet01-fw
- ネットワーク：classact-vpc
- トラフィックの方向：上り（インバウンドのことらしいです）
- 一致したときのアクション：許可
- ソースフィルタ：IPv4範囲
- 送信元IPv4範囲：0.0.0.0/0
- 送信先フィルタ：IPv4範囲
- 送信先IPv4範囲：192.168.1.0/24
- プロトコルとポート：指定したプロトコルとポート
    - TCP：22,80,443
    - その他：icmp
![screencapture-console-cloud-google-net-security-firewall-manager-firewall-policies-add-2024-04-20-06_48_39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/e88c46f3-2ad4-3742-c37c-ad30b2888049.png)
作成できたことを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/18c06b51-fca2-4e7f-e856-7096ee7a6538.png)
ここまでの設定イメージです。
![GCP01-ページ2.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/e2f549a1-0bea-e2fb-7500-2d4ad6fb9cff.png)


## VMの作成
Compute Engineを開き、VMインスタンスタブを押下します。
インスタンスを作成を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/c7c7d203-fbba-bcb6-66d9-c945f68de157.png)

長くなって恐縮ですが、以下のように設定を入れました。
- 名前：classact-vm-django
- リージョン：asia-northeast1（東京）
- ゾーン：asia-northeast1-a
- マシンの構成：E2
- マシンタイプ：e2-micro
- ファイアウォール：HTTPトラフィックを許可する/ロードバランサのヘルスチェックを許可する
- ネットワークインターフェース
    - ネットワーク：classact-vpc
    - サブネットワーク：classact-public-subnet01
    - IPスタックタイプ：IPv4
    - 内部IPv4アドレス：エフェメラル
    - 外部IPv4アドレス：エフェメラル
    - ネットワークサービスティア：スタンダード
![screencapture-console-cloud-google-compute-instancesAdd-2024-04-20-07_00_23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/4878377e-e37b-4026-714d-6373dc159a97.png)

## VMにログインし接続確認
VMがデプロイできたことを確認します。
作成したVM名を押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/23805cb9-2fc1-c49c-2649-c9151c4ab1b7.png)
詳細タブのSSHを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/6e3a0357-4bb6-feec-adc7-611d7f968ae3.png)
別のウィンドウが開きます。
Authorizeを押下します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/5c061b7a-1f41-d9c9-12fb-58466ce0e2dc.png)
VMをCUIで操作できます。
インターネットにアクセスできることを確認するため、ping google.comを実行します。
通信できていそうですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/f440d927-b1e9-e4ea-3e65-f747b886a270.png)
FWが想定通り動いているかを確認します。
まず自分のPCからVMに割り当てられてたパブリックIPにpingを飛ばします。
返答がありますので、icmpによる疎通はとれていそうですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/1a8a9661-b798-d10b-19ee-1512d7b032ee.png)
また、httpでの通信ができるかも確認します。
apache2をインストールして、稼働していることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/4041b91d-018b-cb4e-5ae2-f30c18d6fd1a.png)
自分のPCの任意のWebブラウザを起動してVMのパブリックIPに対してhttp接続を行った結果が以下となります。問題なさそうですね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3219385/6c5eafc0-2210-c787-937f-9f243bdcb0bb.png)