GKE 클러스터와 Spanner 연결

이 페이지에서는 Google Kubernetes Engine(GKE) 클러스터에 Spanner 데이터베이스에 액세스할 수 있는 권한을 부여하는 방법을 설명합니다.

GKE는 컨테이너화된 애플리케이션을 쉽게 배포 및 관리할 수 있는 관리형 Kubernetes 서비스입니다. GKE와 Spanner를 함께 사용하면 애플리케이션 레이어와 데이터베이스 레이어에서 확장성, 신뢰성, 보안, 고가용성을 활용할 수 있습니다.

GKE 클러스터는 워크로드 아이덴티티를 통해 Spanner API에 액세스할 수 있습니다. 워크로드 아이덴티티를 사용하면 클러스터의 Kubernetes 서비스 계정이 IAM 서비스 계정 역할을 수행할 수 있습니다. IAM 서비스 계정은 포드에 애플리케이션 기본 사용자 인증 정보를 제공하므로 개인 사용자 인증 정보를 사용하기 위해 각 포드를 구성할 필요가 없습니다.

워크로드 아이덴티티를 사용하여 인증하도록 애플리케이션을 구성한 후 Spanner 클라이언트 라이브러리를 사용하여 Spanner 데이터베이스를 쿼리할 수 있습니다. 애플리케이션을 GKE 노드 풀로 마이그레이션할 수도 있습니다.

샘플 환경에서 연결을 만들려면 GKE Autopilot Codelab으로 Spanner 연결을 시도하세요.

워크로드 아이덴티티 사용 설정

GKE 클러스터에 워크로드 아이덴티티를 아직 사용 설정하지 않았으면 지금 사용 설정합니다. 새 노드 풀을 만들어 새 클러스터에서 워크로드 아이덴티티를 사용 설정하거나 기존 노드 풀에서 워크로드 아이덴티티를 사용 설정할 수 있습니다. GKE Autopilot 클러스터에는 기본적으로 워크로드 아이덴티티가 사용 설정되어 있습니다. 자세한 내용은 워크로드 아이덴티티 사용 설정을 참조하세요.

워크로드 아이덴티티로 Spanner 연결 인증

워크로드 아이덴티티를 사용하여 Google Cloud에 인증하도록 애플리케이션을 구성합니다.

  1. 승인 및 주 구성원 구성에 설명된 대로 GKE 포드가 Kubernetes ServiceAccount 객체를 사용하는지 확인합니다.

  2. Kubernetes ServiceAccount 객체에 필요한 Spanner IAM 역할을 부여하는 IAM 허용 정책을 만듭니다. 다음 예시에서는 Spanner 데이터베이스 사용자(roles/spanner.databaseUser) 역할을 부여합니다.

      gcloud projects add-iam-policy-binding PROJECT_ID \
          --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/NAMESPACE/sa/KSA_NAME \
          --role=roles/spanner.databaseUser \
          --condition=None
    

    다음을 바꿉니다.

    • PROJECT_ID: GKE 클러스터의 프로젝트 ID
    • PROJECT_NUMBER: 숫자 Google Cloud 프로젝트 번호
    • NAMESPACE: ServiceAccount가 포함된 Kubernetes 네임스페이스
    • KSA_NAME: ServiceAccount의 이름

Spanner 데이터베이스 연결

애플리케이션 포드가 인증되면 Spanner 클라이언트 라이브러리에서 하나를 사용하여 Spanner 데이터베이스를 쿼리할 수 있습니다.

다음 단계