【GCP】最近気になっているGCPのGoogle Cloud Runを触ってみます

はじめに

こんにちは、がんがんです。


2月の初め頃からFirebaseを触っております。FirebaseGCPを調べていくなかでCloud RunCloud Buildにとても興味を持ちました。
今回はCloud Runについて触ってみようと思います。公式ドキュメントの分からないところを付け足しながら試してみます。

目的

  • Cloud Runについて触ってみる
  • デプロイと実行までの手順を試してみる

プロジェクトの準備

まずはプロジェクトの選択・APIの有効を行っていきます。

f:id:gangannikki:20200227235229j:plain
Cloud Run API


今回はCloud Shellを使用していますので、SDKのインストールなどは初期終了済みでした。Updateとかは念のために実行しました。

サンプルアプリ・ファイルの準備

公式ドキュメントを参考にサンプルアプリを作成していきます。
今回はPythonのflask appを使用します(どれを使用してもあまり関係なさそうではある)。

Pythonファイル

helloworld-python/app.py
import os

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    target = os.environ.get('TARGET', 'World')
    return 'Hello {}!\n'.format(target)

if __name__ == "__main__":
    app.run(debug=True,host='0.0.0.0',port=int(os.environ.get('PORT', 8080)))

Dockerfile

helloworld-python/app.py
FROM python:3.7

ENV APP_HOME /app
WORKDIR $APP_HOME
COPY . .

RUN pip install Flask gunicorn
CMD exec gunicorn --bind :$PORT --workers 1 --threads 8 app:app

Cloud Buildでコンテナイメージをビルドし、デプロイする

Cloud Buildにてコンテナイメージをビルドして、Cloud Runにデプロイしていきます。

# プロジェクトのIDを確認
$ gcloud config get-value project
# Cloud Buildにてコンテナイメージのビルド
$ gcloud builds submit --tag gcr.io/[PROJECT-ID]/helloworld

Cloud Buildの方へ移動するときちんとビルド履歴が残っていることと思います。
下記コマンドでCloud Runにデプロイをしていきます。

# Cloud Runにデプロイする
$ gcloud beta run deploy --image gcr.io/[PROJECT-ID]/helloworld
Please choose a target platform:
 [1] Cloud Run (fully managed)
 [2] Cloud Run for Anthos deployed on Google Cloud
 [3] Cloud Run for Anthos deployed on VMware
 [4] cancel
Please enter your numeric choice: <選択>

To specify the platform yourself, pass `--platform managed`. Or, to make this the default target platform, run `gcloud config set run/platform managed`.

Please specify a region:
 [1] asia-east1
 [2] asia-northeast1
 [3] europe-north1
 [4] europe-west1
 [5] europe-west4
 [6] us-central1
 [7] us-east1
 [8] us-east4
 [9] us-west1
 [10] cancel
Please enter your numeric choice: <選択:今回は7を選択>

To make this the default region, run `gcloud config set run/region us-east1`.

Service name (helloworld):  <入力する>
Allow unauthenticated invocations to [<サービス名>] (y/N)?

しばらく待っているとURLが表示されます。それまで待機しておきます。

実行結果

実行結果は以下の通りです。結果自体はよくあるHello Worldなのであまり面白みはないですね。
f:id:gangannikki:20200304202304j:plain

おわりに

今回はCloud Runのドキュメントを試していきました。普段使っているDocker環境をそのまま使用できる点は非常に簡単だなと思いました。
次回は今回さらっと触ったCloud Buildについてドキュメントを参考にしながらトライしていこうと思います。