Google Kubernetes Engine(GKE)용 Eventarc 문제 해결

이 페이지에서는 GKE 클러스터에서 실행되는 비공개 및 공개 서비스의 공개 엔드포인트를 포함하여 GKE용 Eventarc를 사용할 때 발생할 수 있는 문제를 해결하는 방법을 보여줍니다.

발생할 수 있는 다른 문제는 다음 문제 해결 페이지를 참조하세요.

리소스 생성 권한 오류로 트리거 생성 실패

다음 중 하나와 유사한 오류 메시지가 표시됩니다.

Error applying IAM policy for service account 'projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT':
Error setting IAM policy for service account 'projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT':
googleapi: Error 403: Permission iam.serviceAccounts.setIamPolicy is required to perform this
operation on service account SERVICE_ACCOUNT., forbidden

Error when reading or editing Container Cluster "cluster": googleapi:
Error 403: Required "container.clusters.get" permission(s) for "..."., forbidden
Error reading instance group manager returned as an instance group URL:
"googleapi: Error 403: Required 'compute.instanceGroupManagers.get' permission
for '...', forbidden"

이 오류는 Eventarc에서 Google Kubernetes Engine(GKE) 클러스터의 리소스를 관리하는 데 필요한 Eventarc 서비스 계정이 올바르게 설정되지 않은 경우에 발생합니다.

이 문제를 해결하려면 Eventarc 서비스 계정이 리소스를 생성할 수 있는 적절한 권한으로 올바르게 구성되었는지 확인합니다. 자세한 내용은 특정 제공업체, 이벤트 유형, GKE 대상에 대한 안내를 따르세요.

대상 클러스터를 찾을 수 없거나 워크로드 아이덴티티가 사용 설정되어 있지 않음으로 인한 트리거 생성 실패

다음 중 하나와 유사한 오류 메시지가 표시됩니다.

ERROR: (gcloud.eventarc.triggers.create) NOT_FOUND: Not found: projects/PROJECT_ID/locations/
LOCATION/clusters/CLUSTER_NAME.
...
ERROR: (gcloud.eventarc.triggers.create) INVALID_ARGUMENT: workload identity is not enabled on
cluster CLUSTER_NAME in LOCATION
...

이 오류는 Eventarc에서 대상 GKE 클러스터를 찾을 수 없거나 클러스터에 워크로드 아이덴티티가 사용 설정되지 않은 경우 발생합니다.

이 문제를 해결하려면 대상 클러스터가 존재하고 워크로드 아이덴티티가 사용 설정되어 있는지 확인합니다.

잘못된 리소스 상태로 인해 트리거 생성 실패

프로젝트에 다음과 유사한 오류 메시지가 표시됩니다.

ERROR: (gcloud.eventarc.triggers.create) Invalid resource state for projects/PROJECT_ID/locations/LOCATION/triggers/TRIGGER_ID.
Ensure that you have enabled your GKE destination and assigned required permissions to the service account.
For more information, see https://cloud.google.com/eventarc/docs/gke/troubleshooting.

이 오류는 다음과 같은 경우에 발생합니다.

  • GKE 대상이 사용 설정되지 않은 경우
  • Eventarc에서 GKE 대상의 이벤트를 관리하는 데 필요한 역할 및 권한이 서비스 계정에 부여되지 않은 경우

이 문제를 해결하려면 다음 단계를 따르세요.

  1. GKE 대상을 사용 설정했는지 확인합니다.
    gcloud eventarc gke-destinations init
    자세한 내용은 "GKE 대상 사용 설정" 섹션에서 특정 제공업체 및 이벤트 유형에 대한 안내를 따르세요.
  2. Eventarc 서비스 계정이 리소스를 만들 수 있는 적절한 권한으로 구성되었는지 확인합니다. 서비스 계정에 적절한 역할을 부여하는 방법은 "트리거 생성 준비" 섹션의 특정 제공업체 및 이벤트 유형에 대한 안내를 따르세요.
  3. 오류가 계속되면 지원팀에 문의하세요.

트리거가 생성되었지만 대상에서 이벤트를 수신하지 않음

트리거를 만든 후 충분한 시간이 경과했는지 확인합니다. 이벤트가 전송되는 데 최대 2분이 걸릴 수 있습니다.

  1. 이벤트가 대상에서 전송되지 않으면 Pub/Sub에서 대상으로 전송된 이벤트가 삭제될 수 있습니다.

    이벤트가 삭제되지 않도록 Pub/Sub 구독 재시도 정책을 설정하거나 전송되지 않은 메시지를 데드 레터 주제(데드 레터 큐라고도 함)로 전달합니다.

    데드 레터 주제를 설정하기 전에 트리거의 주제 및 구독을 검색합니다.

    gcloud eventarc triggers describe TRIGGER \
      --location=LOCATION

    다음을 바꿉니다.

    • TRIGGER: 트리거의 ID 또는 정규화된 식별자
    • LOCATION: Eventarc 트리거 위치
  2. 트리거가 계속 작동하지 않으면 Eventarc 이벤트 전달자 구성요소의 상태를 확인하여 올바르게 배포되었는지 확인합니다.

    1. 이름에 event-forwarder가 있는 모든 Pod를 나열하여 클러스터 네임스페이스를 식별합니다.
      kubectl get pods --all-namespaces | grep event-forwarder
      출력은 다음과 비슷합니다.
      event-forwarder-namespace-hash1   event-forwarder-hash1   1/1   Running   0   5d2h
      event-forwarder-namespace-hash2   event-forwarder-hash2   1/1   Running   0   2d2h
      
      네임스페이스의 처음 30자(영문 기준)는 사용자가 생성한 Eventarc 트리거의 이름과 일치하며 그 뒤에 해시가 추가되어 처음 30자가 동일한 트리거와 구별됩니다.
    2. 배포 세부정보를 검색합니다.
      kubectl get deployments -n EVENT_FORWARDER_NAMESPACE event-forwarder
      
    3. 포드 세부정보를 검색합니다.
      kubectl describe pod -n EVENT_FORWARDER_NAMESPACE EVENT_FORWARDER_HASH
      
    4. 포드 로그를 출력하여 오류가 발생한 이유나 위치를 조사합니다.
      kubectl logs -f -n EVENT_FORWARDER_NAMESPACE EVENT_FORWARDER_HASH
      
      예를 들어 다음 로그에서 서비스 계정에 Pub/Sub Subscriber 역할이 취소되었습니다.
      {"error":"generic::permission_denied: missing 'pubsub.subscriptions.consume' permission",
      "message":"Permissions check failed","severity":"fatal","timestamp":"2021-07-07T14:57:49.038877483Z"}
      
  • GKE용 Eventarc에 대해 자세히 알아보세요.
  • 추가 도움을 받으려면 지원을 참조하세요.