はじめに
こんにちは、Datadog Japan で Sales Engineer をしている AoTo です。
Google Cloud Next ’24 in Las Vegas のセッション『Cloud Run: What's new』内容をもとに、個人的に推している Cloud Run の最新アップデートを解説していきます。
当セッションでは、主に「Simplifying App Development」と「Enterprise Ready」というトピックで以下の新機能が紹介されていました。最後に DZ Bank の事例についても触れられていましたが、本投稿では割愛します。
- Volume Mounts
- Automatic Security Updates
- Deterministic URL
- Gemini in Cloud Run Recommendations
- Multi-region services
- New integrations(Cloud SQL, Firestore, Vertex AI)
- Application canvas
- Direct VPC Egress
- Cloud Service Mesh with Cloud Run
Simplifying App Development
このセクションでは、Google Cloud の Product Manager である Justin Mahood 氏から、「How we continue to help simply application development」というキーワードとともに複数の新機能が紹介されました。
Volume Mounts
本機能は既に2024年1月に発表されており、発表時点では Preview ステータスです。
概要
Cloud Run services, jobs の両方で、Cloud Storage FUSE, NFS のボリュームにマウントできるようになりました。NFS は Google Cloud のマネージド NFS である Filestore をはじめ、任意の NFS アプライアンスを利用できます。これらのボリュームマウントを利用するために、コンテナイメージやランタイムに変更を加える必要はありません。
gcloud beta run services update <SERVICE_NAME> \
--add-volume name=<VOLUME_NAME>,type=[cloud-storage|nfs], [bucket=BUCKET_NAME|location=IP_ADDRESS:NFS_PATH] \
--add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH
解説
Cloud Run では昨年まで共有ボリュームを利用することができず、主にステートレスなワークロードに向いているとされていました。
昨年のマルチコンテナ対応と同時に、インメモリボリュームの対応がされましたが、依然としてデータの永続化(大容量のデータを扱う場合やデータの信頼性が求められる場合)はファイル共有などを実装することが求められていました。
このアップデートによって、マルチコンテナ間でのデータの共有やステートフルなワークロードの実行が容易になり、より広いユースケースに対して Cloud Run の採用を検討することができるようになりました。
Automatic Security Updates
本機能は発表時点では Private Preview で、近日 Public Preview と言及されました。
概要
Cloud Run 自体はフルマネージドなコンテナサービス(Container as a Service, CaaS)ですが、2021年8月よりアプリケーションのソースコードによるデプロイに対応しています。
ソースコードデプロイを行うと、ユーザーが意識しないバックグラウンドで Buildpack と Cloud Build が使用され、ソースコードからコンテナイメージを自動的にビルドします。
Dockerfile を作成する際に、Buildpack の汎用ビルダーは自動的にアプリケーション言語に応じたベースイメージを選択します。 これの代わりに--base-image
で明示的に Google が提供するベースイメージを指定することで、ベースイメージが更新された際にダウンタイム・リビルトなしでベースイメージをアップデートされます。
App Engine や Cloud Functions で培われてきた経験をもとに、Google Cloud は48時間を目標としてセキュリティインシデントや CVE に対処しするためにベースイメージを更新しその変更を Cloud Run に適用します。
gcloud run deploy <SERVICE_NAME> \
--source \
--base-image=<REGISTORY_PATH>
解説
前述の通り、ソースコードデプロイにより開発者が管理する範囲をアプリケーションに限定することができます。一方でベースイメージの脆弱性に対応するためには、継続的なデプロイやアップデートにより常に最新のベースイメージを適用する必要がありました。
そのため、本機能は特にアプリケーション開発者が OS レベルの脆弱性にいち早く対処するために有効な機能となります。アプリケーションレベルの脆弱性は開発者の管理責任範囲としながらも、OS レベルの脆弱性は信頼性のある Google Cloud のベースイメージを利用し管理責任を Google Cloud に任せて運用することができます。
Deterministic URL
本機能は発表時点では Private Preview です。
概要
サービスが Cloud Run のデプロイされると、デフォルトで各サービスには一意で永続的な URL が発行されます。この URL はドキュメントに詳細の記載はありませんが、実際に試してみるとhttp://<SERVICE_NAME>-[a-zA-Z0-9]{10}-<INITIAL_OF_REGION>.a.run.app
12 という推測が難しい形式で提供されます。
このアップデートにより、開発者は発行される URL を推測可能になります。この推測可能な URL は https://<SERVICE_NAME>-<PROJECT_NUMBER>-<REGION>.run.app
という形式で、デプロイ前から推測が容易となりあらかじめ URL を用いたサービスの連携等に利用できます。
さらに、デプロイ時に --no-default-url
を利用することで、これらの URL 自体を無効化することも可能です。
gcloud run deploy <SERVICE_NAME> --no-default-url
解説
Cloud Run でサービスを作成すると、前述の *.run.app
ドメインが必ず払い出されます。前述の通り、この URL を利用するためにはサービスのデプロイ前に推測をすることが難しく、ドメインの発行を待つ必要がありました。
さらに、推測可能な URL が利用できるようになった場合も、Cloud Run へのアクセスを制限・限定したい場合に内向きのネットワークアクセスの制限が必要となります。
外部に公開されるリスクを減らすためにも、このエンドポイントを削除することで、Cloud Run を利用してよりプライベートなサービスをデプロイすることができます。さらには、Cloud Load Balancing を利用して後述のマルチリージョンデプロイを行いカスタムエンドポイントが単一のアクセスポイントとなるように構成することも可能です。
Gemini in Cloud Run Recommendations
本機能は発表時点では Private Preview です。
概要
Gemini Cloud Assist が Cloud Run にも対応し、稼働中の Cloud Run に対する推奨事項や最も影響のある内容を要約して表示できます。
上記画像の通り、推奨事項はコンソールにバナーの形式で表示され、要約はチャットの形式で任意の内容に基づいて返答を得ていることがわかります。
解説
Gemini Cloud Assist は、Google Cloud Next ’24 開催前は「Gemini for Google Cloud」と呼ばれ、昨年の Goolge Cloud Next ’23 では「Duet AI for Google Cloud」として紹介された、Google Cloud Consle 上で利用できる大規模言語モデル(LLM, Large Language Model)をもとにしたマルチアシスタント AI 機能です。
Google Cloud Next ’23 の時点では、このマルチアシスタント AI (Duet AI) によるチャットは一般的な Google Cloud ドキュメントや情報ソースに基づく回答しか行えず、操作環境上の情報は考慮されませんでした。
今回の Gemini Cloud Assist へのアップデートにより、操作環境の情報を踏まえた返答を行えるようになり、Cloud Run のような特定のサービスでは推奨事項を表示するようになります。
Multi-region services
本機能は発表時点では Private Preview です。
概要
gcloud
コマンドでのデプロイ時に指定する --region
に複数のリージョンを指定し、同一のコンテナサービスを同時にデプロイできるようになりました。これに加えて、--domain
でカスタムドメインを指定することで、 カスタムドメインのマッピングを行いマルチリージョンでの負荷分散が行えます。
Cloud Run と Cloud Load Balancing の統合は既に Public Preview で公開されており、Cloud Run services のデプロイ後に Global External Application Load Balancer を紐づけることができます。
gcloud beta run integrations create \
--type=custom-domains \
--parameters='set-mapping=<DOMAIN:SERVICE>' \
gcloud run deploy <SERVICE_NAME> \
--region=><REGION1>,<REGION2>,<REGION3> \
--domain=<CUSTOM_DOMAIN>
解説
Cloud Run service をカスタムドメインを用いて公開する方法は前述の Global External Application Load Balancer の使用・Firebase Hosting の使用など複数ありましたが、今回の発表によりより簡単にデプロイ時からカスタムドメインのマッピングができるようになりました。
特に、リージョナルサービスである Cloud Run をエンタープライズやグローバルの水準で利用するために、地理的に分散した Google Cloud のデータセンターの間で最適なトラフィック誘導をする GSLB(Global Server Load Balancing, 広域負荷分散)が単一のコマンドで実現できるのが大きなポイントです。
New integrations(Cloud SQL, Firestore, Vertex AI)
本機能は発表時点では Private Preview です。
概要
Google Cloud コンソールや CLI を用いて、簡単な操作で、Google Cloud プロダクトと Cloud Run を連携できる機能である Cloud Run integration に新たに Cloud SQL, Firestore, Vertex AI が加わりました。
解説
2022年の10月から、Cloud Run integration は前述の Global External Load Balancer との統合をはじめとして機能が提供されてきました。
後述する Application canvas の発表に伴い、新たに3つのサービスとの統合ができるようになりました。
Application canvas
本機能は発表時点では Private Preview です。
概要
Google Cloud コンソールの Cloud Run ページ から、自然言語を用いて Cloud Run をコンピューティングとして利用するサービスのアーキテクチャを構成しデプロイを管理できるようになりました。
作成したアプリケーションの構成は Gemini を利用して自然言語で編集でき、Cloud Run integration で連携可能な Google Cloud サービスを用いた構成を数回のクリックでデプロイできます。
解説
Gemini Cloud Assist や Cloud Run integration の恩恵を受けて、Cloud Run を用いてアプリケーション稼働環境の構成と簡単なデプロイができるようになります。これにより、複雑なスケーリングやパフォーマンス要件がない MVP(Minimum Viable Product) のデプロイや可搬性の高いコンテナアプリケーションの Google Cloud への移行がより簡単に実現できます。
Gemini Cloud Assist の発表に併せて、Application Canvas が Cloud Run 特有の機能として発表され、これにより Cloud Run の利用・ユースケースの拡大が予想されます。これは、昨年の Duet AI for Google Cloud の発表時に期待された、アシスタント AI を用いたサービスの設計やデプロイを実現した形での発表となり、今回の Google Cloud Next ’24 全体でも注目度が高い機能でした。
Enterprise Ready
このセクションでは Google Cloud の Engineering Manager である Sridhar Venkatakrishnan 氏から、「Why Cloud Run is such an amazing fit for the Enterprise」というキーワードのもと、大企業に求められるセキュリティ・信頼性に対応する機能について説明がありました。
Direct VPC Egress
概要
VPC 外で稼働するマネージドサービスである Cloud Run がサーバーレス VPC アクセス コネクタを使用せずに GKE, GCE などの VPC 内のコンピューティングサービスにトラフィックを送信できる機能です。
gcloud beta run deploy <SERVICE_NAME> \
--image=<IMAGE_URL> \
--network=<NETWORK> \
--subnet=<SUBNET> \
--network-tags=<NETWORK_TAG_NAMES> \
--vpc-egress=<EGRESS_SETTING> \
--region=<REGION>
解説
従来、Cloud Run と VPC 内のサービスが直接疎通を行うためには、サーバレス VPC アクセスが利用されてきました。これは、指定された VPC 内にサーバレス VPC アクセスコネクタを作成し、インターネットに公開せずに低レイテンシーでの通信を実現できます。Cloud Run の他に App Engine, Cloud Functions などのサーバレス環境に対応しています。
このコネクタはコネクタインスタンスとして VPC 内に作成され、トラフィックの増加に合わせて自動的にスケールアウトしますが、スケールインしないため、必要以上のコネクタが作成されないように事前に設定を行う必要がありました。
サーバーレス VPC アクセスは、トラフィックが増加すると、コネクタ内のインスタンス数を自動的にスケールアウトします。追加されるインスタンスは、コネクタに指定したタイプのインスタンスです。コネクタでマシンタイプを混在させることはできません。コネクタはスケールインしません。コネクタが必要以上にスケールアウトしないようにするには、インスタンスの最大数に小さい値を設定します。コネクタがスケールアウトし、インスタンス数を減らしたい場合は、目的のインスタンス数でコネクタを再作成します。
この仕様は、Cloud Run と VPC 内のサービスを接続する必要がある利用者にとって、膨大な課金を許容するかスループットの制限を許容するかなどのトレードオフを迫るものとなっていました。
Direct VPC Egress により、このコネクタの制限を考慮することなく自動的にスケールアップ・スケールダウンする VPC との接続環境を Cloud Run に提供できます。今回の発表で、Preview ステータスであったこの機能が GA され、商用環境でも安心して利用することができるようになりました。
Cloud Service Mesh with Cloud Run
本機能は発表時点では Private Preview です。
概要
Cloud Service Mesh は Anthos Service Mesh と Traffic Director の後継として発表された新機能です。
従来のこれらの機能は、主に GKE, GCE 上のサービス間の通信をルーティング・プロキシ・負荷分散・トラフィック管理を行うサービスとして提供されていました。Cloud Service Mesh の発表に併せて Cloud Run でもこれらの恩恵を受けられるようになりました。
これに加えて新たな機能が追加されていますが、詳細は以下の記事をご参照ください。
解説
分散された複数のアプリケーションから構成されるサービスにおいて、トラフィック管理をはじめ認証・認可や通信の暗号化などを実現するソリューションとしてサービスメッシュがあります。
従来は Istio, Envoy などのオープンソースベースのソリューションを利用することが主流であり、Google Cloud でも Istio の機能は Anthos Service Mesh でマネージドサービスとして提供され、 Traffic Director は Envoy も利用できるマネージドサービスとして提供されていました。
しかし、これらのサービスを利用する上での技術選定が難しく Istio や Envoy の基礎知識が必要となることや Cloud Run を含むサービスメッシュを構成できないことが課題として考えられていました。今回の Cloud Service Mesh の発表により、これらの課題が(全てではないですが)解消され、サービスメッシュのコントロールプレーンの管理を Google Cloud に委任した運用ができます。
これにより、より複雑な要件がある Cloud Run, GKE, GCE の環境でのトラフィックをを効率的に制御する選択肢として Cloud Service Mesh が活用されるようになると考えられます。
おわりに
この記事では、Google Cloud Next ’24 で発表された Cloud Run の新機能を、どのような機能かを【概要】でまとめ、従来との変化や影響・価値を【解説】でまとめました。
従来と比較して、よりシンプルにエンタープライズ準拠のサービスを提供できるサービスとして Cloud Run が進化していることを実感いただけたのではないでしょうか。
一部のサービスは発表後も Private Preview ステータスであり、GA(一般公開)される際には変更される可能性があります。
最新のアップデートを知りたい方は、Google Cloud 公式の Cloud Run リリースノートやドキュメントをご確認ください。