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

CatallaxyAdvent Calendar 2021

Day 4

Rubyアプリを手軽にCloud Runにする話

Last updated at Posted at 2021-12-08

こんにちは妖精です。
Catallaxy Advent Calendar 4日目として、既存アプリケーションをGCPのCloud Runへ移行したことを簡潔に記録しようと思います。

元々のアプリケーションはVPS(さくらのVPS)1台にデプロイされていました。たまに突然Rubyサーバーが丸ごと落ちてしまうようで、そのたびに業務が止まってしまっていたようです。原因として最も考えられるのは単一のVPSに複数のサービスがただ単純にプロセスとしてデプロイ・稼働していたことでした。開発者は既にこの業務から離れており残されたのは必要最低限のドキュメントとわずかに継承された脳裏の記憶でした。

cloudrun.png

そんな状況だったので一気にGoogle CloudのCloud Runに移行することに決めました。ビルドの仕組みがなかったので、Google Cloud Buildを手順通り使うのは面倒なので、Cloud RunのDeploying from source code機能を利用することとしました。この機能は gcloud run でいうところの --source [DIR] フラグに該当します。
Rubyアプリケーションなので、Google Cloud Buildpacksではサポートされません(Cloud Run移行時も2021年12月現在も同じ)。しょうがないのでDockerfileを手で記述しました。と言ってもほとんどありのままのコピーに毛が生えた程度です。30秒でPRが作成され、瞬時にマージされていきました。
デプロイ(CD)はいつも通りGitHub Actionsを利用したのですが、利用するService Accountの設定の際、Google Cloud Buildの (Project number)@cloudbuild.gserviceaccount.com に対して roles/iam.serviceAccountUser ロールを追加する必要があるので、ハマりやすいポイントだと思います。

今回用いたActionsのコアの内容は以下です。

.github/workflows/deploy.yml
    - name: Deploy to Cloud Run
      id: deploy
      uses: google-github-actions/deploy-cloudrun@v0.6.0
      with:
        credentials: ${{ secrets.GCP_SA_KEY }}
        source: .
        service: ${{ env.SERVICE }}
        region: ${{ env.REGION }}

参考リソース

以上、妖精でした。明日は信州の廻船問屋さんによる「私が本物の御老公様(仮)」です。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?