GCE無料枠でVM作成(+Dockerインストール)
はじめに
Google Cloud Platform (GCP) の1サービス Compute Engine (GCE) で,無料枠で収まるVMインスタンスを作成したときの作業メモ
無料枠の詳細: Google Cloud の無料プログラム #Compute Engine
VMインスタンスの作成自体は無料でできるが,その後の運用次第ではネットワークトラヒック等の上限超過で課金される恐れもあるため定期的に課金状況は確認していたほうが安心.
特に中国とオーストラリアからのアクセスは無料枠の対象外のためIPアドレス等からフィルタすると確実.
手順
GCE利用準備
GCPを利用するにはまずGCPのプロジェクトを作成し,そのプロジェクトの請求先アカウントの指定と支払方法の登録が必須となる.
初めてGCPを利用する場合,以降の手順でGCEの画面にアクセスすると恐らくプロジェクト作成/請求アカウントの指定を促されるので,案内に従って実施していく.
なお、GCP新規ユーザは$300分の無料クレジット(有効期間 90日間)がもらえるので,設定ミスで課金が発生してもまずこの無料クレジットから消化されていく(はず).
インスタンス作成
Compute Engineのトップ画面から「+ インスタンスを作成」を選択する.
「インスタンスの作成」画面で上から順に以下条件でVMインスタンスを設定していく.
項目 | 設定値 | 備考 |
---|---|---|
名前 | 任意 | インスタンスのホスト名になる |
リージョン | us-west1 | us-west1/us-central1/us-east1が無料枠 立地的に一番日本に近いのがus-west1らしい |
ゾーン | 任意 |
- マシンの構成
項目 | 設定値 |
---|---|
マシンファミリー | 汎用 |
シリーズ | E2 |
マシンタイプ | e2-micro(2 vCPU、1 GB メモリ) |
- ブートディスク
項目 | 設定値 | 備考 |
---|---|---|
OS | Ubuntu | プレミアムイメージ(RHEL/Windows Server/Ubuntu pro辺り)は課金対象なのでそれ以外から選択 |
バージョン | Ubuntu 22.04 LTS | ARMとx86/64の2つが表示されるが,マシンタイプ的にx86/64しか選べないのでそちらを選択 |
ブートディスクの種類 | 標準永続ディスク | |
サイズ(GB) | 30 | 10GB->30GBへ変更 (無料枠の最大値) |
- ファイアウォール ※任意
Webサーバ利用等,80/443ポートを開放しておく必要がある場合は実施する.
項目 | 設定値 |
---|---|
HTTPトラフィックを許可する | チェック |
HTTPSトラフィックを許可する | チェック |
- 詳細オプション ※任意
固定のグローバルIPアドレスが必要な場合に実施する.
詳細オプションからネットワーキングと進むと「default」という名前のネットワークインターフェースが出てくるので,クリックして「ネットワークインターフェースの編集」を表示させる.
項目 | 設定値 |
---|---|
外部 IPv4 アドレス | 「エフェメラル」となっているのでプルダウンから「IPアドレスを作成」を選択し,適当な名前を入れて予約ボタンを押すと固定の外部IPv4アドレスが振られる |
ここまで設定したら一番下の「作成」ボタンを押してVMインスタンスの作成が完了
ちなみに右側の料金の月間予測は無料枠内の設定にしても$0.00にはならなかった($6くらい)
インスタンスへSSH接続
インスタンス作成後はCompute Engineのトップ画面に作成したインスタンスの一覧が表示される.
一覧の「接続」列の「SSH」を押すと,該当のインスタンスへSSH接続できる.
SSH接続ポートの変更
インスタンス作成以降,すぐにあちこちから不審なアクセスがあるのでsshのポート番号を22から変更しておく.
以降のコマンドはすべてUbuntu 22.04での実行例であり,CentOS等をインストールした場合は一部コマンドが異なってくるため注意
# sshアクセスログの確認
$ cat /var/log/auth.log | grep sshd
インスタンス側設定
インスタンスにSSH接続して以下コマンド投入
# 元の設定ファイルをバックアップ
$ sudo cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.org
# vi等のエディタやsedで"Port XXXX"を追記
$ sudo vi /etc/ssh/sshd_config
# sshdを再起動
$ sudo systemctl restart sshd
〜〜 省略 〜〜
Include /etc/ssh/sshd_config.d/*.conf
#Port 22
Port 10022 # 設定例
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::
〜〜 省略 〜〜
GCE側設定
「VMインスタンス」ページ下部の関連アクションから「ファイアウォール ルールの設定」を表示する.
VPCファイアウォールルールにデフォルトで設定されたルールが一覧表示されている.
その中で「default-allow-ssh」を選択し、ルールの詳細画面から「編集」を押す.
ルールの編集画面から「指定したプロトコルとポート」で許可しているポート番号を22から任意の番号(画像では10022)へ変更する.
以降は「SSH」の横のプルダウンメニューにある「ブラウザウィンドウでカスタムポートを開く」からポート番号を指定してSSH接続できる.
その他の設定
タイムゾーンの変更
インスタンスのタイムゾーンがUTC(協定世界時)だったのでJST(日本標準時)へ変更
以下コマンドをSSH接続したインスタンス上で投入
# 設定
$ sudo timedatectl set-timezone Asia/Tokyo
# 確認
$ date
Fri Aug 19 19:19:26 JST 2022
Dockerのインストール
Docker公式のUbuntuでのインストール手順を参考に以下コマンドを投入
$ sudo apt-get update
# 必要ツールのインストール ※ubuntu-22.04ではすべて最新版インストール済みと表示されたので不要
$ sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
# 公式のリポジトリのキーを取得
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# リポジトリを登録
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# aptコマンドのリポジトリ更新
$ sudo apt-get update
# dockerのインストール
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# docker-composeもインストール
$ sudo apt-get install docker-compose
インストール後はDockerコマンドが使えるようになる.
$ sudo docker --version
Docker version 20.10.17, build 100c701
$ sudo docker-compose --version
docker-compose version 1.29.2, build unknown
GCPの予算の設定
想定外の課金に備えてアラートを設定する.
※あくまでもアラートだけであり,課金発生を防ぐような機能ではないので注意
GCPのナビゲーションメニューから「お支払い」->「予算とアラート」を選択する.
「+ 予算を作成」で以下のような条件でアラートを設定していく.
- 範囲
項目 | 設定値 |
---|---|
名前 | 任意 |
期間 | 月間 |
- 金額
項目 | 設定値 |
---|---|
予算タイプ | 指定額 |
目標金額 | 1 |
- 操作
「予算のXX%に到達したらアラート」といった設定が可能だが,予算1円の場合は何%にしても1円のままなので100%だけ残して他は削除
不要な設定は右側のゴミ箱で削除可能だが(下図参照),マウスを乗せないと表示されず,表示領域が狭くても出てこなかったのでブラウザのウィンドウ調整が必要になるかも
手順ここまで.ありがとうございました