Google Kubernetes Engine에서 PostgreSQL용 Cloud SQL에 연결
이 페이지에서는 Google Cloud 콘솔과 클라이언트 애플리케이션을 사용하여 PostgreSQL 인스턴스에 연결된 Google Kubernetes Engine(GKE)에서 샘플 앱을 배포하는 방법을 설명합니다. 이 빠른 시작에서 만든 리소스는 정리 단계까지 모든 단계를 적시에 완료한다고 가정할 때 1달러(USD) 미만의 비용이 소요됩니다.
시작하기 전에
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
GKE에서 Cloud SQL 샘플 앱을 실행하는 데 필요한 Google Cloud API를 사용 설정합니다.
콘솔
API 사용 설정을 클릭하여 빠른 시작에 필요한 API를 사용 설정합니다.
그러면 다음 API가 사용 설정됩니다.
- Compute Engine API
- Cloud SQL Admin API
- Google Kubernetes Engine API
- Artifact Registry API
- Cloud Build API
gcloud
다음 버튼을 클릭하여 브라우저에서 직접 Google Cloud 리소스에 대해 명령줄 액세스를 제공하는 Cloud Shell을 엽니다. Cloud Shell을 사용하여 이 빠른 시작 전체에 표시된
gcloud
명령어를 실행할 수 있습니다.Cloud Shell을 사용하여 다음과 같이
gcloud services enable
명령어를 실행해 이 빠른 시작에 필요한 API를 사용 설정합니다.gcloud services enable compute.googleapis.com sqladmin.googleapis.com \ container.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com
이 명령어는 다음 API를 사용 설정합니다.
- Compute Engine API
- Cloud SQL Admin API
- GKE API
- Artifact Registry API
- Cloud Build API
Cloud SQL 설정
Cloud SQL 인스턴스 만들기
데이터베이스 만들기
콘솔
-
Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.
quickstart-instance
를 선택합니다.- SQL 탐색 메뉴에서 데이터베이스를 선택합니다.
- 데이터베이스 만들기를 클릭합니다.
- 새 데이터베이스 대화상자의 데이터베이스 이름 필드에
quickstart-db
를 입력합니다. - 만들기를 클릭합니다.
gcloud
gcloud
sql databases create
명령어를 실행하여 데이터베이스를 만듭니다.
gcloud sql databases create quickstart-db --instance=quickstart-instance
사용자 만들기
콘솔
-
Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.
- 인스턴스의 개요 페이지를 열려면 인스턴스 이름을 클릭합니다.
- SQL 탐색 메뉴에서 사용자를 선택합니다.
- 사용자 계정 추가를 클릭합니다.
- instance_name 인스턴스에 사용자 계정 추가 페이지에서 다음 정보를 추가합니다.
- 사용자 이름:
quickstart-user
로 설정합니다. - 비밀번호: 데이터베이스 사용자의 비밀번호를 지정합니다. 이 빠른 시작의 이후 단계에서 사용할 수 있도록 기록해 둡니다.
- 사용자 이름:
- 추가를 클릭합니다.
gcloud
다음과 같이 명령어를 실행하기 전에 DB_PASS를 데이터베이스 사용자의 비밀번호로 바꿉니다. 이 빠른 시작의 이후 단계에서 사용할 수 있도록 기록해 둡니다.
gcloud sql users create
명령어를 실행하여 사용자를 만듭니다.
gcloud sql users create quickstart-user \ --instance=quickstart-instance \ --password=DB_PASS
Cloud SQL와 온프레미스 PostgreSQL의 사용자 이름 길이 한도는 동일합니다.
GKE 클러스터 만들기
콘솔
-
Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.
- 만들기를 클릭합니다.
- GKE Autopilot의 구성을 클릭합니다.
- 이름에 클러스터 이름을
gke-cloud-sql-quickstart
로 지정합니다. - 만들기를 클릭합니다.
gcloud
gcloud container clusters create-auto
명령어를 실행하여 클러스터를 만듭니다.
gcloud container clusters create-auto gke-cloud-sql-quickstart \ --region us-central1
Cloud SQL 샘플 앱을 Cloud Shell 편집기에 클론
이제 Cloud SQL 인스턴스, 데이터베이스, GKE 클러스터를 사용하여 Cloud SQL 인스턴스에 연결하도록 샘플 애플리케이션을 클론하고 구성할 수 있습니다. 이 빠른 시작의 나머지 단계에서는 gcloud
및 kubectl
명령줄 도구를 사용해야 합니다. 두 도구 모두 Cloud Shell에 사전 설치되어 있습니다.
Go
-
Cloud Shell 편집기에서 샘플 앱의 소스 코드를 엽니다.
Cloud Shell 편집기 열기 -
Open in Cloud Shell
대화상자에서 확인을 클릭하여 샘플 앱 코드를 다운로드하고 Cloud Shell 편집기에서 샘플 앱 디렉터리를 엽니다.
자바
-
Cloud Shell 편집기에서 샘플 앱의 소스 코드를 엽니다.
Cloud Shell 편집기 열기 -
Open in Cloud Shell
대화상자에서 확인을 클릭하여 샘플 앱 코드를 다운로드하고 Cloud Shell 편집기에서 샘플 앱 디렉터리를 엽니다.
Node.js
-
Cloud Shell 편집기에서 샘플 앱의 소스 코드를 엽니다.
Cloud Shell 편집기 열기 -
Open in Cloud Shell
대화상자에서 확인을 클릭하여 샘플 앱 코드를 다운로드하고 Cloud Shell 편집기에서 샘플 앱 디렉터리를 엽니다.
Python
-
Cloud Shell 편집기에서 샘플 앱의 소스 코드를 엽니다.
Cloud Shell 편집기 열기 -
Open in Cloud Shell
대화상자에서 확인을 클릭하여 샘플 앱 코드를 다운로드하고 Cloud Shell 편집기에서 샘플 앱 디렉터리를 엽니다.
GKE 클러스터 사용 설정
이 빠른 시작의 나머지 명령어에 사용할 기본 클러스터로 방금 만든 GKE 클러스터를 사용 설정합니다.
gcloud container clusters get-credentials
명령어를 실행하여 GKE 클러스터를 사용 설정합니다.
gcloud container clusters get-credentials gke-cloud-sql-quickstart \ --region us-central1
서비스 계정 설정
-
다음과 같이
gcloud iam service-accounts create
명령어를 실행하여 새 서비스 계정을 만듭니다.gcloud iam service-accounts create gke-quickstart-service-account \ --display-name="GKE Quickstart Service Account"
- 다음과 같이
gcloud projects add-iam-policy-binding
명령어를 실행하여 방금 만든 Google Cloud 서비스 계정에 Cloud SQL 클라이언트 역할을 추가합니다. YOUR_PROJECT_ID를 프로젝트 ID로 바꿉니다.gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/cloudsql.client"
- 샘플 앱은 로깅을 사용하므로 다음과 같이
gcloud projects add-iam-policy-binding
명령어를 실행하여 방금 만든 Google Cloud 서비스 계정에 로그 작성자 역할을 추가합니다. YOUR_PROJECT_ID를 프로젝트 ID로 바꿉니다.gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/logging.logWriter"
- 다음과 같이
gcloud projects add-iam-policy-binding
명령어를 실행하여 Artifact Registry 리더 역할을 서비스 계정에 추가하므로
서비스 계정에서 아티팩토리 저장소에서 이미지를 가져올 수 있어야 합니다. YOUR_PROJECT_ID를 프로젝트 ID로 바꿉니다.gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/artifactregistry.reader"
- Kubernetes 서비스 계정을 만듭니다.
- Cloud Shell 편집기에서
service-account.yaml
파일을 업데이트합니다.<YOUR-KSA-NAME>
을ksa-cloud-sql
로 바꿉니다. - Cloud Shell에서 다음과 같이
kubectl apply
명령어를 실행합니다.kubectl apply -f service-account.yaml
- Cloud Shell 편집기에서
- 다음과 같이
gcloud iam service-accounts add-iam-policy-binding
명령어를 실행하여 Google Cloud 서비스 계정과 Kubernetes 서비스 계정의 IAM binding을 사용 설정합니다. 다음을 바꿉니다.- YOUR_PROJECT_ID를 프로젝트 ID로 바꿉니다.
- YOUR_K8S_NAMESPACE를 GKE에서 생성된 클러스터의 기본 네임스페이스인
default
로 바꿉니다. ksa-cloud-sql
을 YOUR_KSA_NAME으로 바꿉니다.
gcloud iam service-accounts add-iam-policy-binding \ --role="roles/iam.workloadIdentityUser" \ --member="serviceAccount:YOUR_PROJECT_ID.svc.id.goog[YOUR_K8S_NAMESPACE/YOUR_KSA_NAME]" \ gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com
- 다음과 같이
kubectl annotate
명령어를 실행하여 IAM binding으로 Kubernetes 서비스 계정에 주석을 추가합니다. 다음을 바꿉니다.ksa-cloud-sql
을 YOUR_KSA_NAME으로 바꿉니다.- YOUR_PROJECT_ID를 프로젝트 ID로 바꿉니다.
kubectl annotate serviceaccount \ YOUR_KSA_NAME \ iam.gke.io/gcp-service-account=gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com
보안 비밀 구성
다음과 같은 kubectl create secret generic
명령어를 실행하여 샘플 앱에서 사용할 데이터베이스, 사용자, 사용자 비밀번호의 Kubernetes 보안 비밀을 만듭니다. 각 보안 비밀 값은 이 빠른 시작의 이전 단계에서 지정된 값을 기반으로 합니다.
DB_PASS를 이전 사용자 만들기 빠른 시작 단계에서 만든 quickstart-user
의 비밀번호로 바꿉니다.
kubectl create secret generic gke-cloud-sql-secrets \ --from-literal=database=quickstart-db \ --from-literal=username=quickstart-user \ --from-literal=password=DB_PASS
샘플 앱 빌드
Go
-
Cloud Shell에서 다음
gcloud artifacts repositories create
명령어를 실행하여 클러스터와 같은 리전에 gke-cloud-sql-repo라는 Artifact Registry에 저장소를 만듭니다. YOUR_PROJECT_ID를 프로젝트 ID로 바꿉니다.gcloud artifacts repositories create gke-cloud-sql-repo \ --project=YOUR_PROJECT_ID \ --repository-format=docker \ --location=us-central1 \ --description="GKE Quickstart sample app"
-
Cloud Shell에서 다음과 같이
gcloud builds submit
명령어를 실행하여 Docker 컨테이너를 빌드하고 Artifact Registry에 게시합니다. YOUR_PROJECT_ID를 프로젝트 ID로 바꿉니다.gcloud builds submit \ --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .
자바
-
Cloud Shell에서 다음
gcloud artifacts repositories create
명령어를 실행하여 클러스터와 같은 리전에 gke-cloud-sql-repo라는 Artifact Registry에 저장소를 만듭니다. YOUR_PROJECT_ID를 프로젝트 ID로 바꿉니다.gcloud artifacts repositories create gke-cloud-sql-repo \ --project=YOUR_PROJECT_ID \ --repository-format=docker \ --location=us-central1 \ --description="GKE Quickstart sample app"
-
Cloud Shell에서 다음과 같이
mvn
명령어를 실행하여 Docker 컨테이너를 빌드하고 Artifact Registry에 게시합니다. YOUR_PROJECT_ID를 프로젝트 ID로 바꿉니다.mvn clean package com.google.cloud.tools:jib-maven-plugin:2.8.0:build \ -Dimage=us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql \ -DskipTests -Djib.to.credHelper=gcloud
Node.js
-
Cloud Shell에서 다음
gcloud artifacts repositories create
명령어를 실행하여 클러스터와 같은 리전에 gke-cloud-sql-repo라는 Artifact Registry에 저장소를 만듭니다. YOUR_PROJECT_ID를 프로젝트 ID로 바꿉니다.gcloud artifacts repositories create gke-cloud-sql-repo \ --project=YOUR_PROJECT_ID \ --repository-format=docker \ --location=us-central1 \ --description="GKE Quickstart sample app"
-
Cloud Shell에서 다음과 같이
gcloud builds submit
명령어를 실행하여 Docker 컨테이너를 빌드하고 Artifact Registry에 게시합니다. YOUR_PROJECT_ID를 프로젝트 ID로 바꿉니다.gcloud builds submit \ --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .
Python
-
Cloud Shell에서 다음
gcloud artifacts repositories create
명령어를 실행하여 클러스터와 같은 리전에 gke-cloud-sql-repo라는 Artifact Registry에 저장소를 만듭니다. YOUR_PROJECT_ID를 프로젝트 ID로 바꿉니다.gcloud artifacts repositories create gke-cloud-sql-repo \ --project=YOUR_PROJECT_ID \ --repository-format=docker \ --location=us-central1 \ --description="GKE Quickstart sample app"
-
Cloud Shell에서 다음과 같이
gcloud builds submit
명령어를 실행하여 Docker 컨테이너를 빌드하고 Artifact Registry에 게시합니다. YOUR_PROJECT_ID를 프로젝트 ID로 바꿉니다.gcloud builds submit \ --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .
샘플 앱 배포
삭제
이 페이지에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 수행합니다.
-
Google Cloud 콘솔에서 Cloud SQL 인스턴스 페이지로 이동합니다.
quickstart-instance
인스턴스를 선택하여 인스턴스 세부정보 페이지를 엽니다.- 페이지 상단의 아이콘 표시줄에서 삭제를 클릭합니다.
- 인스턴스 삭제 대화상자에서
quickstart-instance
를 입력한 후 삭제를 클릭하여 인스턴스를 삭제합니다. -
Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.
gke-cloud-sql-quickstart
서비스 이름 옆의 체크박스를 클릭합니다.- Google Kubernetes Engine 페이지 상단에 있는 삭제 버튼을 클릭합니다.
선택적인 삭제 단계
이 빠른 시작에서 만든 Google Cloud 서비스 계정을 사용하지 않는 경우 삭제할 수 있습니다.
-
Google Cloud 콘솔에서 IAM 페이지로 이동합니다.
gke-quickstart-service-account
라는 IAM 계정의 체크박스를 선택합니다.- 삭제를 클릭하고 삭제를 확인합니다.
이 빠른 시작을 진행하는 동안 사용 설정된 API를 사용하지 않을 때는 이를 사용 중지할 수 있습니다.
- 이 빠른 시작 내에서 사용 설정된 API:
- Compute Engine API
- Cloud SQL Admin API
- Google Kubernetes Engine API
- Artifact Registry API
- Cloud Build API
Google Cloud 콘솔에서 API 페이지로 이동합니다.
사용 중지하려는 API를 선택한 후 API 사용 중지 버튼을 클릭합니다.
다음 단계
Cloud SQL 인스턴스 만들기 자세히 알아보기(필요한 경우)Cloud SQL 인스턴스의 PostgreSQL 사용자 및 데이터베이스를 만드는 방법 알아보기
Cloud SQL 가격 정보 참조하기
다음에 대해 자세히 알아보기
또한 다른 Google Cloud 애플리케이션에서 Cloud SQL 인스턴스에 연결하는 방법을 알아보세요.