コンテンツに移動
アプリケーション開発

サーバーレス負荷分散向けの新しい Terraform モジュール

2020年12月11日
https://storage.googleapis.com/gweb-cloudblog-publish/images/gcp_networking.max-2600x2600.jpg
Google Cloud Japan Team

※この投稿は米国時間 2020 年 12 月 4 日に、Google Cloud blog に投稿されたものの抄訳です。

本日は、サーバーレス アプリケーション用に最適化されたロードバランサをプロビジョニングするための新しい Terraform モジュールのリリースについてお知らせいたします。この Terraform モジュールを使用すると、Terraform で基盤となる多くのネットワーク リソースを自分で構成せずに、1 つのモジュールで負荷分散タスクを完了できます。

以前の記事では、Terraform を使用してサーバーレス アプリケーション用の Cloud HTTPS ロードバランサをゼロから構築する方法を紹介しました。この方法は面倒で、多くのネットワーク API を把握して関連付ける必要がありました。新しい Terraform モジュールは、ロードバランサの構築の詳細を抽象化し、操作する 1 つの Terraform リソースを提供することで、この問題を解決します。

自動 TLS 証明書を備えた Cloud ロードバランサの背後にサーバーレス アプリケーション(Cloud Run、App Engine、Cloud Functions)を簡単に配置できるようになり、数行のコードを構成するだけで Cloud CDN、Cloud IAP、カスタム証明書などの機能を設定できます。

簡単な例

わかりやすく説明するために、Cloud Run アプリケーション向けのサーバーレス ネットワーク エンドポイント グループ(NEG)を使用しているとしましょう。新しい Terraform モジュールを使用して、このアプリケーションのグローバル HTTPS ロードバランサをカスタム ドメインでプロビジョニングすると、次のようになります。
読み込んでいます...

上述のコード スニペットからわかるように、マネージド TLS 証明書の設定、独自の TLS 証明書のデプロイ、CDN の有効化、Identity-Aware Proxy や Cloud Armor のセキュリティ ポリシーの定義は、数行のコードを構成するだけで済みます。

Terraform のメリットを活かす

新しい Terraform モジュールでは、HCL 構文と Terraform 機能を活用してデプロイの自動化をレベルアップできます。

たとえば、グローバル ロードバランサを使用する一般的なユースケースとして、複数のリージョンからのトラフィック処理があります。ただし、20 以上のリージョンへのアプリのデプロイを自動化し、ロードバランサの構成を最新の状態に保つには、bash スクリプトを数行記述するだけでは済まない場合があります。ここで Terraform の出番です。

次の例では、利用可能なすべてのリージョンに Cloud Run アプリをデプロイし、グローバル ロードバランサの背後に追加します。これを行うには、regions という名前の変数を作成してデプロイ先ロケーションのリストを保持します。

次に、for_each 構文を使用して、Cloud Run サービス(およびそのネットワーク エンドポイント グループ)を作成します。

読み込んでいます...

次に、単純な for ループ構文を使用してすべてのネットワーク エンドポイント グループを追加します。

読み込んでいます...

この手法を実装すれば、Terraform 構成に簡単な変更を数行加えて、20 以上のリージョン向けに 60 以上の API リソースを作成できます。そうしない場合は、bash スクリプトを大量に記述する必要があります。

この例の完全な実装にご興味がありましたら、Terraform を使用した Cloud Run マルチリージョン デプロイメントのリポジトリを覧ください。

まとめ

サーバーレス ネットワーク エンドポイント グループのリリースにより、Google Cloud 上のサーバーレス アプリケーションの前面に HTTP または HTTPS ロードバランサを作成できます。また、新しい Terraform モジュールにより、こうした操作がさらに簡単になります。

ご利用を開始するには、モジュールの GitHub リポジトリモジュール レジストリで詳細な最新のドキュメントをご確認ください。また、モジュールの Cloud Run の例もご覧ください。皆様からのフィードバックをお待ちしております。GitHub リポジトリで問題を見つけたらご報告ください。

-シニア デベロッパー アドボケイト Ahmet Alp Balkan

投稿先