Backup for GKE의 권한 오류 문제 해결

이 페이지에서는 Backup for GKE를 사용할 때 발생할 수 있는 권한 오류, 작업을 실행할 때 고려해야 할 사항, 오류 해결 방법을 설명합니다.

오류 100010101: PersistentVolumeClaim 백업 실패 - 테넌트 프로젝트의 IAM 바인딩 누락

테넌트 프로젝트의 Identity and Access Management 바인딩이 누락되어 PersistentVolumeClaim 백업 시도가 실패하면 100010101 오류가 발생하며, 이로 인해 Failed to backup PersistentVolumeClaim - Missing IAM binding for tenant project라는 오류 메시지가 표시됩니다.

GKE용 백업은 GKE 클러스터의 영구 디스크 스냅샷을 만듭니다. 스냅샷은 소비자 프로젝트라고도 하는 Google Cloud 프로젝트에 있으며 Google Cloud 는 관리하는 테넌트 프로젝트 내에 스냅샷을 만듭니다. 테넌트 프로젝트는 자체 조직과 별도로 google.com 조직 내에 있습니다.

테넌트 프로젝트 내의 서비스 에이전트에는 클러스터의 PersistentVolumeClaim에서 참조하는 영구 디스크를 암호화하는 고객 관리 암호화 키 (CMEK)를 사용할 수 있는 특정 권한이 필요합니다. 이 권한은 스냅샷 데이터를 암호화하고 복호화합니다. service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com 서비스 에이전트에 디스크의 CMEK에 대한 roles/cloudkms.cryptoKeyEncrypterDecrypter 역할이 없으면 백업 작업이 실패합니다.

이 오류를 해결하려면 다음 안내를 따르세요.

  1. Google Cloud 콘솔에서 roles/cloudkms.admin 또는 roles/owner와 같이 Cloud Key Management Service 키의 IAM 정책을 수정할 수 있는 충분한 IAM 권한이 있는지 확인합니다.

  2. 실패한 백업 작업의 status reason 메시지에 있는 TENANT_PROJECT_NUMBER 값을 사용하여 테넌트 프로젝트의 Compute Engine 서비스 에이전트를 찾습니다. 예를 들면 service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com입니다.

  3. 암호화된 Persistent Disk에 사용된 다음 CMEK 정보를 찾습니다.

    • 키 이름: 암호화 키의 이름입니다.

    • 키링: 키가 있는 키링의 이름입니다.

    • 위치: 키가 있는 Google Cloud 위치입니다. 예를 들면 global 또는 us-central1입니다.

  4. 테넌트 프로젝트의 Compute Engine 서비스 에이전트에 CMEK에 대한 roles/cloudkms.cryptoKeyEncrypterDecrypter 역할을 부여하려면 Google Cloud CLI를 사용하여 gcloud kms keys add-iam-policy-binding 명령어를 실행하세요.

    gcloud kms keys add-iam-policy-binding KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --member "serviceAccount:service-TENANT_PROJECT_NUMBER@compute-system.iam.gserviceaccount.com" \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    다음을 바꿉니다.

    • KEY_NAME: 암호화 키의 이름입니다.

    • KEY_RING: 키링의 이름입니다.

    • LOCATION: 키의 Google Cloud 위치입니다. 예를 들면 global 또는 us-central1입니다.

    • TENANT_PROJECT_NUMBER: 실패한 백업 작업의 status reason 메시지에서 가져온 테넌트 프로젝트 번호입니다.

    명령어가 성공하면 다음과 같이 출력됩니다.

    - members:
    - serviceAccount:service-987654321098@compute-system.iam.gserviceaccount.com
    role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  5. 백업 작업을 다시 테스트합니다. 그래도 작업이 실패하면 Cloud Customer Care에 문의하여 추가 지원을 받으세요.

오류 100010104: PersistentVolumeClaim 백업 실패 - 스냅샷을 만드는 중에 조직 정책 제약 조건 위반

스냅샷 생성 중에 조직 정책 제약조건 위반으로 인해 PersistentVolumeClaim 백업 시도가 실패하면 오류 100010104가 발생하여 Failed to backup PersistentVolumeClaim - Org policy constraint violation while creating snapshot라는 오류 메시지가 표시됩니다.

GKE용 백업은 GKE 클러스터의 영구 디스크 스냅샷을 만듭니다. 스냅샷은 소비자 프로젝트라고도 하는 Google Cloud 프로젝트에 있으며 Google Cloud에서 관리하는 테넌트 프로젝트 내에 생성됩니다. 테넌트 프로젝트는 자체 조직과 별도로 google.com 조직 내에 있습니다.

조직 정책에 따라 스토리지 리소스를 만들 수 있는 위치가 결정됩니다. Constraint constraints/compute.storageResourceUseRestrictions violated 오류는 허용된 조직 구조에 속하지 않는 테넌트 프로젝트에서 리소스 또는 스냅샷이 생성되어 정책을 위반하고 있음을 의미합니다. 테넌트 프로젝트가 Google 조직 내에 있으므로 정의된 정책에서 벗어나 백업이 실패합니다.

이 오류를 해결하려면 다음 안내를 따르세요.

  1. constraints/compute.storageResourceUseRestrictions 제약조건을 구현하는 조직 정책을 찾습니다. Google Cloud 콘솔을 사용하여 조직 정책을 보는 방법에 대한 자세한 내용은 조직 정책 보기를 참고하세요.

  2. constraints/compute.storageResourceUseRestrictions 정책을 수정하여 Backup for GKE에서 사용하는 folders/77620796932 테넌트 프로젝트 폴더를 허용 목록에 포함합니다.

  3. 폴더를 허용 목록에 추가한 후 정책 변경사항을 저장합니다.

  4. 조직 정책이 업데이트되고 전파된 후 백업 작업을 다시 테스트합니다. 일반적으로 몇 분 정도 걸립니다. 백업은 스토리지 리소스 사용 제한을 위반하지 않고 진행되어야 합니다. 그래도 작업이 실패하면 Cloud Customer Care에 문의하여 추가 지원을 받으세요.

오류 100010106: PersistentVolumeClaim 백업 실패 - Backup for GKE 서비스 에이전트의 IAM 바인딩이 누락됨

100010106 오류는 GKE용 백업 서비스 에이전트의 Identity and Access Management 바인딩이 누락되어 PersistentVolumeClaim 백업 시도가 실패할 때 발생하며, 그 결과 Failed to backup PVC - Missing IAM binding for Backup for GKE service agent라는 오류 메시지가 표시됩니다.

GKE용 백업에는 볼륨 Persistent Disk를 암호화하고 복호화하기 위해 BackupPlan의 고객 관리 암호화 키 (CMEK)를 사용할 권한이 필요합니다. Backup for GKE 서비스 에이전트에 BackupPlan CMEK에 대한 roles/cloudkms.cryptoKeyEncrypterDecrypter 역할이 없으면 백업 작업이 실패합니다.

이 오류를 해결하려면 다음 안내를 따르세요.

  1. 프로젝트에 특정한 Google 관리 Backup for GKE 서비스 에이전트를 식별합니다. 예를 들면 service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com입니다. 다음 방법을 사용하여 프로젝트 번호를 찾을 수 있습니다.

    • Google Cloud 콘솔에서 Google Cloud 프로젝트 대시보드를 사용합니다.

    • Google Cloud CLI를 사용하여 gcloud projects describe 명령어를 실행합니다.

      gcloud projects describe PROJECT_ID –format="value(projectNumber)"
      

      PROJECT_ID을 프로젝트의 고유 이름으로 바꿉니다.

  2. 다음 CMEK 세부정보를 확인합니다.

    • 키 이름: 암호화 키의 이름입니다.

    • 키링: 키가 있는 키링의 이름입니다.

    • 위치: BackupPlan CMEK가 있는 Google Cloud 위치입니다. 예를 들면 global 또는 us-central1입니다.

  3. CMEK에 대한 roles/cloudkms.cryptoKeyEncrypterDecrypter 역할을 Backup for GKE 서비스 에이전트에 부여하려면 Google Cloud CLI를 사용하여 gcloud kms keys add-iam-policy-binding 명령어를 실행하세요.

    gcloud kms keys add-iam-policy-binding KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --member "serviceAccount:service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com" \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    다음을 바꿉니다.

    • KEY_NAME: 암호화 키의 이름입니다.

    • KEY_RING: 키링의 이름입니다.

    • LOCATION: 키의 Google Cloud 위치입니다. 예를 들면 global 또는 us-central1입니다.

    • PROJECT_NUMBER: Google Cloud 프로젝트 번호

  4. Cloud Key Management Service 키에 필요한 Identity and Access Management 권한이 있는지 확인합니다. 예를 들면 roles/cloudkms.admin 또는 roles/owner입니다.

  5. 부여된 권한이 있는지 확인합니다. 이전 gcloud kms keys add-iam-policy-binding 명령어의 출력에서 다음과 유사한 항목을 찾습니다.

    -members:
    -serviceAccount:service-123456789012@gcp-sa-gkebackup.iam.gserviceaccount.com
    role: roles/cloudkms.cryptoKeyEncrypterDecrypter
    
  6. 필요한 권한을 부여한 후 백업 작업을 다시 테스트합니다. 작업이 완료되지 않으면 Cloud Customer Care에 문의하여 추가 지원을 받으세요.

오류 100010107: PersistentVolumeClaim 백업 실패 - IAM 바인딩 누락 - 에이전트 서비스 계정 (KCP)

오류 100010107는 Backup for GKE 백업 작업을 실행하려고 할 때 Google Kubernetes Engine 클러스터 서비스 에이전트가 고객 관리 암호화 키 (CMEK)에 액세스할 수 없어 Failed to backup PVC - Missing IAM binding - agent service account (KCP)이라는 메시지가 표시될 때 발생합니다.

일반적으로 service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com 형식인 Google Kubernetes Engine 클러스터 서비스 에이전트는 GKE 클러스터가 Google Cloud서비스와 상호작용하는 데 필수적입니다. 백업 계획에서 고객 관리 암호화 키 (CMEK)를 사용하는 경우 이 서비스 에이전트에는 CMEK를 사용하여 백업 데이터를 암호화하고 복호화할 수 있는 권한이 필요합니다. 백업 계획에 CMEK에 대한 roles/cloudkms.cryptoKeyEncrypterDecrypter 역할이 누락된 경우 클러스터에서 시작된 백업 작업이 permission denied 오류와 함께 실패합니다.

이 오류를 해결하려면 다음 문제 해결 안내를 따르세요.

  1. Cloud Key Management Service 키의 IAM 정책을 수정할 수 있는 올바른 권한이 있는지 확인합니다. 예를 들면 cloudkms.admin 또는 roles/owner입니다.

  2. Google Kubernetes Engine 클러스터 서비스 에이전트를 식별합니다. 이 서비스 에이전트는 GKE 클러스터용으로 Google Cloud 에서 자동으로 생성하고 관리합니다. 예를 들면 service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com입니다. 전체 서비스 계정을 구성하려면 프로젝트 번호가 필요합니다. 다음 방법 중 하나를 사용하여 프로젝트 번호를 찾을 수 있습니다.

    • Google Cloud 콘솔에서 Google Cloud 프로젝트 대시보드를 사용합니다.

    • Google Cloud CLI를 사용하여 gcloud projects describe 명령어를 실행합니다.

      gcloud projects describe PROJECT_ID –-format="value(projectNumber)"
      

      PROJECT_ID를 프로젝트 ID로 바꿉니다.

  3. 다음 CMEK 정보를 찾습니다.

    • 키 이름: 암호화 키의 이름입니다.

    • 키링: 키가 있는 키링의 이름입니다.

    • 위치: 키가 있는 Google Cloud 위치입니다. 예를 들면 global 또는 us-central1입니다.

  4. CMEK 수준에서 roles/cloudkms.cryptoKeyEncrypterDecrypter 역할을 부여합니다. Google Kubernetes Engine 서비스 에이전트에는 암호화 키에 대한 권한이 필요합니다. CMEK에 roles/cloudkms.cryptoKeyEncrypterDecrypter 역할을 부여하려면 Google Cloud CLI를 사용하여 gcloud kms key add-iam-policy-binding 명령어를 실행합니다.

    gcloud kms keys add-iam-policy-binding KEY_NAME \
        --keyring KEY_RING \
        --location LOCATION \
        --member "serviceAccount:service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com" \
        --role roles/cloudkms.cryptoKeyEncrypterDecrypter
    

    다음을 바꿉니다.

    • KEY_NAME: 암호화 키의 이름입니다.

    • KEY_RING: 키링의 이름입니다.

    • LOCATION: 키의 Google Cloud 위치입니다. 예를 들면 global 또는 us-central1입니다.

    • PROJECT_NUMBER: 프로젝트의 이름입니다.

    출력은 다음과 비슷합니다.

     - members:
     - serviceAccount:service-123456789012@container-engine-robot.iam.gserviceaccount.com
     role: roles/cloudkms.cryptoKeyEncrypterDecrypter
     ```
    
  5. Backup for GKE 작업을 다시 시도합니다. 작업이 계속 실패하면 Cloud Customer Care에 문의하여 추가 지원을 받으세요.

오류 100020101: PersistentVolumeClaim 백업 실패 - 지원되지 않는 PersistentVolume 유형에 바인딩된 PersistentVolumeClaim

PersistentVolumeClaim이 지원되지 않는 PersistentVolume 유형에 바인딩되어 있기 때문에 PersistentVolumeClaim을 백업하려고 시도할 때 오류 100020101가 발생합니다. 이 오류로 인해 다음 오류 메시지가 표시됩니다. PersistentVolumeClaims are bound to PersistentVolumes of unsupported types and cannot be backed up.

이 오류는 Backup for GKE 작업에서 Backup for GKE의 데이터 백업에 지원되지 않는 볼륨 유형을 사용하는 PersistentVolume에 바인딩된 PersistentVolumeClaim를 발견할 때 발생합니다. Backup for GKE는 주로 영구 디스크 볼륨의 데이터 백업을 지원합니다. PersistentVolumeClaim가 영구 디스크가 아닌 PersistentVolume에 바인드되면 PersistentVolumeClaim의 데이터 백업 작업이 실패합니다.

이 오류를 해결하려면 다음 문제 해결 안내를 따르세요.

  1. kubectl get pvc 명령어를 실행하여 모든 PersistentVolumeClaims와 이에 바인딩된 PersistentVolumes를 나열합니다. 이 목록을 검토하여 지원되지 않는 볼륨 유형으로 지원되는 PersistentVolumes를 확인합니다.

    kubectl get pvc --all-namespaces -o wide
    
  2. kubectl describe pv 명령어를 실행하여 Backup for GKE에서 지원하지 않는 볼륨 유형으로 지원되는 PersistentVolume의 볼륨 유형을 확인합니다.

    kubectl describe pv PERSISTENT_VOLUME_NAME
    

    다음을 바꿉니다.

    PERSISTENT_VOLUME_NAME: 지원되지 않는 볼륨 유형이 이전 단계의 출력에서 VOLUME 열로 나열된 PersistentVolume의 이름입니다.

    출력에서 SourceDriver 필드를 사용하여 볼륨 프로비저닝 도구 세부정보를 가져옵니다.

    • 지원되는 Persistent Disk의 경우: 출력은 Source.Driver: pd.csi.storage.gke.io 또는 Source.Type:GCEPersistentDisk와 비슷합니다.

    • 오류를 일으키는 지원되지 않는 유형의 경우: 출력은 영구 디스크가 아닌 드라이버입니다(예: Source.Driver:filestore.csi.storage.gke.io).

  3. 다음 방법 중 하나를 사용하여 오류를 해결하세요.

    • 영구 디스크 볼륨으로 마이그레이션: 전체 데이터 백업에 이 방법을 사용하는 것이 좋습니다. 실제 볼륨 데이터를 백업해야 하는 경우 영구 디스크를 사용해야 합니다. 이 경우 지원되지 않는 볼륨 유형에서 새 영구 디스크 CSI 볼륨으로 데이터를 이전해야 합니다. 영구 디스크 볼륨 마이그레이션에 대한 도움이 필요하면 Cloud Customer Care에 문의하세요.

    • Backup for GKE에서 허용 모드 사용 설정: 지원되지 않는 볼륨에 데이터 백업이 필요하지 않은 경우 이 방법을 사용하는 것이 좋습니다. 데이터 마이그레이션이 불가능하거나 필요하지 않은 경우(예: 볼륨이 외부 서비스로 지원되고 복원 작업 중에 다시 연결하려는 경우) Backup for GKE 백업 계획을 구성하여 백업이 허용 모드로 진행되도록 할 수 있습니다. 허용 모드를 사용 설정하는 방법에 관한 자세한 내용은 백업 계획에서 허용 모드 사용 설정을 참고하세요.

  4. Backup for GKE 작업을 다시 시도합니다. 오류를 해결하기 위해 선택한 방법에 따라 GKE용 백업 작업은 다음과 같이 작동합니다.

    • 영구 디스크 볼륨으로 마이그레이션한 경우 데이터가 포함된 볼륨의 백업이 성공해야 합니다.

    • 허용 모드를 사용 설정한 경우 백업 작업은 성공하지만 지원되지 않는 볼륨의 데이터는 백업되지 않습니다.

작업이 계속 실패하면 Cloud Customer Care에 문의하여 추가 지원을 받으세요.

오류 100020104: PersistentVolumeClaim 백업 실패 - PersistentVolumeClaim이 PersistentVolume에 바인딩되지 않음

PersistentVolumeClaimPersistentVolume에 바인딩되지 않아 PersistentVolumeClaim 백업 시도가 실패하면 오류 100020104가 발생합니다. 이 오류로 인해 Failed to backup PVC - PVC Not Bound to a Persistent Volume 오류 메시지가 표시됩니다.

이 오류는 Backup for GKE 작업에서 PersistentVolume에 성공적으로 바인딩되지 않은 PersistentVolumeClaim를 백업하려고 할 때 발생합니다. PersistentVolumeClaim는 Pod와 같은 소비 워크로드에서 사용되고 이후 Backup for GKE로 백업되기 전에 PersistentVolume에 바인드되어야 합니다. PersistentVolumeClaimPending 상태로 유지되면 적절한 PersistentVolume를 사용할 수 없거나 프로비저닝하거나 바인드할 수 없음을 나타내며, 이로 인해 백업 작업이 실패합니다. PersistentVolumeClaim가 바인딩되지 않은 상태로 유지되는 일반적인 이유는 연결된 StorageClassWaitForFirstConsumer 바인딩 모드를 사용하지만 아직 포드나 다른 워크로드가 PersistentVolumeClaim를 사용하려고 하지 않기 때문입니다.

이 오류를 해결하려면 다음 문제 해결 안내를 따르세요.

  1. 클러스터의 모든 PersistentVolumeClaims 상태를 확인하고 바인딩되지 않은 PersistentVolumeClaim를 식별하려면 kubectl get pvc 명령어를 실행합니다.

    kubectl get pvc --all-namespaces | grep `Pending`
    
  2. PersistentVolume에 바인딩되지 않은 PersistentVolumeClaim를 식별한 후 kubectl describe pvc 명령어를 실행하여 바인딩되지 않은 PersistentVolumeClaim에 관한 정보를 가져옵니다.

    kubectl describe pvc PVC_NAME -n NAMESPACE_NAME
    

    다음을 바꿉니다.

    • PVC_NAME: 백업에 실패한 PersistentVolumeClaim의 이름입니다.

    • NAMESPACE_NAME: PersistentVolumeClaim가 있는 네임스페이스의 이름입니다.

    설명이 표시된 후 StatusEvents 필드를 사용하여 PersistentVolumeClaimPersistentVolume에 바인딩되었는지 확인합니다. PersistentVolumeClaimPersistentVolume에 바인딩되지 않는 이유를 여전히 확인할 수 없거나 확인된 문제를 해결할 수 없는 경우 백업 계획에서 허용 모드를 사용 설정하면 됩니다. 허용 모드를 사용 설정하는 방법에 관한 자세한 내용은 백업 계획에서 허용 모드 사용 설정을 참고하세요.

다음 단계