Cloud Run 작업으로 AlloyDB 데이터베이스 만들기

Cloud Run 작업으로 AlloyDB 데이터베이스 만들기

이 Codelab 정보

subject최종 업데이트: 8월 10, 2022
account_circle작성자: Andrey Shakirov

1. 개요

이 실습에서는 Cloud Run 작업을 사용하여 AlloyDB 데이터베이스를 만듭니다. 비공개 서비스 액세스서버리스 VPC 액세스를 구성하여 비공개 IP를 사용하여 Cloud Run 작업과 AlloyDB 데이터베이스 간의 연결을 사용 설정합니다.

이 실습에서는 다음 작업을 진행하는 방법을 학습합니다.

  • AlloyDB 클러스터 및 인스턴스 설정
  • Cloud Run 작업을 배포하여 AlloyDB 데이터베이스 만들기

2. 설정 및 요구사항

  1. Google Cloud Console에 로그인하여 새 프로젝트를 만들거나 기존 프로젝트를 재사용합니다. 아직 Gmail이나 Google Workspace 계정이 없는 경우 계정을 만들어야 합니다.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • 프로젝트 이름은 이 프로젝트 참가자의 표시 이름입니다. 이는 Google API에서 사용하지 않는 문자열이며 언제든지 업데이트할 수 있습니다.
  • 프로젝트 ID는 모든 Google Cloud 프로젝트에서 고유해야 하며, 변경할 수 없습니다(설정된 후에는 변경할 수 없음). Cloud 콘솔이 고유한 문자열을 자동으로 생성합니다. 보통은 그게 뭔지 상관하지 않습니다. 대부분의 Codelab에서는 프로젝트 ID (일반적으로 PROJECT_ID로 식별됨)를 참조해야 합니다. 생성된 ID가 마음에 들지 않으면 무작위로 다른 ID를 생성할 수 있습니다. 또는 직접 시도해 보고 사용 가능한지 확인할 수도 있습니다. 이 단계 이후에는 변경할 수 없으며 프로젝트 기간 동안 유지됩니다.
  • 참고로 세 번째 값은 일부 API에서 사용하는 프로젝트 번호입니다. 이 세 가지 값에 대한 자세한 내용은 문서를 참고하세요.
  1. 다음으로 Cloud 리소스/API를 사용하려면 Cloud 콘솔에서 결제를 사용 설정해야 합니다. 이 Codelab 실행에는 많은 비용이 들지 않습니다. 이 튜토리얼이 끝난 후에 요금이 청구되지 않도록 리소스를 종료하려면 만든 리소스를 삭제하거나 전체 프로젝트를 삭제하면 됩니다. Google Cloud 새 사용자에게는 미화 $300 상당의 무료 체험판 프로그램에 참여할 수 있는 자격이 부여됩니다.

환경 설정

검색창 오른쪽에 있는 아이콘을 클릭하여 Cloud Shell을 활성화합니다.

eb0157a992f16fa3.png

서비스 API를 사용 설정하려면 아래 명령어를 복사하여 터미널에 붙여넣고 Enter 키를 누르세요.

gcloud services enable \
    alloydb
.googleapis.com \
    artifactregistry
.googleapis.com \
    cloudbuild
.googleapis.com \
    run
.googleapis.com \
    vpcaccess
.googleapis.com \
    compute
.googleapis.com \
    servicenetworking
.googleapis.com \
   
--quiet

환경 변수를 설정합니다.

export PROJECT_ID=$(gcloud config get-value project)
export PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')
export PROJECT_NAME=$(gcloud projects describe $PROJECT_ID --format='value(name)')
export DB_DATABASE=test
export DB_USER=postgres
export DB_PASSWORD=password123
export REGION=us-central1
export CLUSTER=test-cluster
export INSTANCE=test-instance
export VPC_CONNECTOR=vpcconnector

3. AlloyDB 클러스터 설정 및 만들기

설정에 필요한 권한을 설정합니다. 이렇게 하면 Cloud Run 작업이 AlloyDB 데이터베이스에 연결할 수 있습니다.

gcloud projects add-iam-policy-binding $PROJECT_NAME \
 
--member="serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com" \
 
--role="roles/alloydb.client"

비공개 서비스 액세스 구성

비공개 서비스 액세스는 VPC 네트워크와 AlloyDB 리소스 (클러스터 및 인스턴스)가 있는 기본 Google Cloud VPC 네트워크 간의 VPC 피어링 연결로 구현됩니다. 비공개 연결을 사용하면 VPC 네트워크의 리소스가 내부 IP 주소를 사용하여 독점적으로 액세스하는 AlloyDB 리소스와 통신할 수 있습니다. VPC 네트워크의 리소스에는 AlloyDB 리소스에 연결하기 위해 인터넷 액세스나 외부 IP 주소가 필요하지 않습니다.

AlloyDB와 동일한 Cloud 프로젝트에 있는 VPC 네트워크에서 비공개 서비스 액세스 구성을 만들려면 다음 두 가지 작업을 수행합니다.

VPC 네트워크에 할당된 IP 주소 범위를 만듭니다.

gcloud compute addresses create google-managed-services-default \
   
--global \
   
--purpose=VPC_PEERING \
   
--prefix-length=20 \
   
--network=projects/$PROJECT_ID/global/networks/default

VPC 네트워크와 기본 Google Cloud VPC 네트워크 간에 비공개 연결을 만듭니다. 이 단계는 2분 정도 걸립니다.

gcloud services vpc-peerings connect \
   
--service=servicenetworking.googleapis.com \
   
--ranges=google-managed-services-default \
   
--network=default \
   
--project=$PROJECT_ID

AlloyDB 클러스터를 만듭니다.

gcloud beta alloydb clusters create $CLUSTER \
   
--password=$DB_PASSWORD \
   
--network=default \
   
--region=$REGION \
   
--project=$PROJECT_NAME

gcloud beta alloydb clusters describe $CLUSTER
--region=$REGION

AlloyDB 인스턴스를 만듭니다. 이 단계는 10분 정도 걸립니다.

gcloud beta alloydb instances create $INSTANCE \
   
--cluster=$CLUSTER \
   
--region=$REGION \
   
--instance-type=PRIMARY \
   
--cpu-count=2 \
   
--project=$PROJECT_NAME

gcloud beta alloydb instances describe $INSTANCE
\
   
--cluster=$CLUSTER \
   
--region $REGION

Cloud 콘솔에서 생성된 클러스터를 검토합니다.

568d273c0e0d6408.png

데이터베이스 IP 주소를 변수에 저장합니다.""

export DB_HOST=$(gcloud beta alloydb instances describe $INSTANCE \
   
--cluster=$CLUSTER \
   
--region=$REGION \
   
--format=json | jq \
   
--raw-output ".ipAddress")

echo
"DB_HOST=$DB_HOST"

4. Cloud Run 작업 코드 살펴보기

AlloyDB 데이터베이스를 만드는 방법에는 여러 가지가 있습니다. 하나는 Compute Engine VM을 만들고, psql 클라이언트를 설치한 다음 인스턴스에 연결하여 데이터베이스를 만드는 것입니다. 이 접근 방식에 대한 자세한 내용은 여기를 참조하세요.

이 실습에서는 Cloud Run 작업을 사용하여 새 AlloyDB 데이터베이스를 만듭니다.

아래 파일을 검토하세요.

  • Dockerfile - 필수 종속 항목 설치(postgresql-client)
  • Script.sh - 명령줄 유틸리티를 사용하여 데이터베이스 생성

Cloud Shell에서 새 폴더를 만듭니다.

mkdir ~/alloy-db-cloud-run-job
cd ~/
alloy-db-cloud-run-job

새 파일 Dockerfile을 만듭니다.

cat > Dockerfile <<EOF
FROM ubuntu
:latest
RUN apt
-get update && apt-get install -y postgresql-client && apt-get clean
COPY script
.sh /
RUN chmod
+x /script.sh
CMD
["/script.sh"]
ENTRYPOINT
["/bin/bash"]
EOF

아래 콘텐츠로 새 script.sh 파일을 만듭니다.

echo "Connecting to $DB_HOST"
createdb
-h $DB_HOST -p 5432 $PGDB
echo
"Created $PGDB database"

psql
-h $DB_HOST -l

Script.sh의 권한을 변경합니다.

chmod +x script.sh

5. Cloud Run 작업 배포

서버리스 VPC 액세스를 구성합니다. 이렇게 하면 Cloud Run 작업이 내부/비공개 IP를 사용하여 AlloyDB 클러스터와 통신할 수 있습니다. 이 단계는 2분 정도 걸립니다.

gcloud compute networks vpc-access connectors create ${VPC_CONNECTOR} \
   
--region=${REGION} \
   
--range=10.8.0.0/28

컨테이너 이미지를 저장할 Artifact Registry 저장소를 만듭니다.

gcloud artifacts repositories create db-job-repository \
 
--repository-format=docker \
 
--location=$REGION

컨테이너 이미지를 빌드하고 Artifact Registry에 게시

gcloud builds submit -t $REGION-docker.pkg.dev/$PROJECT_NAME/db-job-repository/db-job:latest

Cloud Run 작업을 배포합니다.

gcloud beta run jobs create db-job \
   
--image=$REGION-docker.pkg.dev/$PROJECT_NAME/db-job-repository/db-job:latest \
   
--set-env-vars DB_HOST=$DB_HOST \
   
--set-env-vars PGUSER=$DB_USER \
   
--set-env-vars PGPASSWORD=$DB_PASSWORD \
   
--set-env-vars PGDB=$DB_DATABASE \
   
--vpc-connector $VPC_CONNECTOR \
   
--region $REGION

작업을 만드는 데 사용된 플래그를 검토합니다.

--vpc-connector - Cloud Run 작업이 VPC 커넥터를 사용하여 AlloyDB 비공개 IP 주소에 연결합니다.

Cloud 콘솔에서 생성된 작업을 검토합니다.

93d8224eca8c687f.png

Cloud Run 작업을 실행하여 test 데이터베이스를 만듭니다.

gcloud beta run jobs execute db-job --region $REGION

Cloud 콘솔에서 Cloud Run 작업 로그를 검토합니다.

3f2269736b53f44c.png

6. 축하합니다.

축하합니다. Codelab을 완료했습니다.

학습한 내용

  • AlloyDB 클러스터 및 인스턴스를 만드는 방법
  • Cloud Run 작업을 사용하여 AlloyDB 데이터베이스를 만드는 방법

삭제

이 튜토리얼에서 사용된 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 리소스가 포함된 프로젝트를 삭제하거나 프로젝트를 유지하고 개별 리소스를 삭제하세요.

프로젝트 삭제

비용이 청구되지 않도록 하는 가장 쉬운 방법은 튜토리얼에서 만든 프로젝트를 삭제하는 것입니다.