フューチャー技術ブログ

Let's Try GCP #1 ~Cloud Run Buttonを使った楽々コンテナデプロイをやってみた~

はじめに

こんにちは、TIG(Technology Innovation Group)/DXユニット 1所属の村田です。

昨今よく耳にする「クラウド」「サーバレス」といった単語に関連して、各クラウドベンダーからは日々様々なサービスがリリースされていますが、それらを素早くキャッチアップしつつ上手に活用していくというのは少々大変と思う方が多いと思います。

この記事はそういった方向けに、”素早くサービスの使い所を把握してもらう”ことや”新しいサービスをさっと試す手助けをする”ことを目的にした記事の第一弾です。そのため今までのFutureのTechBlogは業務で得た知見をまとめた記事が多めですが、本記事はもっと気軽にクラウドに慣れ親しんでもらうためのコンテンツを中心に作成していく予定です。

Cloud Runとは?

Cloud RunはGCPが提供するサービスのひとつで、コンテナベースのサーバレスアプリケーションアーキテクチャを実現してくれます(注:2019年9月7日時点、Betaです)

Run stateless containers on a fully managed environment or in your own GKE cluster.

https://cloud.google.com/run/

上記は公式ページからの引用ですが、Cloud Runは完全なマネージド環境あるいは自前のGKE上にコンテナアプリケーションをデプロイできます。

既存のAppEngineやCloud Functionのようにコードベースのサーバレスアーキテクチャではなく、コンテナベースのサーバレスアーキテクチャであるという点が、新しく・面白いと感じられますね! これからはコンテナベースもどんどん増えてくるはずですし、コードベースに取り組んでいた方も新たな移行先としてこのCloud Runを検討候補にあげてみてはいかがでしょうか。

Cloud Runについては先日のGoogle Cloud Nextでもたくさんの話が出ていました。興味ある方はぜひGoogle Cloud Nextへの参加レポート記事をご覧ください。

Try Cloud Run with Cloud Run Button

では本題である「Cloud Run Buttonを使ったコンテナデプロイ」にチャレンジしていきましょう!

Cloud Run Buttonとは?

Today, we are introducing the Cloud Run Button, an image and link you can add to the README of your source code repositories to allow others to deploy your application to Google Cloud Platform using Cloud Run.

これは先日8月22日に公開されたGCPのProduct Newsからの引用ですが、Cloud Run Buttonというサービスが発表されました。

私は普段Cloud Runを使っていますが、Google Container Registryにimageをpushして、それをDeployして…って何回もやってるとやはり面倒になってきます。「CI/CDを組む」というのが正攻法だとは思いますが、そこまで手間をかけたくないケースもあると思います。

Cloud Run Buttonを利用すると、ソースコードリポジトリのREADMEに記載しておくことでボタンひとつでCloud Runへアプリケーションをデプロイできます。新しいクラウドサービスをさくっと試したいときの障害のひとつはデプロイ手順を整備することだと思いますが、Cloud Run Buttonは手順をボタン1つに集約できるため、非常に活躍してくれそうです。

実際にやってみた

Cloud Run ButtonのGitHubページにサンプルアプリケーションをデプロイできるCloud Run Buttonが配置されているので早速デプロイを行ってみましょう。

この青いボタンが例のボタンです。

下記の記述をREADMEに追記してあげるだけでボタンが表示されます。<YOUR_HTTP_GIT_URL>の部分を自分のGitRepository URLに変更するだけです。

[<img src="https://console.cloud.google.com/cloudshell/editor?shellonly=true&cloudshell_image=gcr.io/cloudrun/button&cloudshell_git_repo=<YOUR_HTTP_GIT_URL>" alt="Run on Google Cloud](https://storage.googleapis.com/cloudrun/button.svg)" loading="lazy">

ちなみにRun on Google Cloudという文字はすでに画像ファイルとして用意されているので、文言等変えたい場合には自分で別途作成して上げる必要があります。

基本的にはrepositoryのrootディレクトリに存在するDockerfileを検知してdocker buildが実行されますが、無い場合にはCNCF Buildpacksが利用されます。

もしサブディレクトリ内でビルドを実施して欲しい場合には、cloudshell_working_dir=<SUBDIR>のクエリパラメータを追加してあげましょう。

また、master以外の特定ブランチのアプリケーションをデプロイしたい場合にはcloudshell_git_branch=<BRANCH_NAME>を追加してあげると任意のブランチからデプロイすることが可能です。

他にもapp.jsonを記載することでより詳細なカスタマイズも可能になっているので気になった方はREADMEの”Customizing deployment parameters”パートを参照してみてください!

さて、ではついにボタンを押してみましょう。

Cloud Shellの起動を確認するダイアログが出てくるので続行を押して次へ…

cloudshell_git_repoにて指定されてたrepositoryをcloneして、デプロイ対象のプロジェクトがリストで表示されます。すでにGoogleアカウントにログインしていれば、そのアカウントに紐づくプロジェクトが表示されます。

さてプロジェクト選びが完了すると、次はリージョンの選択です。デフォルトだとカーソルはus-central1に合わさっていますが、ついに東京リージョンでも利用可能になったので、せっかくですしasia-northeast1を選択してみることにしましょう。

コンテナのビルドが始まりました! …ワクワク

ビルドが完了すると自動的にGCRへのイメージのpushも行ってくれます。そしてGCRのイメージをもとにCloud Runのデプロイがスタートします。こういったところを自動でやってくれるのがありがたいですね。

そして待つこと少々…ついにアプリケーションがデプロイされました。早速コンソールからデプロイされたアプリを確認してみましょう。

いました。cloud-run-helloというアプリケーションが無事にデプロイされています!

詳細画面も覗いてみましょう。デプロイされたアプリケーションにアクセスしてみると…

上記のような画面が表示されます。「動いてますよ!」とのことです。ホッとしました。

というわけでCloud Run Buttonを利用したコンテナデプロイはこれにて完了です。

やってみての所感

まず、とても簡単でした!

ボタンを押すとCloud Shellが立ち上がり、デプロイ先のプロジェクトとリージョンを選択するだけで簡単にデプロイできてしまうのは非常にスムーズでストレスが無いなと感じました。

ちなみに筆者は、最初試した時clone待ちの時間でEnter連打しすぎてこのプロジェクト選択の場面で一番上のプロジェクトを秒で選択することになってしまいました。正しいデプロイ先を選ぶには落ち着きが大切です(笑)

軽く前述しましたが、このCloud Run Buttonの良いところはdocker build docker push gcloud run deployなどのコマンドをすべて隠蔽化して一気に実行してくれる点にあると思います。「さっと何度もデプロイしたい、でもCI/CD作り込むのはちょっと…」といったシチュエーションにこれ程までに適したソリューションは無いんじゃないかと思うくらいの使い勝手でした。

そしてもう一点の良さは「READMEに埋め込めること」ではないでしょうか。

GitHubなどに公開しているアプリケーションを世間のユーザに利用してもらう際には、READMEにデプロイコマンドを記載してユーザ側にその実行を委ねていたかと思います。しかし、Cloud Run Buttonを埋め込んでおくだけで、ユーザ側に求めるのはデプロイ先のプロジェクトとリージョンの選択だけになります。もちろんユーザがGCPプロジェクトを保有していることが前提になりますが、ユーザ側にとっても利用までの敷居がより一層低くなるはずです。

とても簡単なのでぜひ一度試してみてください。皆さんのコンテナライフがより一層豊かなものになりますように。

おわりに

Let’s Try GCPの第一弾、いかがだったでしょうか。定期的な更新を世の中にコミットするためにあえて「#1」という連番をタイトルに含めております。

読んで頂きありがとうございました! 良かったなと思ってくださった方はぜひTwitterやFacebookでのシェアもよろしくお願いします!

続編もご期待ください!


  1. 1.DXユニットとはデジタルトランスフォーメーションに関わる仕事を主に推進していくチームです。