LoginSignup
1
1

Google Cloudインフラ構築ハンズオンやってみた

Posted at

概要

弊社ではシステムのインフラにGoogle Cloudを使用し、Terraformで管理しています。
ですが私はTerraformはおろかGoogle Cloudについも全然知らないしよくわかってないので、とりあえずコンソールを触ってお勉強するところから始めようと思います。
本記事はお勉強の:pencil:です。
目的はGoogle Cloudのコンソールを触ることと、機能や概要についてなんとなく知ることになります。

参考書

Amazon Web Services 基礎からのネットワーク&サーバー構築を使用しました。
本書はAWSでの簡易的なシステムインフラの構築をハンズオンで学べる形式となっている書籍です。
本書で紹介されているシステムインフラの例を、Google Cloud上で構築してみました。

やること

  • パブリックサブネット作成
    • サーバーを構築
    • サーバーにWebサーバーソフトインストール
    • WordPressインストール
  • プライベートサブネット作成
    • サーバー構築
    • NAT構築
    • DBソフトインストール
  • ブラウザから構築したブログにアクセス

準備

まずは利用登録をしていきます。
Google Cloudのコンソールページにアクセスします。
https://console.cloud.google.com/welcome/
SnapCrab_NoName_2023-7-29_15-13-33_No-00.png

90日間300$分の無料トライアルに加え、無料でアクセス可能なサービスもあります。
https://cloud.google.com/free/docs/free-cloud-features?hl=ja

登録に必要な情報を入力して無料トライアルに登録します。

プロジェクトについて

プロジェクトはGoogle Cloudのリソースがまとまった単位のこと。
https://cloud.google.com/storage/docs/projects?hl=ja#what_is_a_project
デフォルトで[My First Project]が作成されているので、これをそのまま使用します。

AWSとの比較

参考にする書籍がAWSのものなので、Google Cloudのサービスに読み替えてハンズオンを進めていきます。
ありがたいことにGoogle側がサービスの対応表を用意してくれているので、これも参考にしていきます。
https://cloud.google.com/free/docs/aws-azure-gcp-service-comparison?hl=ja

パブリックサブネット作成

コンソール画面上部にある検索窓で「VPC」と入力して、VPCネットワークのサービスのページを開きます。
「データを読み込めませんでした」というアラートが出るので、「続行」をして対応します。
SnapCrab_NoName_2023-7-29_15-25-37_No-00.png

Compute Engine APIを有効にしてくださいとのこと。
そもそもGoogle CloudはGoogle Cloud APIsというAPI郡によって成り立っていて、各APIを有効にすることでそのAPIに属するサービスを利用できるということでした。
https://cloud.google.com/apis/docs/overview?hl=ja

Compute Engine APIを有効にします。
SnapCrab_NoName_2023-7-29_15-25-49_No-00.png

APIを有効にすることでVPCネットワークを利用できます。
利用開始時点でdefaultと名がついたVPCが用意されています。
SnapCrab_NoName_2023-7-29_15-27-49_No-00.png

新しくネットワークを作成し、そこにサブネットを追加していきます。
とりあえず名前は「vpc-area」にしました。
SnapCrab_NoName_2023-7-29_15-39-49_No-00.png

サブネットの項目でサブネット作成モードのカスタムをチェックし、新しいサブネットを作成します。

  • 名前: public-subnet
  • リージョン: asia-northeast1(作成時のスクショはにasia-east1だが台湾であることを知らずに設定したため。なんとなく東京にしておきたかったのであとで編集しました)
  • IPスタックタイプ: IPv4
  • IPv4範囲: 10.0.1.0/24
  • 限定公開のGoogleアクセス: オフ
  • フローログ: オフ
    SnapCrab_NoName_2023-7-29_15-40-23_No-00.png

ファイアウォールの設定はいったんデフォルトで用意されているプロトコル/ポートがallのものを設定しました(あとで修正しました)
SnapCrab_NoName_2023-7-29_15-48-32_No-00.png

上記内容でとりあえず作成。
SnapCrab_NoName_2023-7-29_15-49-47_No-00.png
SnapCrab_NoName_2023-7-29_15-50-5_No-00.png

これでパブリックサブネットの作成自体は完了です。

インターネットゲートウェイ

左側のメニューのルートから確認できます。
デフォルトのものが用意されるのでこれをそのまま使いました。

SnapCrab_NoName_2023-7-29_15-58-46_No-00.png
SnapCrab_NoName_2023-8-19_17-30-33_No-00.png

サーバー構築(その1)

コンソール画面上部にある検索窓で「サーバー」とか「Compute」とか入力して、Compute Engineのサービスのページを開きます(検索窓をクリックすると人気キーワードのサジェストでも出てきます)
インスタンスを作成していきます。
SnapCrab_NoName_2023-7-29_16-2-55_No-00.png

  • 名前: web-server
  • リージョン: asia-northeast1
  • マシンの構成: E2
  • マシンタイプ: プリセット
    SnapCrab_NoName_2023-7-29_16-12-16_No-00.png

とりあえず触ることが目的なのでマシンのスペックとかは気にしません。
ブートディスクもデフォルトのままです。

ここでもファイアウォールの設定ができるので、HTTP トラフィックを許可する, HTTPS トラフィックを許可するにそれぞれチェックを入れておきます。
SnapCrab_NoName_2023-7-29_16-12-26_No-00.png

詳細オプションを開き、ネットワークの設定をします。
ネットワークインターフェースがデフォルトのものになっているので、先程作成したサブネットを追加するようにします。

SnapCrab_NoName_2023-7-29_16-12-40_No-00.png

  • ネットワーク: vpc-area
  • サブネットワーク: public-subnet
  • プライマリ内部 IPv4 アドレス: エフェメラル(カスタム)
  • カスタムのエフェメラル: 10.0.1.10
  • ネットワークサービスティア: スタンダード
    SnapCrab_NoName_2023-7-29_16-14-49_No-00.png

上記内容で作成。
SnapCrab_NoName_2023-7-29_16-18-53_No-00.png

ファイアウォール設定見直し

サブネットを作成する際にプロトコル/ポートがallのファイアウォールを設定していたので、これを修正します。
インスタンス作成時のhttp, httpsとsshのみを許可するように設定を変更します。

VPCネットワークの詳細画面 -> ファイアウォール -> ファイアウォール ルールを追加でsshのルールを追加します

  • 名前: vpc-area-allow-ssh(初回作成時にスクショ撮り忘れたので名前重複エラー)
  • ログ: オフ
  • ネットワーク: vpc-area
  • 優先度: 1000
  • トラフィックの方向: 上り
  • 一致したときのアクション: 許可
  • ターゲット: 指定されたターゲットタグ
  • ターゲットタグ: ssh
    SnapCrab_NoName_2023-8-19_18-51-21_No-00.png

インスタンス作成でhttp, httpsを許可するファイアウォールを設定すると, ネットワークタグのところにhttp-server, https-serverというタグが追加されます。
タグで紐づけするのねということでsshという名前のタグでファイアウォールを先程作成したインスタンスに同様に紐づけします。
https://cloud.google.com/firewall/docs/tags-firewalls-overview?hl=ja

  • プロトコルとポート: 指定したプロトコルとポート
  • TCPにチェック
  • ポート番号: 22
    SnapCrab_NoName_2023-8-19_18-56-44_No-00.png

これでルールを追加作成。
SnapCrab_NoName_2023-8-19_18-48-45_No-00.png

Compute Engineのサービスのページのサービスに戻り、インスタンスの編集でネットワークタグを追加します。
SnapCrab_NoName_2023-8-19_18-59-12_No-00.png

これでファイアウォールの修正は完了です。

SSH接続

インスタンス一覧にあるSSHをクリックすることでブラウザからSSHができます。便利!
https://cloud.google.com/compute/docs/ssh-in-browser?hl=ja

Authorizeをクリックして続行
SnapCrab_NoName_2023-8-19_19-8-16_No-00.png

接続完了。
SnapCrab_NoName_2023-7-29_16-45-51_No-00.png

Webサーバーソフトインストール

ブートディスクをデフォルトで作成したらDebian GNU/Linux 11 (bullseye)だったので、参考書とは異なりaptでインストールします。

sudo apt install apache2

Apaccheを起動させます。

sudo systemctl start apache2

http://自動で設定された外部IPでページを開きます。
SnapCrab_NoName_2023-8-19_19-50-4_No-00.png

プライベートサブネット作成

VPC ネットワークの詳細 -> サブネット -> サブネットを追加 からサブネットを作成します。

  • 名前: private-subnet
  • IPv4範囲: 10.0.2.0/24
    SnapCrab_NoName_2023-7-29_19-11-49_No-00.png

サーバー構築(その2)

サーバー構築(その1)でやった手順とほぼ一緒の設定です。
名前はdb-serverにしました。
インターネットからのアクセスを制限させるため、ファイアウォールの設定にあるHTTP トラフィックを許可する, HTTPS トラフィックを許可するにはチェックを入れません。

ネットワークインターフェースは先程作成したプライベートサブネットを指定します。
カスタムのエフェメラルIPv4アドレスは10.0.2.10です。
また外部IPv4アドレスは、なしを指定します。
SnapCrab_NoName_2023-7-29_19-25-18_No-00.png

これで作成完了です。

DBサーバーに接続

ファイアウォールのルール追加

先程作成したインスタンスにアクセスするために、WebサーバーからのSSHだけ許可するようなファイアウォールのルールを追加します。

SnapCrab_NoName_2023-8-19_20-12-53_No-00.png

internal-sshという名前のターゲットタグを作成したので、これをDBサーバーに設定します。

踏み台インスタンスからSSH

Webサーバーを踏み台インスタンスとしてDBサーバーにSSH接続します。
gcloudのコマンドを使用しました。
https://cloud.google.com/compute/docs/connect/ssh-using-bastion-host?hl=ja#console

gcloud compute ssh db-server --internal-ip

SnapCrab_NoName_2023-8-19_20-18-24_No-00.png
初回アクセスの際はパスフレーズの設定があります。

NAT作成

DBソフトをインストールしたいので、プライベートサブネット -> インターネットの通信を行うためのNATを作成します。
上部検索窓に「NAT」と入力しCloud NATのサービスを選択します。
https://cloud.google.com/nat/docs/overview?hl=ja

  • 名前: cloud-router(なんでこの名前にしてたのか謎。nat-gatewayとかのほうがいい)
  • ネットワーク: vpc-area
  • リージョン: asia-northeast1
    SnapCrab_NoName_2023-8-5_16-23-53_No-00.png

Cloud Router に NAT ゲートウェイを構成します。

Cloud NATの説明にある通り、Cloud Routerも作成します。
NAT作成ページ、Cloud Router -> 新しいルーターを作成から作成可能です。
名前だけ設定して作成し、作成したCloud Routerを設定します。
SnapCrab_NoName_2023-8-5_16-24-28_No-00.png

プライベートサブネットのみに適用させます。

  • ソース:カスタム
  • サブネット名: private-subnet
  • IP範囲1: すべて
  • Cloud NAT IPアドレス: 自動
  • ネットワークサービスティア: スタンダード
  • 高度な構成: 特にいじらず
    SnapCrab_NoName_2023-8-5_16-26-15_No-00.png

上記内容で作成。

DBサーバー -> インターネット

DBサーバーに接続し、適当にgoogleに疎通確認してみます。

curl www.google.com

SnapCrab_NoName_2023-8-5_16-51-40_No-00.png

DBソフトインストール

参考書と同様にMariaDBを使用します。

sudo apt install mariadb-server

MariaDBの初期設定もします。以下参考↓
https://www.digitalocean.com/community/tutorials/how-to-install-mariadb-on-ubuntu-20-04-ja#2-mariadb

参考書の通り、rootでDBにログインします。

mysql -u root -p

WordPress用のデータベース、ユーザーを作成します。

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

grant all on wordpress.* to wordpress@"%" identified by 'wordpresspasswd';

flush privileges;

WordPressインストール

PHPインストール

WebサーバーにWordPressをインストールします。
WordPressがPHPで動くためPHPとその他必要なモジュールをインストールします。

sudo apt install -y php
sudo apt install php-mbstring
sudo apt install php-mysql

Webサーバー -> DBサーバー上のMariaDBへの疎通確認

参考書と同様にDBサーバー上のMariaDBへの疎通確認を行うため、WebサーバーにもMariaDBをインストールします。

sudo apt install mariadb-server

ファイアウォールのルーツを追加して、ターゲットタグをDBサーバーに追加します。
SnapCrab_NoName_2023-8-5_17-41-8_No-00.png
SnapCrab_NoName_2023-8-5_17-41-54_No-00.png

疎通確認をしていきます。

mysql -h 10.0.2.10 -u wordpress -p

SnapCrab_NoName_2023-8-5_18-13-15_No-00.png

WordPressインストール

参考書通りにWordPressをインストールしていきます。

cd ~
wget https://ja.wordpress.org/latest-ja.tar.gz

tar xzvf latest-ja.tar.gz 

cd wordpress/
sudo cp -r * /var/www/html/

sudo chown www-data:www-data /var/www/html/ -R

この状態でブラウザからhttp://自動で設定された外部IPを開いても、まだApacheのデフォルトページのままです。
Apacheのデフォルトページが残っているので、これを移動なり削除なりしておきます。

sudo mv /var/www/html/index.html ~

これでWordPressの初期設定画面が表示されるようになりました。

WordPress初期設定

http://自動で設定された外部IPを開き、初期設定を進めていきます。
データベース情報を入力、インストール実行、サイトタイトルや管理者情報を入力していき初期設定が完了します。

無事、管理画面とブログを開くことができました。
SnapCrab_NoName_2023-8-5_18-55-52_No-00.png
SnapCrab_NoName_2023-8-5_18-56-39_No-00.png

おしまい

当初の目的通り、Google Cloudのコンソールを触り機能や概要についてなんとなく知って、親しみを覚えることができたのではないかと思います。
まだまだ知らない・わからない機能も多いですし、業務で使えるスキルには結びついてないので、引き続きお勉強していきます:muscle:
無料で使えるクレジットも200円分ぐらいしか使ってなくて43000円分ぐらい残っているので、この機会に触っておきたいですね。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1