はじめに
こんにちは。inductorです。
GCPのCloud Runはご存知でしょうか。世界一簡単に単一のコンテナをデプロイできるサービスだと私は考えています。
さて、以下のようなリリースノートの通知があって、Cloud RunがGitと連携して更新まで自動でできるようになったみたいです。
Continuous deployment from Git using Cloud Build
まとめるとこんな感じのことが書いてあります
Cloud Buildのトリガーを使用して新しいコミットがGitリポジトリの特定のブランチにプッシュされるたびにコードを自動的にビルドしてデプロイすることで、ビルドとCloud Runへのデプロイを自動化できます。
Cloud Buildトリガーを使用してコンテナをビルドすると、Cloud Runにデプロイした後、ソースリポジトリ情報がサービスのCloud Consoleに表示されます。
やってみる
試しに以下のリポジトリを使います。内容としてはシンプルでNuxtで生成されたページが表示されるWebサーバーを提供するだけのコンテナ。
https://console.cloud.google.com/run にアクセスしてからサービスを作成し、適当な名前をつけたら「次へ」。
すると、以下のようにソースリポジトリを選ぶという選択肢が増えているので選択肢、Cloud Buildの設定へ。
今度はCloud Source RepositoriesのAPIを有効化するように言われるので有効化して、そのあとGitHubの認証をとおします。
認証が通るとリポジトリが選べるようになるので、選んで次へ。
今度はブランチとDockerfileの場所を聞かれるので、今回はmaster、Dockerfileとそのまま選ぶだけにしました。
全部設定が終わるとサービスが作られ、最初はプレースホルダーとしてCloud RunのHello Worldが立ち上がりました。多分コンテナのビルドを待ってくれてる間のプレースホルダーですね。
所定のURLにアクセスしてみるとHello Worldがでてきました。
しばらく放置しててもなんも起こらないなと思ってましたが、よく考えたら「新しいコミットがGitリポジトリの特定のブランチにプッシュされるたびにコードを自動的にビルドしてデプロイ」とあったので、実際にこのイベントをトリガーさせないと動かないのか。と思い、Git pushを走らせてみることにしました。
Git pushすると、Cloud Runの画面で以下のようにイベントが動き始めました。
Cloud Buildの画面を見ると、ビルドが走っています。
ついでにトリガーの画面を見るとソースに所定のリポジトリが増えているのも確認。
しばらくするとCloud Runに新しいRevisionが作成されたのを確認。
ここまで来るともうCloud Runで勝手にロードバランスして切り替えてくれる・・・と思いきや、いつまで立ってもサービスが立ち上がってきません。最終的にはエラーになってしまいました。
これの原因は簡単で、コンテナ側のポートと、Cloud Runで期待したポートが違っていたからでした。ここは自分で編集して再デプロイしたらすんなり行きました。
所感
Cloud Buildのトリガーとパイプラインも勝手に作ってくれるのでめっちゃ便利ですね!!
ただ、コンテナポートのところは普通にハマりどころになると思うので(前にハマったことがあってすぐ気づいた)、ここは導線をしっかりしてほしいかな、とは思いました。
まだ出たばかりの機能なのでパイプラインの細かいところやネットワーク周りのこういうつまづきはユーザーから出てくるかと思いますが、PaaSみが増してきたので期待して改善を待とうと思います。