このページでは、外部パススルー ネットワーク ロードバランサを構成して 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-8080
とRULE-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 これは、転送ルールを作成したリージョンと同じにする必要があります。
クリーンアップ
作成したリソースを削除する手順は次のとおりです。
転送ルールを削除するには、
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
コマンドを実行します。Service Directory の名前空間とサービスを削除するには、リソースを削除するをご覧ください。
次のステップ
- Service Directory の概要については、Service Directory の概要をご覧ください。
- Service Directory の使用時に発生する可能性のある一般的な問題の解決策については、トラブルシューティングをご覧ください。