GKE에서 서비스 계정 문제 해결


이 페이지에서는 Google Kubernetes Engine(GKE) 서비스 계정 문제를 해결하는 방법을 보여줍니다.

Google Cloud 프로젝트로 기본 서비스 계정 복원

GKE의 기본 서비스 계정인 container-engine-robot이 실수로 프로젝트에서 결합 해제될 수 있습니다. Kubernetes Engine 서비스 에이전트 역할(roles/container.serviceAgent)은 서비스 계정에 클러스터 리소스를 관리할 수 있는 권한을 부여하는 Identity and Access Management(IAM) 역할입니다. 서비스 계정에서 이 역할 바인딩을 삭제하면 기본 서비스 계정이 프로젝트에서 바인딩 해제되므로 애플리케이션 배포와 기타 클러스터 작업 수행을 방지할 수 있습니다.

프로젝트에서 서비스 계정이 삭제되었는지 확인하려면 Google Cloud 콘솔이나 Google Cloud CLI를 사용하면 됩니다.

콘솔

gcloud

  • 다음 명령어를 실행합니다.

    gcloud projects get-iam-policy PROJECT_ID
    

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

대시보드나 명령어에 서비스 계정 중 container-engine-robot이 표시되지 않으면 역할이 바인딩 해제된 것입니다.

Kubernetes Engine 서비스 에이전트 역할(roles/container.serviceAgent) 바인딩을 복원하려면 다음 명령어를 실행합니다.

PROJECT_NUMBER=$(gcloud projects describe "PROJECT_ID" \
    --format 'get(projectNumber)') \
gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:service-${PROJECT_NUMBER?}@container-engine-robot.iam.gserviceaccount.com" \
    --role roles/container.serviceAgent

역할 바인딩이 복원되었는지 확인합니다.

gcloud projects get-iam-policy $PROJECT_ID

container.serviceAgent 역할과 함께 서비스 계정 이름이 표시되면 역할 바인딩이 복원된 것입니다. 예를 들면 다음과 같습니다.

- members:
  - serviceAccount:service-1234567890@container-engine-robot.iam.gserviceaccount.com
  role: roles/container.serviceAgent

Compute Engine 기본 서비스 계정 사용 설정

노드 풀에 사용되는 서비스 계정은 일반적으로 Compute Engine 기본 서비스 계정입니다. 이 기본 서비스 계정이 비활성화되면 노드가 클러스터에 등록되지 않을 수 없습니다.

프로젝트에서 서비스 계정이 비활성화되었는지 확인하려면 Google Cloud 콘솔이나 gcloud CLI를 사용하면 됩니다.

콘솔

gcloud

  • 다음 명령어를 실행합니다.
gcloud iam service-accounts list  --filter="NAME~'compute' AND disabled=true"

서비스 계정이 비활성화된 경우 다음 명령어를 실행하여 서비스 계정을 사용 설정합니다.

gcloud iam service-accounts enable PROJECT_ID-compute@developer.gserviceaccount.com

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

자세한 내용은 노드 등록 문제 해결을 참조하세요.

오류 400/403: 계정에 수정 권한 없음

서비스 계정이 삭제되면 수정 권한 누락 오류가 표시될 수 있습니다. 이 오류를 해결하는 방법은 오류 400/403: 계정에서 수정 권한 누락을 참조하세요.

다음 단계

추가 지원이 필요하면 Cloud Customer Care에 문의하세요.