์ด ํ์ด์ง์๋ Cloud Run์์ ์คํ๋๋ ์๋น์ค์์ Cloud SQL ์ธ์คํด์ค์ ์ฐ๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ๋ณด์ ์์๊ฐ ์์ต๋๋ค.
Cloud SQL์ ์ฐ๊ฒฐ๋ Cloud Run ์ํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ๋จ๊ณ๋ณ ์๋ด๋ ๋น ๋ฅธ ์์: Cloud Run์์ ์ฐ๊ฒฐ์ ์ฐธ๊ณ ํ์ธ์.
Cloud SQL์ ํด๋ผ์ฐ๋์์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ค์ , ์ ์ง, ๊ด๋ฆฌํ ์ ์๋ ์์ ๊ด๋ฆฌํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋น์ค์ ๋๋ค.
Cloud Run์ Google Cloud ์ธํ๋ผ์์ ์ง์ ์ปจํ ์ด๋๋ฅผ ์คํํ ์ ์๊ฒ ํด์ฃผ๋ ๊ด๋ฆฌํ ์ปดํจํ ํ๋ซํผ์ ๋๋ค.
Cloud SQL ์ธ์คํด์ค ์ค์
- ์์ง ์ฌ์ฉ ์ค์ ํ์ง ์์์ผ๋ฉด ์ฐ๊ฒฐ ์ค์ธ Google Cloud ํ๋ก์ ํธ์์ Cloud SQL Admin API๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
- PostgreSQL์ฉ Cloud SQL ์ธ์คํด์ค๋ฅผ ๋ง๋์ธ์. ์ง์ฐ ์๊ฐ์ ๊ฐ์ ํ๊ณ , ์ผ๋ถ ๋คํธ์ํน ๋น์ฉ ๋ฐ์์ ๋ฐฉ์งํ๊ณ , ๋ฆฌ์ ๊ฐ ์ฅ์ ์ํ์ ์ค์ด๋ ค๋ฉด Cloud Run ์๋น์ค์ ๋์ผํ ๋ฆฌ์ ์ ์๋ Cloud SQL ์ธ์คํด์ค ์์น๋ฅผ ์ ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก Cloud SQL์ ๊ณต๊ฐ IP ์ฃผ์๋ฅผ ์ ์ธ์คํด์ค์ ํ ๋นํฉ๋๋ค. ๋น๊ณต๊ฐ IP ์ฃผ์๋ฅผ ํ ๋นํ ์๋ ์์ต๋๋ค. ๋ ์ต์ ์ ์ฐ๊ฒฐ ์ต์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ฐ๊ฒฐ ๊ฐ์ ํ์ด์ง๋ฅผ ์ฐธ์กฐํ์ธ์.
- ์ธ์คํด์ค๋ฅผ ๋ง๋ค ๋ ์ธ์คํด์ค์ ์๋ฒ ์ธ์ฆ์(CA) ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์ ํํ ๋ค์ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์ธ์คํด์ค์
serverCaMode
๋ก ๊ตฌ์ฑํ ์ ์์ต๋๋ค. ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฐ๊ฒฐํ ์ธ์คํด์ค์ ์๋ฒ CA ๋ชจ๋๋ก ์ธ์คํด์ค๋ณ CA ์ต์ (GOOGLE_MANAGED_INTERNAL_CA
)์ ์ ํํด์ผ ํฉ๋๋ค.
Cloud Run ๊ตฌ์ฑ
Cloud Run์ ๊ตฌ์ฑํ๋ ๋จ๊ณ๋ Cloud SQL ์ธ์คํด์ค์ ํ ๋น๋ IP ์ฃผ์ ์ ํ์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค. ๋ชจ๋ ์ด๊ทธ๋ ์ค ํธ๋ํฝ์ ์ง์ VPC ์ด๊ทธ๋ ์ค๋ ์๋ฒ๋ฆฌ์ค VPC ์ก์ธ์ค ์ปค๋ฅํฐ๋ฅผ ํตํด ๋ผ์ฐํ ํ๋ ๊ฒฝ์ฐ ๋น๊ณต๊ฐ IP ์ฃผ์๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ ๊ฐ์ง ๋คํธ์ํฌ ์ด๊ทธ๋ ์ค ๋ฐฉ๋ฒ์ ๋น๊ตํฉ๋๋ค.๊ณต๊ฐ IP(๊ธฐ๋ณธ๊ฐ)
- ์ธ์คํด์ค์ ๊ณต๊ฐ IP ์ฃผ์๊ฐ ์๋์ง ํ์ธํฉ๋๋ค. Google Cloud ์ฝ์์ ์ธ์คํด์ค ๊ฐ์ ํ์ด์ง์์ ์ด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค. ๊ณต๊ฐ IP ์ฃผ์๋ฅผ ์ถ๊ฐํด์ผ ํ๋ ๊ฒฝ์ฐ ๊ณต๊ฐ IP ๊ตฌ์ฑ ํ์ด์ง์ ์๋ด๋ฅผ ์ฐธ๊ณ ํ์ธ์.
- ์ธ์คํด์ค์ INSTANCE_CONNECTION_NAME์ ๊ฐ์ ธ์ต๋๋ค. Google Cloud ์ฝ์์ ์ธ์คํด์ค ๊ฐ์ ํ์ด์ง์์ ๋๋ ๋ค์
gcloud sql instances describe
๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ์ด ๊ฐ์ ํ์ธํ ์ ์์ต๋๋ค. INSTANCE_NAME์ Cloud SQL ์ธ์คํด์ค ์ด๋ฆ์ผ๋ก ๋ฐ๊ฟ๋๋ค.gcloud sql instances describe INSTANCE_NAME
- Cloud Run ์๋น์ค์ CLOUD_RUN_SERVICE_ACCOUNT_NAME์ ๊ฐ์ ธ์ต๋๋ค. Google Cloud ์ฝ์์์ Cloud Run ์๋น์ค๋ฅผ ํธ์คํ
ํ๋ ํ๋ก์ ํธ์ IAM ํ์ด์ง์์ ๋๋ Cloud Run ์๋น์ค๋ฅผ ํธ์คํ
ํ๋ ํ๋ก์ ํธ์์ ๋ค์
gcloud run services describe
๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ์ด ๊ฐ์ ์ฐพ์ ์ ์์ต๋๋ค. ๋ค์ ๋ณ์๋ฅผ ๋ฐ๊ฟ๋๋ค.gcloud run services describe CLOUD_RUN_SERVICE_NAME --region CLOUD_RUN_SERVICE_REGION --format="value(spec.template.spec.serviceAccountName)"
- CLOUD_RUN_SERVICE_NAME: Cloud Run ์๋น์ค ์ด๋ฆ
- CLOUD_RUN_SERVICE_REGION: Cloud Run ์๋น์ค ๋ฆฌ์
- Cloud Run ์๋น์ค์ ์๋น์ค ๊ณ์ ์ ๊ตฌ์ฑํฉ๋๋ค. Cloud SQL์ ์ฐ๊ฒฐํ๋ ค๋ฉด ์๋น์ค ๊ณ์ ์
Cloud SQL Client
IAM ์ญํ ์ด ์๋์ง ํ์ธํฉ๋๋ค. - Cloud SQL ์ฐ๊ฒฐ์ ์ ์๋น์ค์ ์ถ๊ฐํ๋ ค๋ฉด ์๋น์ค๋ฅผ ์ปจํ ์ด๋ํํ์ฌ Container Registry ๋๋ Artifact Registry์ ์ ๋ก๋ํด์ผ ํฉ๋๋ค. ์์ง ์ฐ๊ฒฐ๋์ด ์์ง ์๋ค๋ฉด ์ปจํ ์ด๋ ์ด๋ฏธ์ง ๋น๋ ๋ฐ ๋ฐฐํฌ์ ๋ํ ๋ค์ ์๋ด๋ฅผ ์ฐธ์กฐํ์ธ์.
์๋ฒ CA ๋ชจ๋๊ฐ ๊ณต์ ์ธ์ฆ ๊ธฐ๊ด(CA)(
GOOGLE_MANAGED_CAS_CA
) ์ต์ ๋๋ ๊ณ ๊ฐ ๊ด๋ฆฌ CA(CUSTOMER_MANAGED_CAS_CA
) ์ต์ ์ผ๋ก ๊ตฌ์ฑ๋ ์ธ์คํด์ค์ ์ฐ๊ฒฐํ๋ ๊ฒฝ์ฐ ์๋น์ค์ ์คํ ํ๊ฒฝ์ ์ ํํ ๋ 2์ธ๋ ์คํ ํ๊ฒฝ์ ์ ํํฉ๋๋ค. ๋ ์๋ฒ CA ๋ชจ๋ ์ต์ ๋ชจ๋ Cloud SQL ์ธ์ฆ ํ๋ก์ v2๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค์ ์ฐ๊ฒฐํด์ผ ํฉ๋๋ค.์๋น์ค๊ฐ 1์ธ๋ ์คํ ํ๊ฒฝ์์ ์คํ๋๋ ๊ฒฝ์ฐ ์๋ฒ CA ๋ชจ๋๊ฐ ์ธ์คํด์ค๋ณ ์ธ์ฆ ๊ธฐ๊ด(CA) ์ต์ (
GOOGLE_MANAGED_INTERNAL_CA
)์ผ๋ก ๊ตฌ์ฑ๋ Cloud SQL ์ธ์คํด์ค์๋ง ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. Cloud Run 1์ธ๋ ์คํ ํ๊ฒฝ์ Cloud SQL ์ธ์ฆ ํ๋ก์ v1์ ์ฝ์ ํฉ๋๋ค. Cloud SQL ์ธ์ฆ ํ๋ก์์ Cloud SQL ์ฐ๊ฒฐ ์๊ตฌ์ฌํญ์ ๋ํ ์์ธํ ๋ด์ฉ์ Cloud SQL ์ธ์ฆ ํ๋ก์ ์ฌ์ฉ ์ ์๊ตฌ์ฌํญ์ ์ฐธ๊ณ ํ์ธ์.
๋ค๋ฅธ ๊ตฌ์ฑ ๋ณ๊ฒฝ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก Cloud SQL ์ฐ๊ฒฐ์ ์ ๊ตฌ์ฑ์ ์ค์ ํ๋ฉด ์ Cloud Run ๋ฒ์ ์ด ์์ฑ๋ฉ๋๋ค. ์ด๋ฅผ ๋ณ๊ฒฝํ๋ ๋ช ์์ ์ ๋ฐ์ดํธ๊ฐ ์์ผ๋ฉด ์ดํ ๋ฒ์ ์์๋ ์ด Cloud SQL ์ฐ๊ฒฐ์ด ์๋์ผ๋ก ์ ์ฉ๋ฉ๋๋ค.
์ฝ์
-
์๋น์ค ๊ตฌ์ฑ์ ์์ํฉ๋๋ค. Cloud SQL ์ฐ๊ฒฐ์ ๊ธฐ์กด ์๋น์ค์ ์ถ๊ฐํ๋ ค๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
- ์๋น์ค ๋ชฉ๋ก์์ ์ํ๋ ์๋น์ค ์ด๋ฆ์ ํด๋ฆญํฉ๋๋ค.
- ์ ๋ฒ์ ์์ ๋ฐ ๋ฐฐํฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- Cloud SQL ์ธ์คํด์ค์ ์ฐ๊ฒฐ ์ฌ์ฉ ์ค์ :
- ์ปจํ ์ด๋์ ์ค์ ์ ์ฐจ๋ก๋๋ก ํด๋ฆญํฉ๋๋ค.
- Cloud SQL ์ฐ๊ฒฐ๋ก ์คํฌ๋กคํฉ๋๋ค.
- ์ฐ๊ฒฐ ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- Cloud SQL Admin API๋ฅผ ์์ง ์ฌ์ฉ ์ค์ ํ์ง ์์์ผ๋ฉด Cloud SQL Admin ์ฌ์ฉ ์ค์ ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.
- ์ฐ๊ฒฐ์ ํ๋ก์ ํธ์ Cloud SQL ์ธ์คํด์ค์ ์ถ๊ฐํ๋ ค๋ฉด ๋ฉ๋ด์์ ์ํ๋ Cloud SQL ์ธ์คํด์ค๋ฅผ ์ ํํฉ๋๋ค.
- ๋ค๋ฅธ ํ๋ก์ ํธ์ Cloud SQL ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋ฉ๋ด์์ ์ปค์คํ ์ฐ๊ฒฐ ๋ฌธ์์ด์ ์ ํํ๊ณ ์ ์ฒด ์ธ์คํด์ค ์ฐ๊ฒฐ ์ด๋ฆ์ PROJECT-ID:REGION:INSTANCE-ID ํ์์ผ๋ก ์ ๋ ฅํฉ๋๋ค.
- ์ฐ๊ฒฐ์ ์ญ์ ํ๋ ค๋ฉด ์ปค์๋ฅผ ์ฐ๊ฒฐ ์ค๋ฅธ์ชฝ์ ๊ฐ์ ธ๊ฐ์ ์ญ์ ์์ด์ฝ์ ํ์ํ๊ณ ํด๋ฆญํฉ๋๋ค.
-
๋ง๋ค๊ธฐ ๋๋ ๋ฐฐํฌ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋ช ๋ น์ค
๋ค์ ๋ช ๋ น์ด ์ค ํ๋๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์๊ณผ ๊ฐ์ด ๋ฐ๊ฟ๋๋ค.
- IMAGE๋ฅผ ๋ฐฐํฌํ ์ด๋ฏธ์ง๋ก ๋ฐ๊ฟ๋๋ค.
- SERVICE_NAME: Cloud Run ์๋น์ค ์ด๋ฆ
-
INSTANCE_CONNECTION_NAME์ Cloud SQL ์ธ์คํด์ค์ ์ธ์คํด์ค ์ฐ๊ฒฐ ์ด๋ฆ ๋๋ ์ผํ๋ก ๊ตฌ๋ถ๋ ์ฐ๊ฒฐ ์ด๋ฆ ๋ชฉ๋ก์ผ๋ก ๋ฐ๊ฟ๋๋ค.
์ ์ปจํ ์ด๋๋ฅผ ๋ฐฐํฌํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๊ธฐ์กด ์๋น์ค๋ฅผ ์ ๋ฐ์ดํธํ๋ ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.gcloud run deploy \ --image=IMAGE \ --add-cloudsql-instances=INSTANCE_CONNECTION_NAME
gcloud run services update SERVICE_NAME \ --add-cloudsql-instances=INSTANCE_CONNECTION_NAME
Terraform
๋ค์ ์ฝ๋๋ ์ฐ๊ฒฐ๋ Cloud SQL ์ธ์คํด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ Cloud Run ์ปจํ ์ด๋๋ฅผ ๋ง๋ญ๋๋ค.
-
terraform apply
๋ฅผ ์ ๋ ฅํ์ฌ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํฉ๋๋ค. - Cloud Run ์๋น์ค๋ฅผ ์ ํํ๊ณ ๋ฒ์ ํญ, ์ฐ๊ฒฐ ํญ์ ์ฐจ๋ก๋ก ํด๋ฆญํ์ฌ ๋ณ๊ฒฝ์ฌํญ์ ํ์ธํฉ๋๋ค.
๋น๊ณต๊ฐ IP
์น์ธ ์๋น์ค ๊ณ์ ์ด Cloud SQL ์ธ์คํด์ค๋ฅผ ํฌํจํ๋ ๊ฒ๊ณผ ๋ค๋ฅธ ํ๋ก์ ํธ์ ์ํ๋ ๊ฒฝ์ฐ ๋ค์์ ์ํํฉ๋๋ค.
- ๋ ํ๋ก์ ํธ ๋ชจ๋์์ Cloud SQL Admin API๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
- Cloud SQL ์ธ์คํด์ค๊ฐ ํฌํจ๋ ํ๋ก์ ํธ์ ์๋น์ค ๊ณ์ ์ IAM ๊ถํ์ ์ถ๊ฐํฉ๋๋ค.
- ์์์ ๋ง๋ Cloud SQL ์ธ์คํด์ค์ ๋น๊ณต๊ฐ IP ์ฃผ์๊ฐ ์๋์ง ํ์ธํฉ๋๋ค. ๋ด๋ถ IP ์ฃผ์๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด ๋น๊ณต๊ฐ IP ๊ตฌ์ฑ์ ์ฐธ๊ณ ํ์ธ์.
- ์ด๊ทธ๋ ์ค ๋ฐฉ๋ฒ์ ๊ตฌ์ฑํ์ฌ Cloud SQL ์ธ์คํด์ค์ ๋์ผํ VPC ๋คํธ์ํฌ์ ์ฐ๊ฒฐํฉ๋๋ค. ๋ค์ ์กฐ๊ฑด์ ์ฐธ๊ณ ํ์ธ์.
- ์ง์ VPC ์ด๊ทธ๋ ์ค์ ์๋ฒ๋ฆฌ์ค VPC ์ก์ธ์ค ๋ชจ๋ Cloud VPN ๋ฐ VPC ๋คํธ์ํฌ ํผ์ด๋ง์ ํตํด ์ฐ๊ฒฐ๋ VPC ๋คํธ์ํฌ์์ ํต์ ์ ์ง์ํฉ๋๋ค.
- ์ง์ VPC ์ด๊ทธ๋ ์ค์ ์๋ฒ๋ฆฌ์ค VPC ์ก์ธ์ค๋ ๊ธฐ์กด ๋คํธ์ํฌ๋ฅผ ์ง์ํ์ง ์์ต๋๋ค.
- ๊ณต์ VPC๋ฅผ ์ฌ์ฉํ์ง ์๋ ํ ์ปค๋ฅํฐ๋ ์ปค๋ฅํฐ๋ฅผ ์ฌ์ฉํ๋ ๋ฆฌ์์ค์ ๋์ผํ ํ๋ก์ ํธ์ ๋ฆฌ์ ์ ์์ด์ผ ํ์ง๋ง ์ด ์ปค๋ฅํฐ๋ ์๋ก ๋ค๋ฅธ ๋ฆฌ์ ์ ๋ฆฌ์์ค๋ก ํธ๋ํฝ์ ์ ์กํ ์ ์์ต๋๋ค.
- ์ธ์คํด์ค์ ๋น๊ณต๊ฐ IP ์ฃผ์์ ํฌํธ
5432
๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐํฉ๋๋ค.
Cloud SQL์ ์ฐ๊ฒฐ
Cloud Run์ ๊ตฌ์ฑํ ํ Cloud SQL ์ธ์คํด์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
๊ณต๊ฐ IP(๊ธฐ๋ณธ๊ฐ)
๊ณต๊ฐ IP ๊ฒฝ๋ก์ ๊ฒฝ์ฐ Cloud Run์ ์ํธํ๋ฅผ ์ ๊ณตํ๊ณ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก Cloud SQL ์ธ์ฆ ํ๋ก์๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐํฉ๋๋ค.
- Unix ์์ผ์ ํตํด
- Cloud SQL ์ปค๋ฅํฐ๋ฅผ ์ฌ์ฉํ์ฌ
Secret Manager ์ฌ์ฉ
Secret Manager๋ฅผ ์ฌ์ฉํ์ฌ SQL ์ฌ์ฉ์ ์ธ์ฆ ์ ๋ณด์ ๊ฐ์ ๋ฏผ๊ฐํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด ์ข์ต๋๋ค. Cloud Run์ ์ฌ์ฉํ์ฌ ๋ณด์ ๋น๋ฐ์ ํ๊ฒฝ ๋ณ์๋ก ์ ๋ฌํ๊ฑฐ๋ ๋ณผ๋ฅจ์ผ๋ก ๋ง์ดํธํ ์ ์์ต๋๋ค.
Secret Manager์์ ๋ณด์ ๋น๋ฐ์ ๋ง๋ ํ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด ์๋น์ค๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
๋ช ๋ น์ค
gcloud run services update SERVICE_NAME \ --add-cloudsql-instances=INSTANCE_CONNECTION_NAME --update-env-vars=INSTANCE_CONNECTION_NAME=INSTANCE_CONNECTION_NAME_SECRET \ --update-secrets=DB_USER=DB_USER_SECRET:latest \ --update-secrets=DB_PASS=DB_PASS_SECRET:latest \ --update-secrets=DB_NAME=DB_NAME_SECRET:latest
Terraform
๋ค์์ google_secret_manager_secret
๋ฐ google_secret_manager_secret_version
์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ์, ๋น๋ฐ๋ฒํธ, ์ด๋ฆ ๊ฐ์ ์์ ํ๊ฒ ๋ณด๊ดํ๋ ๋ณด์ ๋น๋ฐ ๋ฆฌ์์ค๋ฅผ ๋ง๋ญ๋๋ค. ๊ฐ ๋ณด์ ๋น๋ฐ์ ์ก์ธ์คํ๋ ค๋ฉด ํ๋ก์ ํธ ์ปดํจํ
์๋น์ค ๊ณ์ ์ ์
๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
์ ๋ณด์ ๋น๋ฐ์ ํฌํจํ๋๋ก ๊ธฐ๋ณธ Cloud Run ๋ฆฌ์์ค๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค.
terraform apply
๋ฅผ ์
๋ ฅํ์ฌ ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฉํฉ๋๋ค.
์ด ์์ ๋ช ๋ น์ด๋ ๋ณด์ ๋น๋ฐ ๋ฒ์ latest๋ฅผ ์ฌ์ฉํฉ๋๋ค. ํ์ง๋ง ๋ณด์ ๋น๋ฐ์ ํน์ ๋ฒ์ ์ธ SECRET_NAME:v1์ ๊ณ ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋น๊ณต๊ฐ IP
๋น๊ณต๊ฐ IP ๊ฒฝ๋ก์ ๊ฒฝ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ VPC ๋คํธ์ํฌ๋ฅผ ํตํด ์ธ์คํด์ค์ ์ง์ ์ฐ๊ฒฐ๋ฉ๋๋ค. ์ด ๋ฉ์๋๋ TCP๋ฅผ ์ฌ์ฉํ์ฌ Cloud SQL ์ธ์ฆ ํ๋ก์๋ฅผ ์ฌ์ฉํ์ง ์๊ณ Cloud SQL ์ธ์คํด์ค์ ์ง์ ์ฐ๊ฒฐํฉ๋๋ค.
TCP๋ก ์ฐ๊ฒฐ
Cloud SQL ์ธ์คํด์ค์ ๋น๊ณต๊ฐ IP ์ฃผ์๋ฅผ ํธ์คํธ ๋ฐ ํฌํธ 5432
๋ก ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐํฉ๋๋ค.
Python
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์คํธ์์ ์ด ์ค๋ํซ์ ๋ณด๋ ค๋ฉด GitHub์ README๋ฅผ ์ฐธ๊ณ ํ์ธ์.
Java
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์คํธ์์ ์ด ์ค๋ํซ์ ๋ณด๋ ค๋ฉด GitHub์ README๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์ฐธ๊ณ :
- CLOUD_SQL_CONNECTION_NAME์ <MY-PROJECT>:<INSTANCE-REGION>:<INSTANCE-NAME>์ผ๋ก ํํ๋์ด์ผ ํฉ๋๋ค.
- ์ธ์ ipTypes=PRIVATE์ ์ฌ์ฉํ๋ฉด SocketFactory๊ฐ ์ธ์คํด์ค์ ์ฐ๊ฒฐ๋ ๋น๊ณต๊ฐ IP์ ๊ฐ์ ๋ก ์ฐ๊ฒฐ๋ฉ๋๋ค.
- pom.xml ํ์ผ์ ๋ํ JDBC ์์ผ ํฉํ ๋ฆฌ ๋ฒ์ ์๊ตฌ์ฌํญ์ ์ฐธ๊ณ ํ์ธ์.
Node.js
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์คํธ์์ ์ด ์ค๋ํซ์ ๋ณด๋ ค๋ฉด GitHub์ README๋ฅผ ์ฐธ๊ณ ํ์ธ์.
Go
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์คํธ์์ ์ด ์ค๋ํซ์ ๋ณด๋ ค๋ฉด GitHub์ README๋ฅผ ์ฐธ๊ณ ํ์ธ์.
C#
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์คํธ์์ ์ด ์ค๋ํซ์ ๋ณด๋ ค๋ฉด GitHub์ README๋ฅผ ์ฐธ์กฐํ์ธ์.
Ruby
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์คํธ์์ ์ด ์ค๋ํซ์ ๋ณด๋ ค๋ฉด GitHub์ README๋ฅผ ์ฐธ๊ณ ํ์ธ์.
PHP
์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์คํธ์์ ์ด ์ค๋ํซ์ ๋ณด๋ ค๋ฉด GitHub์ README๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๊ถ์ฅ์ฌํญ ๋ฐ ๊ธฐํ ์ ๋ณด
๋ก์ปฌ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ ์คํธํ ๋ Cloud SQL ์ธ์ฆ ํ๋ก์๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์์ธํ ๋ด์ฉ์ ๋น ๋ฅธ ์์: Cloud SQL ์ธ์ฆ ํ๋ก์ ์ฌ์ฉ์ ์ฐธ๊ณ ํ์ธ์.
Docker ์ปจํ ์ด๋๋ฅผ ํตํด Cloud SQL ํ๋ก์๋ฅผ ์ฌ์ฉํ์ฌ ํ ์คํธํ ์๋ ์์ต๋๋ค.
์ฐ๊ฒฐ ํ
๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ฐ๊ฒฐ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ ์์ฒด ๋๋ ํ๋ซํผ ์ธํ๋ผ์ ์ํด ์ค๋จ๋ ์ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ์ด ์ค๋จ๋์์ ๋ ์๋์ผ๋ก ๋ค์ ์ฐ๊ฒฐํ๋ ์ฐ๊ฒฐ ํ์ ์ง์ํ๋ ํด๋ผ์ด์ธํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค. Cloud SQL ์ธ์คํด์ค์์ ๊ด๋ฆฌํ ์ฐ๊ฒฐ ํ๋ง์ ์ฌ์ฉํ๋ฉด ํ๋ง์ ์ฌ์ฉํ์ฌ Cloud SQL ์ธ์คํด์ค์ ๋ฆฌ์์ค ์ฌ์ฉ๋ฅ ๊ณผ ์ฐ๊ฒฐ ์ง์ฐ ์๊ฐ์ ์ต์ ํํ์ฌ ์ํฌ๋ก๋๋ฅผ ํ์ฅํ ์ ์์ต๋๋ค. ๊ด๋ฆฌํ ์ฐ๊ฒฐ ํ๋ง์ ๋ํ ์์ธํ ๋ด์ฉ์ ๊ด๋ฆฌํ ์ฐ๊ฒฐ ํ๋ง ๊ฐ์๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฐ๊ฒฐ ํ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ์์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๊ด๋ฆฌ ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์ธ์.์ฐ๊ฒฐ ํ๋
Cloud SQL์ MySQL๊ณผ PostgreSQL ๋ฒ์ ๋ชจ๋ ๋์ ์ฐ๊ฒฐ ์์ ์ต๋ ํ๋๋ฅผ ์ ์ฉํฉ๋๋ค. ์ด๋ฌํ ํ๋๋ ์ ํํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ง์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค(Cloud SQL ํ ๋น๋ ๋ฐ ํ๋ ํ์ด์ง ์ฐธ์กฐ).Cloud Run ์ปจํ ์ด๋ ์ธ์คํด์ค๋ Cloud SQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ์ฐ๊ฒฐ์ด 100๊ฐ๋ก ์ ํ๋ฉ๋๋ค. Cloud Run ์๋น์ค ๋๋ ์์ ์ ๊ฐ ์ธ์คํด์ค๋ 100๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ์ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ์ด ์๋น์ค ๋๋ ์์ ์ด ํ์ฅ๋จ์ ๋ฐ๋ผ ๋ฐฐํฌ๋น ์ด ์ฐ๊ฒฐ ์๊ฐ ๋์ด๋ ์ ์์ต๋๋ค.
์ฐ๊ฒฐ ํ์ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค๋น ์ฌ์ฉ๋๋ ์ต๋ ์ฐ๊ฒฐ ์๋ฅผ ์ ํํ ์ ์์ต๋๋ค. ์ฐ๊ฒฐ ์๋ฅผ ์ ํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ธํ ์์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ ๊ด๋ฆฌ ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์ธ์.
API ํ ๋น๋ ํ๋
Cloud Run์ Cloud SQL Admin API๋ฅผ ์ฌ์ฉํ๋ Cloud SQL ์ธ์ฆ ํ๋ก์๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐํ๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํฉ๋๋ค. API ํ ๋น๋ ํ๋๊ฐ Cloud SQL ์ธ์ฆ ํ๋ก์์ ์ ์ฉ๋ฉ๋๋ค. ์ฌ์ฉ๋ Cloud SQL Admin API ํ ๋น๋์ ํ ๋ฒ์ ๋ฐฐํฌ๋ ํน์ ์๋น์ค์ Cloud Run ์ธ์คํด์ค ์๋ก ๊ตฌ์ฑ๋ Cloud SQL ์ธ์คํด์ค ์์ ์ฝ 2๋ฐฐ์ ๋๋ค. Cloud Run ์ธ์คํด์ค ์๋ฅผ ์ ํํ๊ฑฐ๋ ๋๋ ค ์ฌ์ฉ๋๋ ์์ API ํ ๋น๋์ ์์ ํ ์ ์์ต๋๋ค.๋ค์ ๋จ๊ณ
- Cloud Run ์์ธํ ์์๋ณด๊ธฐ
- ์ปจํ ์ด๋ ์ด๋ฏธ์ง ๋น๋ ๋ฐ ๋ฐฐํฌ ์์ธํ ์์๋ณด๊ธฐ
- PostgreSQL๊ณผ ํจ๊ป Cloud Run์ ์ฌ์ฉํ๊ธฐ ์ํ Python ์ ์ฒด ์์ ์ฐธ์กฐ