https://cloud.google.com/cdn/docs/setting-up-cdn-with-mig
https://www.topgate.co.jp/gcp30-cloud-cdn#cloud-loadbalancing-backend-service-cloud-cdn
Cloud CDN は、Google Cloud のグローバル外部 HTTP(S) ロードバランサを利用して、ルーティング、ヘルスチェック、エニーキャスト IP のサポートを提供します。
pip01 --> rule01 --> proxy01 --> map01 --> backend01 --> group01
-- 1. 前作業
gcloud init
gcloud auth list
gcloud --version
gcloud projects create project01-9999999 \
--name="project01"
gcloud config list
gcloud config set project project01-9999999
gcloud config set compute/region asia-northeast1 --quiet
gcloud config set compute/zone asia-northeast1-a --quiet
gcloud beta billing accounts list
gcloud beta billing projects link project01-9999999 --billing-account=111111-111111-111111
gcloud services enable compute.googleapis.com --project project01-9999999
-- 2. マネージド インスタンス グループ作成
gcloud compute instance-templates create template01 \
--region=asia-northeast1 \
--network=default \
--subnet=default \
--tags=tag01 \
--image-family=debian-10 \
--image-project=debian-cloud \
--machine-type e2-micro \
--metadata=startup-script='#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
sudo hostname > /var/www/html/index.html
sudo systemctl restart apache2'
gcloud compute instance-templates list
gcloud compute instance-templates describe template01
gcloud compute instance-groups managed create group01 \
--template=template01 \
--size=2 \
--zone=asia-northeast1-a
gcloud compute instance-groups list
gcloud compute instance-groups describe group01
-- 3. インスタンス グループに名前付きポートを追加
gcloud compute instance-groups set-named-ports group01 \
--named-ports http:80 \
--zone asia-northeast1-a
-- 4. ファイアウォール ルールを構成する
gcloud compute firewall-rules create fw01 \
--network=default \
--action=allow \
--direction=ingress \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--target-tags=tag01 \
--rules=tcp:80
gcloud compute firewall-rules list
-- 5. 外部 IP アドレスを予約する
gcloud compute addresses create pip01 \
--ip-version=IPV4 \
--network-tier=PREMIUM \
--global
gcloud compute addresses list
gcloud compute addresses describe pip01 \
--format="get(address)" \
--global
-- 6. ロードバランサを設定する
-- 6.1 ヘルスチェック作成
gcloud compute health-checks create http hc01 \
--port 80
gcloud compute health-checks list
-- 6.2 バックエンドサービス作成
gcloud compute backend-services create backend01 \
--load-balancing-scheme=EXTERNAL \
--protocol=HTTP \
--port-name=http \
--health-checks=hc01 \
--global
gcloud compute backend-services list
-- 6.3 バックエンド サービスにバックエンド(インスタンスグループ)を追加
gcloud compute backend-services add-backend backend01 \
--instance-group=group01 \
--instance-group-zone=asia-northeast1-a \
--global
gcloud compute backend-services describe backend01 \
--global
-- 6.4 HTTP 用に、受信リクエストをデフォルトのバックエンド サービスに転送するURL マップを作成
gcloud compute url-maps create map01 \
--default-service backend01
gcloud compute url-maps list
-- 7. HTTPフロントエンドの設定
-- 7.1 リクエストを URL マップに転送するターゲット HTTP プロキシを作成
gcloud compute target-http-proxies create proxy01 \
--url-map=map01
gcloud compute target-http-proxies list
-- 7.2 受信リクエストをプロキシに転送するグローバル転送ルールを作成
gcloud compute forwarding-rules create rule01 \
--load-balancing-scheme=EXTERNAL \
--address=pip01 \
--global \
--target-http-proxy=proxy01 \
--ports=80
gcloud compute forwarding-rules list
-- 8. Cloud CDN を有効にする
gcloud compute backend-services update backend01 \
--enable-cdn \
--cache-mode=FORCE_CACHE_ALL \
--global
gcloud compute backend-services describe backend01 \
--global
-- 9. 動作確認
gcloud compute addresses describe pip01 \
--format="get(address)" \
--global
while true;do curl http://192.0.2.1; sleep 1;done
5分程度待つ
time curl -v -X GET http://192.0.2.1
-- 10. Cloud CDN を無効にする
gcloud compute backend-services update backend01 \
--no-enable-cdn \
--global
gcloud compute backend-services describe backend01 \
--global
-- 11. コンテンツの無効化
gcloud compute url-maps invalidate-cdn-cache map01 \
--path "/*"
time curl -v -X GET http://192.0.2.1
-- 12. クリーンアップ
gcloud projects list
gcloud projects delete project01-9999999