リージョン外部パススルー ネットワーク ロードバランサを登録する

このページでは、Service Directory に自動的に 登録されるように リージョン外部パススルー ネットワーク ロードバランサを構成する方法について説明します。

ロードバランサを作成するときに、既存の Service Directory の名前空間と選択したサービスのエンドポイントとして登録できます。その後、クライアント アプリケーションは Service Directory(HTTP または gRPC を使用)を使用して、リージョン外部パススルー ネットワーク ロードバランサ サービスのアドレスを解決して直接接続できます。

制限事項

Service Directory とリージョン外部パススルー ネットワーク ロードバランサの統合には、次の制限があります。

  • 自動登録は、外部レイヤ 4 ロードバランサのみをサポートしています。Google Kubernetes Engine ロード バランシング サービスは、 GKE 統合を使用して登録できます。他の外部ロードバランサ、グローバル ロードバランサ、Google Kubernetes Engine Ingress、Gateway は、Service Directory APIを呼び出すことで登録できます。
  • 自動登録は、転送ルールの作成時にのみ使用できます。すでに存在する転送ルールに対して Google Cloud CLI の更新を使用した自動登録はできません。
  • Service Directory は接続を提供しません。つまり、Service Directory はリージョン外部パススルー ネットワーク ロードバランサの仮想 IP アドレスを保存しますが、Service Directory でリージョン外部パススルー ネットワーク ロードバランサを検索しても、仮想 IP アドレスに接続できるとは限りません。

始める前に

この手順では、次のものが必要です。

  • Service Directory の名前空間とサービスがすでに存在している必要があります。 存在しない場合は、 Service Directory を構成するの手順に沿って名前空間とサービスを作成します。

    Service Directory の名前空間とサービスは、作成するリージョン外部パススルー ネットワーク ロードバランサの転送ルールと同じプロジェクトとリージョンに存在する必要があります。

  • リージョン外部パススルー ネットワーク ロードバランサの転送ルールを作成するために必要なリソースがすでに設定されている必要があります。

    リージョン外部パススルー ネットワーク ロードバランサを作成する方法については、リージョン外部パススルー ネットワーク ロードバランサを設定するをご覧ください。

転送ルールを設定して、リージョン外部パススルー ネットワーク ロードバランサを Service Directory に登録する

リージョン外部パススルー ネットワーク ロードバランサを Service Directory に登録するには、転送ルールを設定する必要があります。リージョン外部パススルー ネットワーク ロードバランサを登録するには、次のセクションをご覧ください。

リージョン外部パススルー ネットワーク ロードバランサを登録する

リージョン外部パススルー ネットワーク ロードバランサを登録するには、gcloud compute forwarding-rules create コマンドを実行して service-directory-registration フラグを設定します。

gcloud beta compute forwarding-rules create FORWARDING_RULE_NAME \
    --region=REGION \
    --load-balancing-scheme=EXTERNAL \
    --address=RESERVED_IP_ADDRESS \
    --ip-protocol=PROTOCOL_TYPE \
    --ports=PORT_NUMBER \
    --backend-service=BACKEND_SERVICE_NAME \
    --backend-service-region=REGION \
    --service-directory-registration=SD_SERVICE_NAME

次のように置き換えます。

  • FORWARDING_RULE_NAME: 作成する転送ルールの名前
  • REGION: 転送ルールを作成するリージョン
  • RESERVED_IP_ADDRESS: 転送ルールが提供する IP アドレス
  • PROTOCOL_TYPE: ルールを適用する IP プロトコル
  • PORT_NUMBER: カンマ区切りのポートのリスト
  • BACKEND_SERVICE_NAME: トラフィックを受信するターゲット バックエンド サービス
  • SD_SERVICE_NAME: エンドポイントを登録する Service Directory サービスの完全修飾名。このサービスは、作成する転送ルールと同じプロジェクトとリージョンに存在する必要があります。例: projects/PROJECT/locations/REGION/namespaces/NAMESPACE_NAME/services/SERVICE_NAME

エンドポイントを確認する

リージョン外部パススルー ネットワーク ロードバランサを登録するときに作成される Service Directory エンドポイントには、次の特性があります。

  • エンドポイントの名前は、指定されたポート番号(<forwarding rule name>-<port>)を持つ転送ルールの名前と同じです。たとえば、 転送ルール RULE--port=8080 で作成すると、 RULE-8080 というエンドポイントが作成されます。同じルールで、2 つのポート --port=8080, 8081 を指定すると、RULE-8080RULE-8081 の 2 つのエンドポイントが作成されます。--port=ALL を指定すると、Service Directory エンドポイントはポート 0 で登録されます。リージョン外部パススルー ネットワーク ロードバランサのオーナーは、API 呼び出し元が接続するポートを把握していることを確認する必要があります。
  • 公開されている Service Directory API を使用してエンドポイントを変更または削除することはできません。転送ルールを削除すると、エンドポイントは自動的に削除されます。つまり、転送ルールが存在する間は、エンドポイントが存在するサービスと名前空間を削除することはできません。
  • エンドポイント自体は課金されませんが、エンドポイントへの API 呼び出しには通常の料金が適用されます。

エンドポイントが作成されたことを確認するには、Service Directory でサービスを解決します。 指定されたポート番号を持つ転送ルールの名前と同じ名前のエンドポイントが表示されます。

Service Directory でサービスを解決するには、gcloud service-directory services resolve コマンドを実行します。

gcloud service-directory services resolve SD_SERVICE_NAME \
    --namespace=SD_NAMESPACE_NAME \
    --location=REGION

次のように置き換えます。

  • SD_SERVICE_NAME: 解決する Service Directory サービスの名前。これは、Service Directory 名前空間の名前の中に存在する必要があります。
  • SD_NAMESPACE_NAME: サービスを含む名前空間に付けた名前。
  • REGION: 名前空間を含む Google Cloud リージョン。これは、転送ルールを作成したリージョンと同じにする必要があります。

クリーンアップ

作成したリソースを削除する手順は次のとおりです。

  1. 転送ルールを削除するには、gcloud compute forwarding-rules delete コマンドを実行します。

    gcloud compute forwarding-rules delete FORWARDING_RULE_NAME \
      --region=REGION
    

    次のように置き換えます。

    • FORWARDING_RULE_NAME: 作成した転送ルールの名前
    • REGION: 転送ルールのリージョン

    詳細については、転送ルールを削除する をご覧ください。

    転送ルールを削除すると、Service Directory からエンドポイントが自動的に削除されることを確認するには、gcloud service-directory services resolveコマンドをエンドポイントを確認するセクションで説明されている Service Directory サービスで実行します。

  2. Service Directory の名前空間とサービスを削除するには、リソースを削除する をご覧ください

次のステップ