LoginSignup
14
3

More than 3 years have passed since last update.

サーバレスNEG でCloud Run にCloud CDN やCloud Armor を有効にしてみる

Last updated at Posted at 2020-12-13

こんにちは、オールアバウト SRE所属の @h_amakasu です。
この記事は、All About Group(株式会社オールアバウト) Advent Calendar 2020 14日目の記事です。

本稿の概要

今年の夏にロードバランサーの新機能として「サーバレス ネットワーク エンドポイント グループ」(以下サーバレスNEG)が追加されました。
これにより、GCP ロードバランサーのバックエンドにサーバレスサービス(Cloud Run やCloud Function など)を設定できるようになり、従来ではできなかったCloud Run やCloud Function へのCloud CDN やCloud Armor が使えるようになりました。

本稿では、サーバレスNEG にCloud Run を設定したロードバランサー構成の構築手順をまとめてみました。

構築手順

Cloud Run への検証用サービスのデプロイ

今回はバックエンドサービスにCloud Run を用いるので、検証用のサービスをデプロイします。

$ cat << EOF > Dockerfile
FROM centos:7
RUN set -x \
    && yum -y update \
    && yum -y install httpd
EXPOSE 80
CMD ["/usr/sbin/httpd", "-DFOREGROUND"]
EOF
$ docker build -t example -f Dockerfile .
$ docker tag example asia.gcr.io/gcp_project/example-httpd:latest
$ docher push asia.gcr.io/gcp_project/example:latest
$ gcloud beta run deploy example \
  --image asia.gcr.io/gcp_project/example:latest \
  --platform=managed \
  --region=asia-northeast1 \
  --allow-unauthenticated \
  --port=80

ロードバランサの作成

GCP 管理画面から「ネットワーク サービス」 > 「負荷分散」とジャンプし、「ロードバランサを作成」を選択します。

image.png

バックエンドの作成

「バックエンドの構成」を選択し、「バックエンドサービスとバックエンドバケット」から「バックエンド サービス」を作成します。

バックエンドタイプのプルダウンメニューを以下のように「サーバーレス ネットワーク エンドポイント グループ」に変更します。

image.png

新しいバックエンドで「サーバーレス ネットワーク エンドポイント グループの作成」を選択し、先ほどのCloud Run で構築したサービスと紐付けます。

ad_04.png

Cloud CDN やCloud Armor の設定

バックエンド サービスの編集では、主題でもあるCloud CDN やCloud Armor を設定することができます。
画像例ではCloud Armor を有効にしてみました。

image.png

フロントエンドの作成

最後に、フロントエンドを構成します。
(バックエンドの設定時にCloud CDNを有効にした場合は、HTTPSで受け付けられるようにする必要があります)

ad_05.png

これで「作成」を洗濯すれば構築完了です。
構築後のロードバランサーの詳細は以下のようになり、バックエンドがサーバレスNEGで、Cloud Armor が有効になっていることがわかります。

image.png

最後に黒塗り箇所のIPアドレスにアクセスして、期待した挙動をするか確認します。
許可されたアドレスからは以下のように正常に表示され、不許可のIPアドレスからは「403 Forbidden」となります。

image.png

まとめ

サーバレスNEG を使って、Cloud Run でもCloud CDN やCloud Armor が使えるようになりました。
以前弊社のテックブログでも公開したCloud RunからCloud SQLやMemorystoreへの繋ぎ方とくみあわせることで、使えるシーンはより広がったと思います。

ただ、この構成は1点課題があることもわかりました。
この構成、Cloud Run にロードバランサーを被せるような形になりますが、Cloud Run のサービスそのものに自動で割り当てられたURL へは直接参照できてしまう点です。この点、抜け穴になってしまうので、今後のアップデートに期待したいとことです。

参考資料

サーバーレス ネットワーク エンドポイント グループの概要

14
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
3