이 페이지에서는 Google Kubernetes Engine(GKE) 클러스터에 Spanner 데이터베이스에 액세스할 수 있는 권한을 부여하는 방법을 설명합니다.
GKE는 컨테이너화된 애플리케이션을 쉽게 배포 및 관리할 수 있는 관리형 Kubernetes 서비스입니다. GKE와 Spanner를 함께 사용하면 애플리케이션 레이어와 데이터베이스 레이어에서 확장성, 신뢰성, 보안, 고가용성을 활용할 수 있습니다.
GKE 클러스터는 GKE용 워크로드 아이덴티티 제휴를 통해 Spanner API에 액세스할 수 있습니다. GKE용 워크로드 아이덴티티 제휴를 사용하면 클러스터의 Kubernetes 서비스 계정이 IAM 서비스 계정 역할을 수행할 수 있습니다. IAM 서비스 계정은 포드에 애플리케이션 기본 사용자 인증 정보를 제공하므로 각 포드에서 개인 사용자 인증 정보를 사용하도록 구성할 필요가 없습니다.
애플리케이션에서 GKE용 워크로드 아이덴티티 제휴를 사용하여 인증하도록 구성한 후 Spanner 클라이언트 라이브러리를 사용하여 Spanner 데이터베이스를 쿼리할 수 있습니다. 애플리케이션을 GKE 노드 풀로 마이그레이션할 수도 있습니다.
샘플 환경에서 연결을 만들려면 GKE Autopilot Codelab으로 Spanner 연결을 시도하세요.
GKE용 워크로드 아이덴티티 제휴 사용 설정
아직 GKE 클러스터에 GKE용 워크로드 아이덴티티 제휴를 사용 설정하지 않았다면 사용 설정합니다. 새 노드 풀을 만들어 새 클러스터에서 GKE용 워크로드 아이덴티티 제휴를 사용 설정하거나 기존 노드 풀에서 GKE용 워크로드 아이덴티티 제휴를 사용 설정할 수 있습니다. GKE Autopilot 클러스터에는 기본적으로 GKE용 워크로드 아이덴티티 제휴가 사용 설정되어 있습니다. 자세한 내용은 GKE용 워크로드 아이덴티티 제휴 사용을 참조하세요.
GKE용 워크로드 아이덴티티 제휴로 Spanner에 연결 인증
GKE용 워크로드 아이덴티티 제휴를 사용하여 애플리케이션에서 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를 사용하여 애플리케이션 배포 방법 알아보기
- 기존 워크로드를 GKE용 워크로드 아이덴티티 제휴로 마이그레이션하는 방법 자세히 알아보기
- SQL 권장사항에 대해 자세히 알아보기
- Spanner를 Hibernate ORM, gorm, Django ORM 등 다른 ORM과 통합하기