이 문서에서는 할당량 시행을 관찰하는 방법을 설명합니다. Google Distributed Cloud (GDC) 에어 갭 할당량 시스템은 서비스 과부하를 유발할 수 있는 예기치 않은 사용량 급증을 방지하여 서비스를 보호합니다. 서비스 할당량이 구성되고 적용되는 방식을 이해할 수 있도록 라이브러리 에이전트 서비스를 사용하여 비율 제한과 같은 할당량 동작을 관찰할 수 있습니다.
라이브러리 에이전트 서비스는 다음 두 API를 노출합니다.
- GetShelf: 특정 섹션의 세부정보를 가져오며, 비율 제한이 적용되지 않습니다.
- ListShelves: 모든 보관함의 목록을 가져오며 분당 요청 수가 2개로 제한됩니다.
이 페이지는 애플리케이션 운영자 그룹 내에서 프로젝트의 할당량 및 사용 패턴을 모니터링하는 개발자를 위한 페이지입니다. 자세한 내용은 GDC 오프라인 문서 대상을 참고하세요.
시작하기 전에
라이브러리 에이전트 서비스와 상호작용하기 전에 올바른 권한과 서비스 엔드포인트가 있는지 확인하세요.
라이브러리 에이전트 서비스와 상호작용하는 데 필요한 권한을 얻으려면 프로젝트 IAM 관리자에게 프로젝트 네임스페이스에서 LibraryAgent User 역할을 부여해 달라고 요청하세요. 예를 들어 프로젝트 IAM 관리자는
RoleBinding리소스를 적용하여 프로젝트 네임스페이스의 사용자 계정에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: 프로젝트의 네임스페이스입니다(예:project-123).USER_EMAIL_ADDRESS: 사용자 ID와 연결된 이메일 주소입니다.
조직 관리자 클러스터에 액세스할 수 있고 DNS 모니터 (
dns-monitor-mp) 역할이 있는 플랫폼 관리자에게 라이브러리 에이전트 서비스의 DNS 이름을 가져오도록 요청합니다.kubectl get dnsregistration.network.private.gdc.goog -n libraryagent-system libraryagent -o jsonpath='{.status.fqdn}'DNS 등록을 수정해야 하는 경우 PA에게 DNS 디버거 (
dns-debugger-mp) 역할도 있어야 합니다.
할당량 한도 준수
라이브러리 에이전트 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을 프로젝트 네임스페이스로 바꿉니다.HTTP 200 OK응답이 수신됩니다.ListShelvesAPI를 호출하여 DNS 이름에 반영된 위치의 모든 섹션을 나열합니다. 이 메서드는 분당 2개의 요청으로 속도가 제한됩니다.curl -v -X GET \ -H "Authorization: Bearer ${TOKEN?}" \ --insecure \ https://$DNS_NAME/v1alpha1/projects/PROJECT_NAMESPACE/shelvesPROJECT_NAMESPACE을 프로젝트 네임스페이스로 바꿉니다.분당 요청 수가 2개 이내인 경우
HTTP 200 OK응답이 표시됩니다.할당량 적용을 관찰하려면 비율 제한을 초과할 때까지
ListShelvesAPI를 반복적으로 호출합니다.curl -v -X GET \ -H "Authorization: Bearer ${TOKEN?}" \ --insecure \ https://$DNS_NAME/v1alpha1/projects/PROJECT_NAMESPACE/shelvesPROJECT_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요율 제한 시행이 항상 정확하지는 않습니다. 429 오류가 트리거되려면 1분 안에 2개 이상의 요청이 필요할 수 있습니다.