GCPのAPI Gatewayに独自ドメインを設定する方法

この記事は公開から1年以上経過しています。

Google Cloud PlatformのAPI Gatewayの規定ドメイン名*.gateway.devではなく、独自のドメインを設定して運用する方法についての備忘録。

API Gatewayがベータ版機能のためかGCPのWEB管理画面からは設定できず、公式ドキュメントの手順もgcloud compute backend-services add-backendがエラーとなってしまう罠にハマりました…。


手順

  1. インターネットNEGを作成し--network-endpoint-typeinternet-fqdn-port(外部バックエンドに到達可能なホスト名とポート)に設定する。

    gcloud compute network-endpoint-groups create EXAMPLE_FQDN_NEG \
    --network-endpoint-type="internet-fqdn-port" \
    --global

    EXAMPLE_FQDN_NEG=インターネットNEG名

  2. エンドポイントを 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

  3. NEGの新しいバックエンドサービスを作成。

    gcloud compute backend-services create EXAMPLE_BACKEND_SERVICE \
    --global --protocol=HTTP2

    EXAMPLE_BACKEND_SERVICE=バックエンドサービス名

  4. バックエンドサービスを構成してカスタムリクエストヘッダー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

  5. インターネット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名

  6. バックエンドサービスをロードバランサのURLマップに接続しバックエンドにリクエストを転送。

    gcloud compute url-maps create EXAMPLE_URL_MAP \
    --default-service EXAMPLE_BACKEND_SERVICE \
    --global

    EXAMPLE_BACKEND_SERVICE=バックエンドサービス名
    EXAMPLE_URL_MAP=URLマップ名

  7. マネージドSSL証明書を作成。

    gcloud beta compute ssl-certificates create EXAMPLE_SSL_CERT \
    --domains example.com

    EXAMPLE_SSL_CERT=マネージド証明書名
    example.com=マネージド証明書を作成するドメイン名

  8. 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プロキシ名

  9. 外部静的グローバルIPアドレスを作成。

    gcloud compute addresses create EXAMPLE_GLOBAL_IP \
    --global

    EXAMPLE_GLOBAL_IP=GCPの外部静的グローバルIPアドレス名

  10. 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プロキシ名

  11. 独自ドメインを管理している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

以上です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする