0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

CloudRunからはじめるGCP

Last updated at Posted at 2022-03-17

ついにGCP(Google Cloud Platform)に入門することができました。今回はずっと使ってみたかったCloudRunに簡単なAPI Serverをデプロイするところまでやっていきたいと思います。著者のシェルはzshとなっております。

Cloud SDKをインストールする

以下のコマンドを実行するとシェルスクリプトが実行され、どのディレクトリにインストールするか聞かれますがEnterを押します。(ホームディレクトリの下にgoogle-cloud-sdkというフォルダができます)

curl https://sdk.cloud.google.com | zsh

勝手にpathを通してくれるのでzshrcを再度読み込みします。

$ source ~/.zshrc

GCPを操作することができるgcloudが使えることを確認します。

$ gcloud version

Cloud SDK をインストールしたら、gcloud init を実行して初期設定を行います。
Pick cloud project to useと聞かれるので現在のプロジェクトの番号を書き込みEnter

$ gcloud init

下記コマンドでdockerからgcloudにアクセスできるようにします。

$ gcloud auth configure-docker

GCRにコンテナイメージをPushする

Container Registry APIを有効にしてプライベートなDockerイメージを保存するAPIを使えるようにします。

スクリーンショット 2022-03-16 23.38.27.png

コンテナイメージをビルドする。

docker-compose build

* コンテナイメージを生成するときにM1チップのMacbookだと64ビットLinux用にコンパイルしなければなりません。なので--platform=linux/x86_64を付け加えます。

dockerfile
FROM --platform=linux/x86_64 golang:latest AS builder

GCRにPushするためにローカルイメージにタグ付けをします。ホスト名をasia.gcr.ioとすることでasiaにイメージが保管されます。

$ docker tag ローカルイメージ名 ホスト名/プロジェクトID/イメージ名:latest

GCRにPushします。ここまで完了したらコンソール画面でPushできているか確認してください。

$ docker push ホスト名/プロジェクトID/イメージ名:latest

CloudRunにデプロイする

Cloud Run API を有効にします。

スクリーンショット 2022-03-17 11.58.45.png

先ほどECRにPushしたコンテナイメージを選択する。

スクリーンショット 2022-03-16 23.48.12.png

誰でもリクエストできるように「未認証の呼び出しを許可」

スクリーンショット 2022-03-16 23.59.07.png

アプリケーションがlistenするポートを記入します。
コンテナ起動時にコマンド「/main」を実行するように設定します。

スクリーンショット 2022-03-16 23.53.21.png

作成をクリックするとデプロイされURLが発行されたら完了です。

スクリーンショット 2022-03-17 0.00.06.png

メリット

・デプロイ体験がとても良くSSL化までマルッとやってくれるのは最高
・AWSのAppRunnerやFargateは最小のインスタンス数は1であることに対してCloudRunは0でも可なのでリクエストがない場合は課金されない。ただしコールドスタートとなる。(個人開発にとても相性が良さそう)

デメリット

・ボリュームをマウントすることができない
・SSH接続できない(ハック的なことをすればできるとの声も)
・プライベートなネットワーク上に構築できない
ex)DBサーバーに接続する際にはインターネットから直接アクセスさせないようにCloud Run + VPC(サーバーレスVPCアクセスコネクタ + Cloud SQL)のような構成にする必要がある

使ってみての感想

AWSと比べてGCPはドキュメントが非常に分かりやすくてドキュメントだけで理解できた。トラブルシューティングも詳しく記載されていて良かった。GCPを使っていきたくなった。

参考文献

0
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?