이 튜토리얼에서는 Google Kubernetes Engine Autopilot 클러스터에서 실행되는 애플리케이션에서 AlloyDB 인스턴스로 연결을 설정하는 방법을 설명합니다.
AlloyDB는 Google Cloud의 완전 관리형 PostgreSQL 호환 데이터베이스 서비스입니다.
Google Kubernetes Engine을 사용하면 Kubernetes를 자동으로 배포, 확장, 관리할 수 있습니다.
목표
- AlloyDB용 Docker 이미지를 빌드합니다.
- Google Kubernetes Engine에서 애플리케이션 실행
- AlloyDB 인증 프록시와 내부 IP를 사용하여 AlloyDB 인스턴스에 연결합니다.
비용
이 튜토리얼에서는 다음과 같은 비용이 청구될 수 있는 Google Cloud구성요소를 사용합니다.
- AlloyDB
- Google Kubernetes Engine
- Artifact Registry
가격 계산기를 사용하면 예상 사용량을 기준으로 예상 비용을 산출할 수 있습니다.
시작하기 전에
콘솔
- 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.
-
PostgreSQL용 AlloyDB를 만들고 연결하는 데 필요한 Cloud API를 사용 설정합니다.
프로젝트 확인 단계에서 다음을 클릭하여 변경할 프로젝트의 이름을 확인합니다.
API 사용 설정 단계에서 사용 설정을 클릭하여 다음을 사용 설정합니다.
- AlloyDB API
- Artifact Registry API
- Compute Engine API
- Cloud Resource Manager API
- Cloud Build API
- Container Registry API
- Kubernetes Engine API
- Service Networking API
이 튜토리얼에서는 gke-alloydb-app
라는 샘플 투표 수집 웹 애플리케이션을 사용합니다.
Cloud Shell 실행
Cloud Shell은Google Cloud에서 호스팅되는 리소스를 관리하는 셸 환경입니다.
Cloud Shell에는 Google Cloud CLI 및 kubectl 명령줄 도구가 사전 설치되어 있습니다. gcloud CLI는 Google Cloud의 기본 명령줄 인터페이스를 제공합니다. kubectl
는 Kubernetes 클러스터를 대상으로 명령어를 실행할 수 있는 기본 명령줄 인터페이스를 제공합니다.
콘솔
Cloud Shell을 시작하려면 다음 단계를 완료하세요.
Google Cloud 콘솔로 이동합니다.
Google Cloud 콘솔 상단에서 Cloud Shell 활성화를 클릭합니다.
Cloud Shell 승인 대화상자에서 승인을 클릭합니다.
Console 하단의 프레임에서 Cloud Shell 세션이 열립니다. 이 셸을 사용하여
gcloud
및kubectl
명령어를 실행합니다.명령어를 실행하기 전에 다음 명령어를 사용하여 Google Cloud CLI에서 기본 프로젝트를 설정합니다.
gcloud config set project PROJECT_ID
여기서
PROJECT_ID
를 프로젝트 ID로 바꿉니다.
AlloyDB 클러스터 및 클러스터의 기본 인스턴스 만들기
AlloyDB 클러스터는 Google Virtual Private Cloud (VPC) 내의 여러 노드로 구성됩니다. 클러스터를 만들 때 VPC 중 하나와 새 클러스터가 포함된 Google 관리형 VPC 간에 비공개 서비스 액세스도 구성합니다. 데이터베이스가 공개 인터넷에 노출되지 않도록 하려면 내부 IP 액세스를 사용하는 것이 좋습니다.
구성된 VPC 외부에서 PostgreSQL용 AlloyDB 클러스터에 연결하려면 AlloyDB용 VPC에서 비공개 서비스 액세스 구성을 설정하고 기본 VPC 네트워크를 사용하여 GKE 클러스터에 배포된 애플리케이션에서 쿼리를 실행합니다.
gcloud
Cloud Shell에서 사용되지 않는 IP 주소 (IPv4) 범위가 이미 서비스 피어링에 할당되어 있는지 확인합니다.
gcloud services vpc-peerings list --network=default
출력이 다음과 유사한 경우 다음 단계를 건너뜁니다.
network: projects/493573376485/global/networks/default peering: servicenetworking-googleapis-com reservedPeeringRanges: - default-ip-range service: services/servicenetworking.googleapis.com
이 출력에서
reservedPeeringRanges
의 값은default-ip-range
이며, 이를 IP_RANGE_NAME로 사용하여 3단계에서 비공개 연결을 만들 수 있습니다.(기본값
reservedPeeringRanges
을 사용하는 경우 건너뜁니다.) VPC에서 사용되지 않는 IP 주소를 할당하려면 다음 명령어를 사용합니다.gcloud compute addresses create IP_RANGE_NAME \ --global \ --purpose=VPC_PEERING \ --prefix-length=16 \ --description="VPC private service access" \ --network=default
IP_RANGE_NAME
를 AlloyDB 서브넷 내에서 사용 가능한 내부 IP 주소의 이름(예:alloydb-gke-psa-01
)으로 바꿉니다.할당된 IP 범위를 사용하여 서비스 액세스를 구성하려면 다음 명령어를 실행합니다.
gcloud services vpc-peerings connect \ --service=servicenetworking.googleapis.com \ --ranges=IP_RANGE_NAME \ --network=default
AlloyDB 클러스터를 배포하려면 다음 명령어를 실행합니다.
gcloud alloydb clusters create CLUSTER_ID \ --database-version=POSTGRES_VERSION \ --password=CLUSTER_PASSWORD \ --network=default \ --region=REGION \ --project=PROJECT_ID
다음을 바꿉니다.
CLUSTER_ID
: 만들려는 클러스터의 ID입니다. 소문자로 시작해야 하며 소문자, 숫자, 하이픈(예:alloydb-cluster
)을 포함할 수 있습니다.VERSION
: 클러스터의 데이터베이스 서버와 호환되도록 하려는 PostgreSQL의 주요 버전입니다. 다음 중 하나를 선택합니다.14
: PostgreSQL 14와의 호환성을 위해15
: 지원되는 기본 PostgreSQL 버전인 PostgreSQL 15와의 호환성을 위해16
: PostgreSQL 16 (미리보기)과의 호환성을 위해미리보기에서 PostgreSQL 16을 사용하는 데 적용되는 제한사항에 관한 자세한 내용은 미리보기 PostgreSQL 16 호환성을 참고하세요.
CLUSTER_PASSWORD
: 기본postgres
사용자에 사용할 비밀번호입니다.PROJECT_ID
: 클러스터를 배치하려는 Google Cloud 프로젝트의 ID입니다.REGION
: AlloyDB 클러스터가 생성된 리전의 이름입니다(예:us-central1
).
AlloyDB 기본 인스턴스를 배포하려면 다음을 실행합니다.
gcloud alloydb instances create INSTANCE_ID \ --instance-type=PRIMARY \ --cpu-count=NUM_CPU \ --region=REGION \ --cluster=CLUSTER_ID \ --project=PROJECT_ID
다음을 바꿉니다.
INSTANCE_ID
을 선택한 AlloyDB 인스턴스 이름(예:alloydb-primary
)으로 바꿉니다.CLUSTER_ID
를 AlloyDB 클러스터 이름(예:alloydb-cluster
)으로 바꿉니다.NUM_CPU
: 가상 처리 단위 수(예:2
)입니다.PROJECT_ID
Google Cloud 프로젝트의 ID를 사용합니다.REGION
를 AlloyDB 클러스터가 생성된 리전의 이름으로 바꿉니다(예:us-central1
).
AlloyDB 인스턴스가 생성될 때까지 기다립니다. 몇 분 정도 걸릴 수 있습니다.
기본 인스턴스에 연결하고 AlloyDB 데이터베이스 및 사용자 만들기
콘솔
새로 만든 클러스터 개요 페이지가 표시되지 않으면 Google Cloud 콘솔에서 클러스터 페이지로 이동합니다.
클러스터 개요 페이지를 표시하려면 CLUSTER_ID 클러스터 이름을 클릭합니다.
탐색 메뉴에서 AlloyDB 스튜디오를 클릭합니다.
AlloyDB Studio에 로그인 페이지에서 다음을 수행합니다.
데이터베이스 목록에서
postgres
를 선택합니다.사용자 목록에서
postgres
를 선택합니다.비밀번호 입력란에 AlloyDB 클러스터 및 클러스터의 기본 인스턴스 만들기에서 만든
CLUSTER_PASSWORD
를 입력합니다.인증을 클릭합니다. 탐색기 창에 데이터베이스의 객체 목록이 표시됩니다.
편집기 1 탭에서 다음을 완료합니다.
AlloyDB 데이터베이스를 만듭니다.
CREATE DATABASE DATABASE_NAME;
DATABASE_NAME
을 원하는 이름(예:tutorial_db
)으로 바꿉니다.실행을 클릭합니다. 결과 창에
Statement executed successfully
메시지가 표시될 때까지 기다립니다.삭제를 클릭합니다.
AlloyDB 데이터베이스 사용자와 비밀번호를 만듭니다.
CREATE USER USERNAME WITH PASSWORD 'DATABASE_PASSWORD';
다음을 바꿉니다.
USERNAME
: AlloyDB 사용자 이름입니다(예:tutorial_user
).DATABASE_PASSWORD
: AlloyDB 데이터베이스의 비밀번호입니다(예:tutorial
).
실행을 클릭합니다. 결과 창에
Statement executed successfully
메시지가 표시될 때까지 기다립니다.
AlloyDB 스튜디오의 탐색기 창에서 manage_accounts 사용자/데이터베이스 전환을 클릭합니다.
AlloyDB Studio에 로그인 페이지에서 다음을 수행합니다.
데이터베이스 목록에서
DATABASE_NAME
(예:tutorial_db
)를 선택합니다.사용자 목록에서
postgres
를 선택합니다.비밀번호 입력란에 AlloyDB 클러스터 및 클러스터의 기본 인스턴스 만들기에서 만든
CLUSTER_PASSWORD
를 입력합니다.인증을 클릭합니다. 탐색기 창에 데이터베이스의 객체 목록이 표시됩니다.
편집기 1 탭에서 다음을 완료합니다.
AlloyDB 데이터베이스 사용자에게 모든 권한을 부여합니다.
GRANT ALL PRIVILEGES ON DATABASE "DATABASE_NAME" to "USERNAME";
실행을 클릭합니다. 결과 창에
Statement executed successfully
메시지가 표시될 때까지 기다립니다.삭제를 클릭합니다.
공개 스키마에 대한 AlloyDB 데이터베이스 사용자에게 권한을 부여합니다.
GRANT CREATE ON SCHEMA public TO "USERNAME";
실행을 클릭합니다. 결과 창에
Statement executed successfully
메시지가 표시될 때까지 기다립니다.
데이터베이스 이름, 사용자 이름, 비밀번호를 기록해 둡니다. 이 정보는 Kubernetes 보안 비밀 만들기에서 사용합니다.
GKE Autopilot 클러스터 만들기
클러스터에는 클러스터 제어 영역 머신 한 개 이상과 노드라는 작업자 머신 여러 개가 포함됩니다. 노드는 클러스터를 구성하기 위해 필요한 Kubernetes 프로세스를 실행하는 Compute Engine 가상 머신 (VM) 인스턴스입니다. 클러스터에 애플리케이션을 배포하고 애플리케이션은 노드에서 실행됩니다.
콘솔
Google Cloud 콘솔에서 Kubernetes 클러스터 페이지로 이동합니다.
만들기를 클릭합니다.
클러스터 기본사항 페이지의 이름 입력란에 Autopilot 클러스터의
GKE_CLUSTER_ID
(예:ap-cluster
)를 지정합니다.리전 필드에서
REGION
(예:us-central1
)을 선택합니다.만들기를 클릭합니다.
GKE 클러스터가 생성될 때까지 기다립니다. 몇 분 정도 걸릴 수 있습니다.
gcloud
Autopilot 클러스터를 만듭니다.
gcloud container clusters create-auto GKE_CLUSTER_ID \
--location=REGION
다음을 바꿉니다.
GKE_CLUSTER_ID
: Autopilot 클러스터의 이름입니다(예:ap-cluster
).REGION
: GKE 클러스터가 배포된 리전의 이름입니다(예:us-central1
).
GKE 클러스터가 생성될 때까지 기다립니다. 몇 분 정도 걸릴 수 있습니다.
AlloyDB 인증 프록시를 사용하여 AlloyDB에 연결
AlloyDB 인증 프록시를 사용하여 AlloyDB에 연결하는 것이 좋습니다. AlloyDB 인증 프록시는 Identity and Access Management (IAM)를 사용하여 데이터베이스를 안전하게 보호할 수 있는 강력한 암호화와 인증을 제공합니다.
AlloyDB 인증 프록시를 사용하여 연결하면 sidecar
컨테이너 패턴을 사용하여 포드에 추가됩니다. AlloyDB 인증 프록시 컨테이너는 애플리케이션과 동일한 포드에 있으므로 localhost
를 사용하여 애플리케이션을 AlloyDB 인증 프록시에 연결할 수 있어 보안 및 성능이 향상됩니다.
Google 서비스 계정 만들기 및 역할 부여
Google Cloud에서 애플리케이션은 서비스 계정을 사용하여 서비스 계정 자체로 인증하여 승인된 API를 호출합니다. 애플리케이션이 서비스 계정으로 인증되면 서비스 계정에 액세스 권한이 있는 모든 리소스에 액세스할 수 있습니다.
Google Kubernetes Engine에서 AlloyDB 인증 프록시를 실행하려면 애플리케이션을 나타내는 Google 서비스 계정을 만듭니다. 어디서나 동일한 서비스 계정을 사용하지 않고 각 애플리케이션에 고유한 서비스 계정을 만드는 것이 좋습니다. 이 모델은 애플리케이션별로 권한을 제한할 수 있으므로 더 안전합니다.
콘솔
Google Cloud 콘솔에서 IAM 페이지로 이동합니다.
'
PROJECT_ID
' 프로젝트의 권한 페이지에서 기본 Compute 서비스 계정PROJECT_NUMBER-compute@developer.gserviceaccount.com
이 포함된 행을 찾아 해당 행에서 edit 주 구성원 수정을 클릭합니다.프로젝트의 자동으로 생성된 고유 식별자인
PROJECT_NUMBER
를 가져오려면 다음을 실행합니다.PROJECT_NUMBER
는 프로젝트 대시보드 프로젝트 정보 카드에 표시됩니다.다른 역할 추가를 클릭합니다.
roles/artifactregistry.reader
역할을 부여하려면 역할 선택을 클릭하고 제품 또는 서비스별에서Artifact Registry
를 선택한 다음 역할에서Artifact Registry Reader
를 선택합니다.저장을 클릭합니다. 주 구성원에게 역할이 부여됩니다.
GKE 샘플 애플리케이션의 서비스 계정을 만들려면 서비스 계정 페이지로 이동합니다. 서비스 계정으로 이동
프로젝트를 선택합니다.
'
PROJECT_ID
' 프로젝트의 서비스 계정 페이지에서 서비스 계정 만들기를 클릭합니다.서비스 계정 만들기 페이지의 서비스 계정 세부정보 섹션에서 서비스 계정 이름 필드에
GSA_NAME
(예:gke-alloydb-gsa
)을 입력합니다.만들고 계속하기를 클릭합니다.
서비스 계정 만들기 페이지의 이 서비스 계정에 프로젝트에 대한 액세스 권한 부여 (선택사항) 섹션이 표시됩니다.
roles/alloydb.client
역할을 부여하려면 다음 단계를 따르세요.- 역할 선택을 클릭합니다.
- 제품 또는 서비스별에서
Cloud AlloyDB
를 선택합니다. - 역할에서
Cloud AlloyDB Client
를 선택합니다.
다른 역할 추가를 클릭합니다.
roles/serviceusage.serviceUsageConsumer
역할을 부여하려면 역할 선택을 클릭하고 제품 또는 서비스별에서Service Usage
를 선택한 다음 역할에서Service Usage Consumer
를 선택합니다.완료를 클릭합니다. Google 서비스 계정에 역할이 부여됩니다.
gcloud
Compute Engine이 Artifact Registry에서 읽을 수 있도록 기본 Google 서비스 계정에 필요한 권한을 부여하려면 다음을 실행합니다.
PROGECT_NUM=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)") gcloud projects add-iam-policy-binding PROJECT_ID --member="serviceAccount:$PROGECT_NUM-compute@developer.gserviceaccount.com" --role="roles/artifactregistry.reader"
애플리케이션의 Google 서비스 계정을 만들려면 IAM 서비스 계정을 만드세요.
gcloud iam service-accounts create GSA_NAME \ --display-name="gke-tutorial-service-account"
GSA_NAME
을 새 IAM 서비스 계정의 이름(예:gke-alloydb-gsa
)으로 바꿉니다.애플리케이션 GSA에
alloydb.client
및serviceusage.serviceUsageConsumer
역할을 부여하려면 다음 명령어를 사용합니다.gcloud projects add-iam-policy-binding PROJECT_ID --member=serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com --role="roles/alloydb.client" gcloud projects add-iam-policy-binding PROJECT_ID --member=serviceAccount:GSA_NAME@PROJECT_ID.iam.gserviceaccount.com --role="roles/serviceusage.serviceUsageConsumer"
샘플 애플리케이션에 GKE용 워크로드 아이덴티티 제휴 구성
GKE용 워크로드 아이덴티티 제휴 기능을 사용하여 AlloyDB 인증 프록시에 서비스 계정을 제공하도록 GKE를 구성해야 합니다. 이 메서드를 사용하면 Kubernetes 서비스 계정을 Google 서비스 계정에 바인딩할 수 있습니다. 그러면 일치하는 Kubernetes 서비스 계정을 사용하는 애플리케이션에서 Google 서비스 계정에 액세스할 수 있게 됩니다.
Google 서비스 계정은 Google Cloud에서 애플리케이션을 나타내는 IAM ID입니다. Kubernetes 서비스 계정은 Google Kubernetes Engine 클러스터에서 애플리케이션을 나타내는 ID입니다.
GKE용 워크로드 아이덴티티 제휴는 Kubernetes 서비스 계정을 Google 서비스 계정에 결합합니다. 이 결합을 사용하면 해당 Kubernetes 서비스 계정이 있는 모든 배포가 Google Cloud와 상호작용할 때 Google 서비스 계정으로 인증됩니다.
gcloud
Google Cloud 콘솔에서 Cloud Shell을 엽니다.
Cloud Shell에서 클러스터의 사용자 인증 정보를 가져옵니다.
gcloud container clusters get-credentials GKE_CLUSTER_ID --region REGION --project PROJECT_ID
이 명령어는 생성한 GKE 클러스터를 사용하도록
kubectl
을 구성합니다.원하는 편집기에서 다음 단계를 완료합니다.
nano를 사용하여
service-account.yaml
를 엽니다. 예를 들면 다음과 같습니다.nano service-account.yaml
편집기에 다음 콘텐츠를 붙여넣습니다.
apiVersion: v1 kind: ServiceAccount metadata: name: KSA_NAME
KSA_NAME
을 서비스 계정 이름(예:ksa-alloydb
)으로 바꿉니다.Control+O를 누르고 Enter 키를 눌러 변경사항을 저장한 다음 Control+X를 눌러 편집기를 종료합니다.
샘플 애플리케이션의 Kubernetes 서비스 계정을 만듭니다.
kubectl apply -f service-account.yaml
두 서비스 계정 간에 IAM 정책 바인딩을 만들어 Kubernetes 서비스 계정이 Google 서비스 계정을 가장할 수 있는 권한을 부여합니다.
gcloud iam service-accounts add-iam-policy-binding \ --role="roles/iam.workloadIdentityUser" \ --member="serviceAccount:PROJECT_ID.svc.id.goog[default/KSA_NAME]" \ GSA_NAME@PROJECT_ID.iam.gserviceaccount.com
Google 서비스 계정의 이메일 주소를 사용하여 Kubernetes 서비스 계정에
iam.gke.io/gcp-service-account=GSA_NAME@PROJECT_ID
주석을 추가합니다.kubectl annotate serviceaccount \ KSA_NAME \ iam.gke.io/gcp-service-account=GSA_NAME@PROJECT_ID.iam.gserviceaccount.com
샘플 애플리케이션의 이미지로 Artifact Registry 채우기
gcloud
Cloud Shell에서 다음 명령어를 사용하여 GitHub의 샘플
gke-alloydb-app
애플리케이션 코드가 포함된 저장소를 클론합니다.git clone https://github.com/GoogleCloudPlatform/alloydb-auth-proxy && cd alloydb-auth-proxy/examples/go
Artifact Registry에 Docker 이미지 저장소를 만듭니다.
gcloud artifacts repositories create REPOSITORY_ID --location REGION --repository-format=docker --project PROJECT_ID
다음을 바꿉니다.
PROJECT_ID
: 프로젝트의 ID입니다.REPOSITORY_ID
: 저장소 이름입니다(예:gke-alloydb-sample-app
).
Cloud Shell 승인 대화상자에서 승인을 클릭합니다. 이전에 이 단계를 완료한 경우 이 메시지가 표시되지 않습니다.
Docker 컨테이너를 빌드하고 Artifact Registry에 게시하려면 다음 명령어를 사용하세요.
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_ID/SAMPLE_APPLICATION --project PROJECT_ID
다음을 바꿉니다.
PROJECT_ID
: 프로젝트의 ID입니다.REPOSITORY_ID
: 저장소 이름입니다(예:gke-alloydb-sample-app
).SAMPLE_APPLICATION
: 샘플 웹 애플리케이션의 이름입니다(예:gke-alloydb-app
).
Kubernetes 보안 비밀 만들기
샘플 애플리케이션에서 사용할 데이터베이스, 사용자, 사용자 비밀번호의 Kubernetes 보안 비밀을 만듭니다. 각 보안 비밀의 값은 이 튜토리얼의 기본 인스턴스에 연결하고 AlloyDB 데이터베이스 및 사용자 만들기 단계에서 지정된 값을 기반으로 합니다. 자세한 내용은 보안 비밀을 참고하세요.
gcloud
gke-alloydb-secret
와 같은 Kubernetes SECRET
를 사용하여 연결 정보를 저장합니다.
kubectl create secret generic SECRET \
--from-literal=database=DATABASE_NAME \
--from-literal=username=USERNAME \
--from-literal=password=DATABASE_PASSWORD
사이드카 패턴으로 AlloyDB 프록시 배포 및 실행
다음과 같은 이유로 애플리케이션과 Pod를 공유하는 추가 컨테이너로 sidecar
패턴에서 AlloyDB 프록시를 실행하는 것이 좋습니다.
- SQL 트래픽이 로컬에 노출되지 않도록 합니다. AlloyDB 프록시는 발신 연결에 암호화를 제공하지만 수신 연결의 노출을 제한해야 합니다.
- 단일 장애점을 방지합니다. 데이터베이스에 대한 각 애플리케이션의 액세스는 다른 애플리케이션에 대해 독립적이므로 복원력이 더 우수합니다.
- AlloyDB 프록시에 대한 액세스를 제한하여 데이터베이스를 전체 클러스터에 노출하지 않고 애플리케이션별로 IAM 권한을 사용할 수 있습니다.
- 리소스 요청 범위를 더 정확하게 지정할 수 있습니다. AlloyDB 프록시는 사용량에 비례하여 리소스를 소비하므로 이 패턴을 사용하면 확장되는 애플리케이션에 맞게 리소스 범위를 더 정확하게 지정하고 요청할 수 있습니다.
- 명령어 섹션에서 지정한 DB_PORT에서
127.0.0.1
을 사용하여 연결되도록 애플리케이션을 구성할 수 있습니다.
GKE 클러스터를 만들고 애플리케이션의 컨테이너 이미지를 빌드한 후 컨테이너화된 애플리케이션을 GKE 클러스터에 배포합니다.
gcloud
이 튜토리얼에서는 AlloyDB를 데이터 스토어로 사용하는 샘플 투표 수집 웹 애플리케이션 gke-alloydb-app
를 배포합니다.
AlloyDB 프록시가 연결할 AlloyDB 기본 인스턴스의 인스턴스 연결 INSTANCE_URI를 가져옵니다.
gcloud alloydb instances describe INSTANCE_ID \ --cluster=CLUSTER_ID \ --region=REGION \ --format="value(name)"
다음을 바꿉니다.
INSTANCE_ID
: 인스턴스의 이름입니다(예:alloydb-primary
).CLUSTER_ID
: 클러스터의 이름입니다(예:alloydb-cluster
).
출력에는 이 섹션의 2.b 단계에서
proxy_sidecar_deployment.yaml
정의 파일에 지정한 INSTANCE_URI가 포함됩니다.원하는 편집기(예: nano)에서 다음 단계를 완료합니다.
원하는 편집기(예: nano)를 사용하여
proxy_sidecar_deployment.yaml
를 엽니다.nano proxy_sidecar_deployment.yaml
편집기에 다음 콘텐츠를 붙여넣습니다.
apiVersion: apps/v1 kind: Deployment metadata: name: gke-alloydb spec: selector: matchLabels: app: SAMPLE_APPLICATION template: metadata: labels: app: SAMPLE_APPLICATION spec: serviceAccountName: KSA_NAME containers: - name: SAMPLE_APPLICATION # Replace <PROJECT_ID> and <REGION> with your project ID and region. image: REGION-docker.pkg.dev/PROJECT_ID/REPOSITORY_ID/SAMPLE_APPLICATION:latest imagePullPolicy: Always # This app listens on port 8080 for web traffic by default. ports: - containerPort: 8080 env: - name: PORT value: "8080" # This project uses environment variables to determine # how you would like to run your application # To use the Go connector (recommended) - use INSTANCE NAME # To use TCP - Setting INSTANCE_HOST will use TCP (e.g., 127.0.0.1) - name: INSTANCE_HOST value: "127.0.0.1" - name: DB_PORT value: "5432" # To use Automatic IAM Authentication (recommended) # use DB_IAM_USER instead of DB_USER # you may also remove the DB_PASS environment variable - name: DB_USER valueFrom: secretKeyRef: name: SECRET key: username - name: DB_PASS valueFrom: secretKeyRef: name: SECRET key: password - name: DB_NAME valueFrom: secretKeyRef: name: SECRET key: database # If you are using the Go connector (recommended), you can # remove alloydb-proxy (everything below this line) - name: alloydb-proxy # This uses the latest version of the AlloyDB Auth proxy # It is recommended to use a specific version for production environments. # See: https://github.com/GoogleCloudPlatform/alloydb-auth-proxy image: gcr.io/alloydb-connectors/alloydb-auth-proxy:1.10.1 command: - "/alloydb-auth-proxy" #AlloyDB instance name as parameter for the AlloyDB proxy # Use <INSTANCE_URI> - "INSTANCE_URI" securityContext: # The default AlloyDB Auth proxy image runs as the # "nonroot" user and group (uid: 65532) by default. runAsNonRoot: true resources: requests: # The proxy's memory use scales linearly with the number of active # connections. Fewer open connections will use less memory. Adjust # this value based on your application's requirements. memory: "2Gi" # The proxy's CPU use scales linearly with the amount of IO between # the database and the application. Adjust this value based on your # application's requirements. cpu: "1"
INSTANCE_URI
을 1단계의 AlloyDB 기본 인스턴스 경로(예:projects/PROJECT_ID/locations/REGION/clusters/CLUSTER_ID/instances/INSTANCE_ID
)로 바꿉니다.Control+O를 누르고 Enter 키를 눌러 변경사항을 저장한 다음 Control+X를 눌러 편집기를 종료합니다.
gke-alloydb-app
애플리케이션을 배포하려면 이전 단계에서 만든proxy_sidecar_deployment.yaml
정의 파일을 적용합니다.kubectl apply -f proxy_sidecar_deployment.yaml
포드의 두 컨테이너 상태가 모두
running
인지 확인합니다.kubectl get pods
샘플 출력:
NAME READY STATUS RESTARTS AGE gke-alloydb-8d59bb4cc-62xgh 2/2 Running 0 2m53s
샘플
gke-alloydb-app
애플리케이션에 연결하려면 외부 HTTP 부하 분산기와 같은 서비스를 사용합니다. 원하는 편집기에서 다음 단계를 따르세요.nano를 사용하여
service.yaml
를 엽니다. 예를 들면 다음과 같습니다.nano service.yaml
nano 편집기에서 다음 콘텐츠를 붙여넣습니다.
apiVersion: v1 kind: Service metadata: name: SAMPLE_APPLICATION spec: type: LoadBalancer selector: app: SAMPLE_APPLICATION ports: - port: 80 targetPort: 8080
SAMPLE_APPLICATION
을 샘플 웹 애플리케이션 이름(예:gke-alloydb-app
)으로 바꿉니다.Control+O를 누르고 Enter 키를 눌러 변경사항을 저장한 다음 Control+X를 눌러 편집기를 종료합니다.
서비스
gke-alloydb-app
애플리케이션을 배포하려면service.yaml
파일을 적용합니다.kubectl apply -f service.yaml
서비스의 외부 IP 주소를 포함한 서비스 세부정보를 가져오려면 다음 명령어를 사용하세요.
kubectl get service
샘플 출력:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE gke-alloydb-app LoadBalancer 34.118.229.246 35.188.16.172 80:32712/TCP 45s kubernetes ClusterIP 34.118.224.1 <none> 443/TCP 85m
이전 단계의 외부 IP 값을 사용하여 다음 URL에서 샘플 애플리케이션에 액세스합니다.
http://EXTERNAL-IP
샘플 구성 파일
proxy_sidecar_deployment.yaml
service.yaml
service-account.yaml
삭제
이 튜토리얼에서 사용된 리소스의 비용이 Google Cloud 계정에 청구되지 않게 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하되 개별 리소스를 삭제합니다.
프로젝트 삭제
비용이 청구되지 않도록 하는 가장 쉬운 방법은 튜토리얼에서 만든 프로젝트를 삭제하는 것입니다.
프로젝트를 삭제하는 방법은 다음과 같습니다.
Google Cloud 콘솔에서 리소스 관리 페이지로 이동합니다.
프로젝트 목록에서 삭제할 프로젝트를 선택하고 삭제를 클릭합니다.
대화상자에서
PROJECT_ID
를 입력한 다음 종료를 클릭하여 프로젝트를 삭제합니다.