GCEのインスタンスをほぼ無料で立ち上げてみました♪

cacapon \ 2019/08/20

プログラミング

<はじめに>

こんにちは、cacaponです~
前回のブログを見ていただいた方、ありがとうございました~
何点かご感想もくれた方がおりまして、大変うれしく思っております~♪

中には厳しい言付けを仰って頂いた方もいましたが、
cacaponなりに見やすいブログにしていきたいと思いますので、
これからもよろしくお願いします♪

さて、本日のブログの内容ですが、
皆さんGoogle Cloud Platform(GCP)は使っておりますでしょうか?

今回はその中にある Google Compute Engine(GCE)という
PaaSを使ってLinuxの仮想環境を立ち上げるまでを紹介したいと思います♪

仮想環境の立ち上げってcacapon的にはお値段が高そうなのですが…
なんと、通常は料金がかかるところ、設定によってはほぼ無料で使えるそうなんです! 今回はそれを試したのをまとめていきましたので、見て頂ければ幸いです~

<GCEを使うのに必要なもの>

  • GCPの登録

  • クレジットカード

  • Googleアカウント

…なのだそうですが、実は今回既に登録済みの「会社のGCP」と私のアカウントを紐づける形で使わせていただきました~
ですので、登録関連の作業がスキップしておりますのでご了承ください~

事前準備 IAMで権限を設定してもらう

まずは、自分のアカウントで色々操作できるようにする必要があります~
なので、プロジェクトのオーナーさんにお願いして権限を設定してもらってください~

手順

1:VMインスタンスを立ち上げる

Google Compute Engineを選択して、作成ボタンを押します~

01 make instance1

下記の注意事項に注意しながら設定してください~

  • 名前:任意で大丈夫です~

  • リージョン:us-east4以外のus-xxxxxxを選択します~

  • マシンタイプは f1-microにします~

  • ブートディスクの容量は30GBまで無料なので30GBにします~

  • OSは任意ですが、弊社ではubuntuとdebianを使用してますので、
    インスタンス生成時にはどちらかを設定します~
    今回はdebianのstretchを使わせてもらいました~

01 make instance2
01 make instance3
01 make instance4

また、今回使用したアプリがwebに公開するものなので、以下の設定も行いました~

  • HTTP,HTTPSのトラフィックを許可します~

  • 外部IPをエフェメラルに設定します~

01 make instance5
01 make instance6

この赤枠の「エフェメラル」ですが、インスタンスを作っている間は生きてますのでご安心を~
静的IPで作成することもできるのですが、その場合 インスタンスと紐づいていないと課金されるので注意してください~

これで、ページ下部にある作成を押せば、インスタンスが出来上がります~
出来上がるまでしばらく待ちましょう~

2:公開鍵を設定する。

GCEで使うsshの公開鍵を作ります~
今回はed25519を使いました~

まず、自前のbashを開いて下記のように入力します。
ssh-keygen -t ed25519 -P "" -f <鍵の名前> -C "<cacaponのメールアドレス>"

そうすると、<鍵の名前>.pubというファイルができるので、 中身をGCEに登録します~

GCE内のメタデータを選択して、編集ボタンを押します~

02 setting sshkey1

項目の追加を押した後、<鍵の名前>.pubを貼り付けて保存しましょう~

02 setting sshkey2

3:アクセスできるポート番号を22番から別の番号に変更する。

これでインスタンスにアクセスできるようになったのですが、
22番は外部からの不正アクセスが多く、
アクセスが多いと課金が発生してしまいます~

不正アクセスも嫌ですし、それで課金が発生するのも嫌ですので
ポート22番を閉じて他のポート番号でアクセス出来るようにしましょう~

3-1:22番以外のポートを許可する。

まずは、ファイアウォールの設定で22番以外のポートでアクセス出来るように設定します~

VCPネットワークのファイアウォールのルールにして、
ファイアウォールルールを作成を押しましょう~

今回は、50000番のポートにしたいと思います~

03 change tcpport1

以下の部分を設定していきます~

  • 名前:任意の名前

  • 一致したときのアクション:許可

  • ターゲットタグ:インスタンスが認識するタグを設定
    今回はallow-50000 にしてます~

  • ソースIPの範囲:0.0.0.0/0

  • プロトコルとポート:tcpにチェックを入れ、50000を入力します~

03 change tcpport2
03 change tcpport3

こちらの設定が終わりましたら、保存を押します~

次に、インスタンスにファイアウォールのルールを紐づけます~

VMインスタンスに戻り、編集ボタンを押します~

03 change tcpport4

ネットワークタグという場所があるので、
こちらに、さきほど作成したネットワークタグを入力します~

入力したら保存しましょう~ これで、50000ポートでアクセスするようになりました~

3-2: インスタンス内のポート設定を切り替える。

50000ポートの許可は作りましたが、インスタンス内の設定はまだできてません。アクセスして変更しましょう~

まずは、写真のように選択し、22番でアクセスしましょう~

03 change tcpport6

しばらく待つと、CLIの画面が出ます~
インスタンスの中に入れました~

入力したら、下記コマンドを実行し
sudo vi /etc/ssh/sshd_config

# Port 22Port 50000 に変更して保存します~

03 change tcpport7

終わりましたら、下記コマンドを実行します。
sudo systemctl restart sshd

これで、ポート番号が50000に切り替わりました~

インスタンスのブラウザは落とさず に、50000ポートでアクセスできるか確認しましょう~
ここを失敗するとアクセスできなくなりますので、注意してください~

ブラウザウィンドウでカスタムポートを開くを押せば、別のウィンドウでもう一度立ち上がります♪

3-3: 22番ポートでのアクセスを禁止する。

ここまで出来たら、22番ポートでアクセスできないようにしましょう~

手順は…

  • ファイアウォールのルールを作る

  • VMインスタンスに紐づける

…と3-1とほぼ一緒ですが、 一致したときのアクションだけ拒否にするところだけ異なります~

なお、今回のターゲットタグはdisallow-22としています~

ここまで出来ましたら、カスタムポートの22番でアクセスを試してください♪
正しく設定されていればアクセスできなくなっているはずです~

4:インスタンス内の準備

次は、インスタンス内に必要なツールを入れていきます~
今回は弊社で利用している以下のツールをインストールしました~

各インストールにつきましては、リンク先を参照してください~

5:いざ、実行!

準備が出来ましたら、git clone で弊社が作成したリポジトリをLinux環境に落とし、
事前準備設定後、sudo docker-compose up -d でバックグラウンドで実行させました♪

今回実行したのはwebページ上で英語試験用の問題集が解けるという弊社のアプリなのですが、
無事にアクセス出来ました♪ Linux上でもちゃんと動いてますね♪

04 run image

設定したアプリはこちらのリンクで問題を解くことができますので、 よろしければご利用ください~

皆さんはどのくらいの英語力なのでしょうか… きっとcacaponよりすごいのでしょう~

…あ、ちなみに以前のブログ KubernetesでRedis永続ストレージをもったRedisを建てよう
ではKubernetesで動作させていたのですが、本ブログからDockerで動かしております~

おわりに

ここまででGCPを使ったLinuxの立ち上げまでを順を追って説明しましたが、 いかがでしたでしょうか?
これがほぼ無料でできるってすごいですね…

ずっと動いておいてほしい環境で試したいときなんかに
良かったら試してみてくださいませ~

因みに、ほぼ無料と言っているのは、理由がありまして…

  • 不正アクセスで…

  • 11月にサマータイムとして1時間分課金が…(cacapon未確認)

  • インスタンスを消したけど静的IPが残っていて課金が…

などなど、色々な部分で課金されちゃう罠があるのです~
皆さんも作る際は気を付けて作成してみてくださいね~

では、最後に社員募集のお知らせになります~


Amazing engineでは、代表の「必要なものを先に作ろう」という考えのもと、
botやシステムなどを皆で考えながら、より良い会社にして行っている最中です~

私は働き始めてまだ間もないのですが、そのための時間はしっかりあり、
手厚いフォローもあってとても充実した仕事を送れています~
ここでしたら、いずれ私がやりたいゲーム作りもできるなぁという実感を持っています~

そんな弊社ですが、只今社員募集中です~
よかったら一緒にAmazing engineで働いてみませんか?

私たちと一緒に会社を大きくしたい…
じっくり考える環境で企画・設計・実装したい…

そんな貴方と一緒に働けることを、心よりお待ちしています~

ご不明な点等ございましたら、下記メールアドレスへご連絡くださいませ♪
employment@amazingengine.co.jp


最後まで読んでくれてありがとうございました!
また次のブログで会いましょ~