このページでは、内部パススルー ネットワーク ロードバランサまたは内部アプリケーション ロードバランサ(プレビュー)を構成して、Service Directory に自動的に登録する方法について説明します。
ロードバランサを作成するときに、既存の Service Directory の名前空間と選択したサービスのエンドポイントとして登録できます。その後、クライアント アプリケーションは、Service Directory(HTTP または gRPC を使用)や DNS(Service Directory DNS ゾーンを作成した場合)を使用して、内部ロードバランサ サービスのアドレスを解決し、直接接続できます。
制限事項
Service Directory と内部ロード バランシングの統合には、次の制限事項があります。
- 自動登録は、内部ロードバランサとネットワーク ロードバランサにのみ適用されます。GKE 統合を使用して、Google Kubernetes Engine ロード バランシング サービスを登録できます。Service Directory API を呼び出すことで、グローバル ロードバランサと Google Kubernetes Engine の上り(内向き)とゲートウェイを登録できます。
- 自動登録は、転送ルールの作成時にのみ使用できます。既存の転送ルールに対する Google Cloud CLI の更新を使用した自動登録は使用できません。
- 共有 VPC ネットワーク設定のホスト プロジェクトまたはサービス プロジェクトで、内部ロードバランサを Service Directory に登録できます。ただし、すべてのロード バランシング コンポーネントとバックエンドは同じプロジェクト内に存在する必要があります。詳細については、内部ロードバランサの制限事項をご覧ください。
- 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 compute forwarding-rules create FORWARDING_RULE_NAME \ --region=REGION \ --load-balancing-scheme=INTERNAL \ --network=NETWORK_NAME \ --subnet=SUBNET_NAME \ --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
: 転送ルールを作成するリージョンNETWORK_NAME
: この転送ルールが適用されるネットワークSUBNET_NAME
: この転送ルールが適用されるサブネットワーク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
内部アプリケーション ロードバランサを登録する
リージョン内部アプリケーション ロードバランサを登録するには、gcloud compute forwarding-rules
create
コマンドを実行して service-directory-registration
フラグを設定します。
gcloud beta compute forwarding-rules create FORWARDING_RULE_NAME \ --region=REGION \ --load-balancing-scheme=INTERNAL_MANAGED \ --network=NETWORK_NAME \ --address=RESERVED_IP_ADDRESS \ --target-https-proxy=PROXY_NAME \ --target-https-proxy-region=PROXY_REGION \ --ports=PORT_NUMBER \ --service-directory-registration=SD_SERVICE_NAME
次のように置き換えます。
FORWARDING_RULE_NAME
: 作成する転送ルールの名前REGION
: 転送ルールを作成するリージョンNETWORK_NAME
: この転送ルールが適用されるネットワークRESERVED_IP_ADDRESS
: 転送ルールが提供する IP アドレスPROXY_NAME
: トラフィックを受信するターゲット プロキシPROXY_REGION
: プロキシのリージョンPORT_NUMBER
: カンマ区切りのポートのリストSD_SERVICE_NAME
: エンドポイントを登録する Service Directory サービスの完全修飾名。このサービスは、作成する転送ルールと同じプロジェクトとリージョンに存在する必要があります。例: projects/PROJECT
/locations/REGION
/namespaces/NAMESPACE_NAME
/services/SERVICE_NAME
エンドポイントを確認する
内部ロードバランサを登録するときに作成される 1 つ以上の 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
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 を含む Trusted Cloud リージョン。これは、転送ルールを作成したリージョンと同じにする必要があります。
省略可: Cloud DNS を使用して Service Directory ゾーンを作成する
この統合を通じて登録された Service Directory エンドポイントは、他の Service Directory エンドポイントと同様に DNS を使用して解決できます。Cloud DNS を使用して Service Directory ゾーンを作成するには、Service Directory ゾーンの構成をご覧ください。
ゾーンが正しく設定されていることを確認するには、Service Directory ゾーンの DNS クエリを実行します。DNS を使用してクエリを実行する方法については、DNS を使用したクエリをご覧ください。ゾーンが正しく構成されている場合は、コマンド出力に内部ロードバランサの IP アドレスが表示されます。
クリーンアップ
作成したリソースを削除するには、次の操作を行います。
gcloud
転送ルールを削除するには、
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 の使用時に発生する可能性のある一般的な問題の解決策については、トラブルシューティングをご覧ください。