technikki

適当に技術系を書きます

KoとCloud Runを使ってみる

はじめに

Google CloudだとAWSと違って月毎に無料枠があるらしい。
すごい。
Cloud Functionsを徹底解説!(基本編) - G-gen Tech Blog

前適当にAPIを作ったが、コンテナ化してないのでKo + Google Runがいいかなと思った。
でも今のところ長い処理とかカスタムする気はないので、Google Cloud Functionsで簡単に立ち上げるので十分だと思った。

いざ使ってみようとすると、Cloud Functionはいろんなサービスの組み合わせらしい。

そんなに長くサーバ保守するとは思えないし、無料枠の範囲内で使えると思うけど(よく調べてない)、課金発生すると管理も面倒だなと。

Ko + Google Runでやってみる。

Dockerイメージを保存しておく場所が必要になるらしい。
Google Container Registry, GitHub Container Regsitryなどあるみたいだが、今回はArtifact Registryでやってみる。0.5GB/月が無料なので十分かと。あんまり検討してない。

Artifact Registry

新しくProjectを作成して、APIを有効化、koの名前でリポジトリ作成。
ブラウザからぽちぽちやったらできた。
Artifact Registry

Artifact Registry  |  Google Cloud

CLIでもできるみたい。

GCPのArtifact Registryにコンテナイメージを保存する|GCP|開発ブログ|株式会社Nextat(ネクスタット)

gcloudコマンドでconfigurationを作成、更新、変更する - Qiita

Ko

インストールとビルド。
koでArtifact Registry にimageをbuild & pushし、Secret Manager を使って楽にCloud Runに環境変数展開した話

環境変数とか2行程度の設定→ko buildでイメージがPushされた。すごい。

Google Run

これもブラウザぽちぽちで簡単にできた。 デフォルト設定で作成。
徹底解説!Cloud Run サービス作成(コンソール画面)

環境変数はSecret Managerたるもので管理したほうがいいらしい。
また少額だが金がかかる…がまあそんなでもないので。API有効化。

で、やっていくと以下応答が返ってきた。

{"message":"no matching operation was found"}

どうやら、oapi-codegenyamlでserversを設定していたのが原因っぽい。
設定削除したらCloud Runから応答返ってきた。いえーい。ただそれでいいのか不明。

それとPORTを環境変数から持ってくるのがいいらしい。
ローカルで作ったDockerコンテナをCloud Run で公開するまで - Qiita

CD

ここまで手動でArtifact RegistryからイメージをCloud Runに紐付けていたけど、CD設定したいと思った。
そこでCloud Buildが必要になるっぽい。
ならもうCloud FunctionでいいしKoいらんやん…手早く動作確認したい場合にいいってことですね。
ちなみにGithubにpushされた時、自動でKoでビルドしてArtifact Registryにコンテナイメージをpushもできるみたい。
結局Cloud Buildが一日120ビルドまで無料らしいので、CDにはそっちを使うことに。
ブラウザぽちぽちで簡単にGithubと紐付けられた。

その他参考文献

Cloud Functionsを徹底解説!(基本編) - G-gen Tech Blog
これから始める Cloud Functions 入門 | google-cloud-jp
Cloud Loggingログバケットの課金が始まります(2023年3月1日から) - G-gen Tech Blog

koでCloud Runへのデプロイまでを試してみた感想 - VideoMarketクリエイターズブログ

2022-10 の Cloud Storage 料金改定に伴い GCR から Artifact Registry へ移行する - ぽ靴な缶

GitHub - ko-build/setup-ko

GCPのArtifact Registryにコンテナイメージを保存する|GCP|開発ブログ|株式会社Nextat(ネクスタット)

koで高速にGoのimage build - Devlog by Reazon Holdings

Cloud Run を徹底解説! - G-gen Tech Blog

なぜ今も Google App Engine を選ぶのか - ぽ靴な缶

Google のメッセージングサービス Cloud Pub/Sub とは?特徴やユースケース、料金体系まで徹底解説! | 株式会社トップゲート

Cloud Build の料金  |  Cloud Build のドキュメント  |  Google Cloud