이 페이지에서는 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에 인증하도록 애플리케이션을 구성합니다.
승인 및 주 구성원 구성에 설명된 대로 GKE 포드가 Kubernetes
ServiceAccount
객체를 사용하는지 확인합니다.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 클러스터의 프로젝트 IDPROJECT_NUMBER
: 숫자 Google Cloud 프로젝트 번호NAMESPACE
: ServiceAccount가 포함된 Kubernetes 네임스페이스KSA_NAME
: ServiceAccount의 이름
Spanner 데이터베이스 연결
애플리케이션 포드가 인증되면 Spanner 클라이언트 라이브러리에서 하나를 사용하여 Spanner 데이터베이스를 쿼리할 수 있습니다.
다음 단계
- GKE 클러스터에 애플리케이션 배포 방법 알아보기
- GKE Autopilot 및 Spanner를 사용하여 애플리케이션 배포 방법 알아보기
- 기존 워크로드를 워크로드 아이덴티티로 마이그레이션하는 방법 알아보기
- SQL 권장사항에 대해 자세히 알아보기
- Spanner를 Hibernate ORM, gorm, Django ORM 등 다른 ORM과 통합하기