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

このページでは、外部パススルー ネットワーク ロードバランサを構成して 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 Namespace とサービスは、作成する外部パススルー ネットワーク ロードバランサ転送ルールと同じプロジェクトとリージョンに存在する必要があります。

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

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

転送ルールを設定して、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>)を持つ転送ルールの名前と同じです。たとえば、--port=8080 を使用して転送ルール RULE を作成すると、RULE-8080 というエンドポイントが作成されます。同じルールで 2 つのポート --port=8080, 8081 を指定すると、2 つのエンドポイント(RULE-8080RULE-8081)が作成されます。--port=ALL を指定すると、Service Directory エンドポイントはポート 0 に登録されます。外部パススルー ネットワーク ロードバランサのオーナーである場合は、API 呼び出し元が接続するポートを認識していることを確認する必要があります。
  • パブリック Service Directory API を使用してエンドポイントを変更または削除することはできません。エンドポイントが自動的に削除されるのは、転送ルールを削除した場合のみです。つまり、転送ルールが存在する間は、エンドポイントが存在するサービスと Namespace を削除できません。
  • エンドポイント自体は課金されませんが、エンドポイントへの 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: サービスを含む Namespace に指定した名前。
  • REGION: Namespace を含むリージョン。 Google Cloud これは、転送ルールを作成したリージョンと同じにする必要があります。

クリーンアップ

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

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

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

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

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

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

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

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

次のステップ