このドキュメントでは、割り当ての適用をモニタリングする方法について説明します。Google Distributed Cloud(GDC)のエアギャップ割り当てシステムは、サービスの過負荷を引き起こす可能性のある予期しない使用量の急増を防ぐことでサービスを保護します。サービス割り当ての構成と適用方法を理解するために、Library Agent サービスを使用して、レート制限などの割り当て動作をモニタリングできます。
Library Agent サービスは、次の 2 つの API を公開します。
- GetShelf: 特定のシェルフの詳細を取得します。レート制限はありません。
- ListShelves: すべてのシェルフのリストを取得します。レート制限は 1 分あたり 2 件のリクエストです。
このページは、プロジェクトの割り当てと使用パターンをモニタリングするアプリケーション オペレーター グループ内のデベロッパーを対象としています。詳細については、GDC エアギャップの対象読者のドキュメントをご覧ください。
始める前に
ライブラリ エージェント サービスを操作する前に、正しい権限とサービス エンドポイントがあることを確認してください。
Library Agent サービスを操作するために必要な権限を取得するには、プロジェクトの IAM 管理者に、プロジェクトの Namespace で LibraryAgent ユーザー ロールを付与するよう依頼してください。たとえば、プロジェクト IAM 管理者は、
RoleBindingリソースを適用して、プロジェクト Namespace のユーザー アカウントにlibraryagent-userロールをバインドできます。kubectl apply -f - <<EOF apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: libraryagent-user-binding namespace: PROJECT_NAMESPACE subjects: - kind: User name: USER_EMAIL_ADDRESS apiGroup: rbac.authorization.k8s.io roleRef: kind: Role name: libraryagent-user apiGroup: rbac.authorization.k8s.io EOF次のように置き換えます。
PROJECT_NAMESPACE: プロジェクトの Namespace(project-123など)。USER_EMAIL_ADDRESS: ユーザー ID に関連付けられているメールアドレス。
組織管理者クラスタにアクセスでき、DNS モニター(
dns-monitor-mp)ロールを持つプラットフォーム管理者に、Library Agent サービスの DNS 名を取得するよう依頼します。kubectl get dnsregistration.network.private.gdc.goog -n libraryagent-system libraryagent -o jsonpath='{.status.fqdn}'DNS 登録の編集が必要な場合は、PA に DNS デバッガ(
dns-debugger-mp)ロールも必要です。
割り当て上限を遵守する
Library Agent API を操作してレート制限を確認する手順は次のとおりです。
DNS 名と認証トークンの環境変数を設定します。
export DNS_NAME=LIBRARY_AGENT_DNS_NAME export TOKEN="$($HOME/gdcloud auth print-identity-token --audiences=https://$DNS_NAME)"LIBRARY_AGENT_DNS_NAMEは、前に取得した DNS 名に置き換えます。GetShelfAPI を呼び出して、名前で特定のシェルフを取得します。このメソッドにはレート制限はありません。curl -v -X GET \ -H "Authorization: Bearer ${TOKEN?}" \ --insecure \ https://$DNS_NAME/v1alpha1/projects/PROJECT_NAMESPACE/shelves/Shelf1PROJECT_NAMESPACEは、プロジェクトの Namespace に置き換えます。HTTP 200 OKレスポンスが返されます。ListShelvesAPI を呼び出して、DNS 名に反映されているロケーション内のすべてのシェルフを一覧表示します。このメソッドは、1 分あたり 2 件のリクエストにレート制限されています。curl -v -X GET \ -H "Authorization: Bearer ${TOKEN?}" \ --insecure \ https://$DNS_NAME/v1alpha1/projects/PROJECT_NAMESPACE/shelvesPROJECT_NAMESPACEは、プロジェクトの Namespace に置き換えます。1 分あたり 2 件のリクエストの上限内であれば、
HTTP 200 OKレスポンスが返されます。割り当ての適用を観察するには、レート上限を超えるまで
ListShelvesAPI を繰り返し呼び出します。curl -v -X GET \ -H "Authorization: Bearer ${TOKEN?}" \ --insecure \ https://$DNS_NAME/v1alpha1/projects/PROJECT_NAMESPACE/shelvesPROJECT_NAMESPACEは、プロジェクトの Namespace に置き換えます。上限を超えると、リクエストが割り当てシステムによってレート制限されたことを示す
HTTP 429 Too Many Requestsレスポンスが返されます。出力は次のようになります。* Request completely sent off < HTTP/2 429 < x-envoy-ratelimited: true < date: Thu, 24 Apr 2025 18:37:16 GMT < server: istio-envoy < x-envoy-upstream-service-time: 46 < * Connection #0 to host libraryagent.org-1.zone1.google.gdch.test left intactレート制限の適用は必ずしも正確ではありません。1 分間に 3 回以上のリクエストで 429 エラーがトリガーされることがあります。