この記事は公開から1年以上経過しています。
Google Cloud PlatformのAPI Gatewayの規定ドメイン名*.gateway.dev
ではなく、独自のドメインを設定して運用する方法についての備忘録。
API Gatewayがベータ版機能のためかGCPのWEB管理画面からは設定できず、公式ドキュメントの手順もgcloud compute backend-services add-backend
がエラーとなってしまう罠にハマりました…。
手順
-
インターネットNEGを作成し
--network-endpoint-type
をinternet-fqdn-port
(外部バックエンドに到達可能なホスト名とポート)に設定する。gcloud compute network-endpoint-groups create EXAMPLE_FQDN_NEG \ --network-endpoint-type="internet-fqdn-port" \ --global
EXAMPLE_FQDN_NEG
=インターネットNEG名 -
エンドポイントを NEG に追加する。
gcloud compute network-endpoint-groups update EXAMPLE_FQDN_NEG \ --add-endpoint="fqdn=example.gateway.dev,port=443" \ --global
example.gateway.dev
=API GatewayのURL -
NEGの新しいバックエンドサービスを作成。
gcloud compute backend-services create EXAMPLE_BACKEND_SERVICE \ --global --protocol=HTTP2
EXAMPLE_BACKEND_SERVICE
=バックエンドサービス名 -
バックエンドサービスを構成してカスタムリクエストヘッダー
Host: backend.example.com
をリクエストに追加。gcloud compute backend-services update EXAMPLE_BACKEND_SERVICE \ --custom-request-header "Host: example.gateway.dev" \ --global
EXAMPLE_BACKEND_SERVICE
=バックエンドサービス名
example.gateway.dev
=API GatewayのURL -
インターネットNEGをバックエンドサービスに追加。
gcloud compute backend-services add-backend EXAMPLE_BACKEND_SERVICE \ --network-endpoint-group "EXAMPLE_FQDN_NEG" \ --global-network-endpoint-group \ --global
EXAMPLE_BACKEND_SERVICE
=バックエンドサービス名
EXAMPLE_FQDN_NEG
=インターネットNEG名 -
バックエンドサービスをロードバランサのURLマップに接続しバックエンドにリクエストを転送。
gcloud compute url-maps create EXAMPLE_URL_MAP \ --default-service EXAMPLE_BACKEND_SERVICE \ --global
EXAMPLE_BACKEND_SERVICE
=バックエンドサービス名
EXAMPLE_URL_MAP
=URLマップ名 -
マネージドSSL証明書を作成。
gcloud beta compute ssl-certificates create EXAMPLE_SSL_CERT \ --domains example.com
EXAMPLE_SSL_CERT
=マネージド証明書名
example.com
=マネージド証明書を作成するドメイン名 -
HTTPSリクエストをURLマップに転送するターゲットHTTPSプロキシを作成。
gcloud compute target-https-proxies create EXAMPLE_HTTPS_PROXY \ --url-map=EXAMPLE_URL_MAP \ --ssl-certificates=EXAMPLE_SSL_CERT \ --global
EXAMPLE_HTTPS_PROXY
=HTTPSプロキシ名 -
外部静的グローバルIPアドレスを作成。
gcloud compute addresses create EXAMPLE_GLOBAL_IP \ --global
EXAMPLE_GLOBAL_IP
=GCPの外部静的グローバルIPアドレス名 -
HTTPSの受信リクエストをプロキシに転送するグローバル転送ルールを作成。
gcloud compute forwarding-rules create EXAMPLE_FORWARDING_RULE \ --ip-protocol=TCP \ --ports=443 \ --address=EXAMPLE_GLOBAL_IP \ --global \ --target-https-proxy=EXAMPLE_HTTPS_PROXY
EXAMPLE_FORWARDING_RULE
=転送ルール名
EXAMPLE_GLOBAL_IP
=GCPの外部静的グローバルIPアドレス名
EXAMPLE_HTTPS_PROXY
=HTTPSプロキシ名 -
独自ドメインを管理しているDNSサーバーのAレコードにGCPの外部静的グローバルIPアドレスを登録。
ここまでの設定が完了すると、独自ドメインを使ってAPI Gatewayにアクセスできるようになっていると思います。
セキュリティなどの設定は適宜行ってください。
ちなみに参考ウェブサイトのIssue Trackerにあるとおり、ロードバランサはIPアドレスを固定にしてもGCEインスタンスのようにIP逆引き設定を行うことはできないようで、逆引きホスト名がxx.xx.xx.xx.googleusercontent.com
になってしまうようです。
参考ウェブサイトなど
-
Medium
Ganesh, Mohan/Google API Gateway, Load Balancer and Content Delivery Network -
Google Cloud
API ゲートウェイ/API ゲートウェイの HTTP(S) 負荷分散スタートガイド -
Google Cloud
Cloud CDN/NEG とインターネット エンドポイントを作成する -
Google Cloud
Cloud Load Balancing/ロードバランサを設定する -
Google Issue Tracker
Cloud Platform/Networking/Cloud Load Balancing/Reverse DNS entries for the public IP addresses
以上です。