์ด ํ์ด์ง์์๋ Cloud SQL ์ธ์คํด์ค์์ ๋น๊ณต๊ฐ IP๋ฅผ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
๋น๊ณต๊ฐ IP์ ์๋ ๋ฐฉ์๊ณผ ํ๊ฒฝ, ๊ด๋ฆฌ ์๊ตฌ์ฌํญ์ ๋น๊ณต๊ฐ IP๋ฅผ ์ฐธ์กฐํ์ธ์.
์์ํ๊ธฐ ์ ์
API ๋ฐ IAM ์๊ตฌ์ฌํญ
- Google Cloud ํ๋ก์ ํธ์ Service Networking API๋ฅผ ์ฌ์ฉ ์ค์ ํด์ผ ํฉ๋๋ค.
- ๋น๊ณต๊ฐ ์๋น์ค ์ก์ธ์ค ์ฐ๊ฒฐ์ ๊ด๋ฆฌํ๋ ค๋ฉด ์ฌ์ฉ์์๊ฒ ๋ค์ Identity and Access Management(IAM) ๊ถํ์ด ์์ด์ผ ํฉ๋๋ค. ํ์ํ ๊ถํ์ด ์์ผ๋ฉด ๊ถํ ๋ถ์กฑ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
compute.networks.list
compute.addresses.create
compute.addresses.list
servicenetworking.services.addPeering
๋ํ ๊ณต์ VPC ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ฌ์ฉ์๋ฅผ ํธ์คํธ ํ๋ก์ ํธ์ ์ถ๊ฐํ๊ณ ํธ์คํธ ํ๋ก์ ํธ์์ ์ฌ์ฉ์์๊ฒ ๋์ผํ ๊ถํ์ ํ ๋นํด์ผ ํฉ๋๋ค.
๊ณต์ VPC ๋คํธ์ํฌ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ํธ์คํธ ํ๋ก์ ํธ์๋ ์ด API๋ฅผ ์ฌ์ฉ ์ค์ ํด์ผ ํฉ๋๋ค.
๋น๊ณต๊ฐ ์๋น์ค ์ก์ธ์ค
ํ๋ก์ ํธ์์ ์ Virtual Private Cloud(VPC) ๋คํธ์ํฌ๋ฅผ ๋ง๋ค ๋๋ ๋น๊ณต๊ฐ ์๋น์ค ์ก์ธ์ค๋ฅผ ๊ตฌ์ฑํ์ฌ IP ์ฃผ์ ๋ฒ์๋ฅผ ํ ๋นํ๊ณ ๋น๊ณต๊ฐ ์๋น์ค ์ฐ๊ฒฐ์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด VPC ๋คํธ์ํฌ์ ๋ฆฌ์์ค๋ฅผ Cloud SQL ์ธ์คํด์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. Google Cloud ์ฝ์์ ์ด ๊ตฌ์ฑ์ ์ค์ ํ๋ ๋ฐ ๋์์ด ๋๋ ๋ง๋ฒ์ฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
๋น๊ณต๊ฐ IP๋ฅผ ์ฌ์ฉํ๋๋ก ์ธ์คํด์ค ๊ตฌ์ฑ
์ธ์คํด์ค๋ฅผ ๋ง๋ค ๋ ๋๋ ๊ธฐ์กด ์ธ์คํด์ค์ ๋น๊ณต๊ฐ IP๋ฅผ ์ฌ์ฉํ๋๋ก Cloud SQL ์ธ์คํด์ค๋ฅผ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
์ ์ธ์คํด์ค์ ๋น๊ณต๊ฐ IP ๊ตฌ์ฑ
Cloud SQL ์ธ์คํด์ค๋ฅผ ๋ง๋ค ๋ ์ด ์ธ์คํด์ค์์ ๋น๊ณต๊ฐ IP๋ฅผ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
Console
-
Google Cloud ์ฝ์์์ Cloud SQL ์ธ์คํด์ค ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
- ์ธ์คํด์ค ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ๊ตฌ์ฑ ์ต์ ํ์๋ฅผ ํผ์นฉ๋๋ค.
- ์ฐ๊ฒฐ์ ํผ์นฉ๋๋ค.
- ๋น๊ณต๊ฐ IP๋ฅผ ์ ํํฉ๋๋ค.
๋๋กญ๋ค์ด ๋ชฉ๋ก์ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ ์๋ VPC ๋คํธ์ํฌ๊ฐ ํ์๋ฉ๋๋ค. ํ๋ก์ ํธ๊ฐ ๊ณต์ VPC์ ์๋น์ค ํ๋ก์ ํธ์ด๋ฉด ํธ์คํธ ํ๋ก์ ํธ์ VPC ๋คํธ์ํฌ๋ ํ์๋ฉ๋๋ค.
- ์ฌ์ฉํ VPC ๋คํธ์ํฌ๋ฅผ ์ ํํฉ๋๋ค.
- ์ฐ๊ฒฐ ์ค์ ์ ํด๋ฆญํฉ๋๋ค.
- IP ๋ฒ์ ํ ๋น ์น์
์์ ๋ค์ ์ต์
์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
- ํ๋ ์ด์์ ๊ธฐ์กด IP ๋ฒ์๋ฅผ ์ ํํ๊ฑฐ๋ ๋๋กญ๋ค์ด์์ ์ ๋ฒ์๋ฅผ ๋ง๋ญ๋๋ค. ๋๋กญ๋ค์ด์ ์ด์ ์ ํ ๋น๋ ๋ฒ์(์๋ ๊ฒฝ์ฐ)๊ฐ ํฌํจ๋๊ฑฐ๋ ์ IP ๋ฒ์ ํ ๋น์ ์ ํํ๊ณ ์ ๋ฒ์์ ์ด๋ฆ์ ์ ๋ ฅํ ์ ์์ต๋๋ค.
- ๋คํธ์ํฌ์ ์๋์ผ๋ก ํ ๋น๋ IP ๋ฒ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ๊ณ์์ ํด๋ฆญํฉ๋๋ค.
- ์ฐ๊ฒฐ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
Private service connection for network VPC_NETWORK_NAME has been successfully created
๋ฉ์์ง๊ฐ ํ์๋๋์ง ํ์ธํฉ๋๋ค.- ํ์ํ ๊ฒฝ์ฐ ์ฐ๊ฒฐ์ ์ฌ์ฉํ ์ธ์คํด์ค์ ํ ๋น๋ IP ๋ฒ์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
- ํ ๋น๋ IP ๋ฒ์ ์ต์ ํ์๋ฅผ ํผ์นฉ๋๋ค.
- ๋๋กญ๋ค์ด ๋ฉ๋ด์์ IP ๋ฒ์๋ฅผ ์ ํํฉ๋๋ค.
- (์ ํ์ฌํญ) BigQuery์ ๊ฐ์ ๋ค๋ฅธ Google Cloud ์๋น์ค์์ Cloud SQL์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๊ณ ๋น๊ณต๊ฐ IP ์ฐ๊ฒฐ์ ํตํด ์ด ๋ฐ์ดํฐ์ ๋ํด ์ฟผ๋ฆฌ๋ฅผ ์ํํ๋๋ก ํ์ฉํ๋ ค๋ฉด ๋น๊ณต๊ฐ ๊ฒฝ๋ก ์ฌ์ฉ ์ค์ ์ ์ ํํฉ๋๋ค.
- ์ธ์คํด์ค ๊ตฌ์ฑ์ ์๋ฃํฉ๋๋ค.
- ์ธ์คํด์ค ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
๋น๊ณต๊ฐ ์๋น์ค ์ฐ๊ฒฐ์ ์ค์ ํด์ผ ํ๋ค๋ ๋ฉ์์ง๊ฐ ํ์๋๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
gcloud
๋น๊ณต๊ฐ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ธฐ ์ ์ ํ๋ก์ ํธ๊ฐ ๋น๊ณต๊ฐ ์๋น์ค ์ก์ธ์ค๋ฅผ ์ํด ๊ตฌ์ฑ๋์๋์ง ํ์ธํฉ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
INSTANCE_ID
: ์ธ์คํด์ค ID์ ๋๋ค.PROJECT_ID
: ํ๋ก์ ํธ ID์ ๋๋ค.NETWORK_PROJECT_ID
: VPC ๋คํธ์ํฌ์ ํ๋ก์ ํธ ID์ ๋๋ค.VPC_NETWORK_NAME
: VPC ๋คํธ์ํฌ์ ์ด๋ฆ์ ๋๋ค.RANGE_NAME
: ์ ํ์ฌํญ. ์ง์ ํ๋ฉด IP ๋ฒ์๊ฐ ํ ๋น๋๋ ๋ฒ์ ์ด๋ฆ์ด ์ค์ ๋ฉ๋๋ค. ๋ฒ์ ์ด๋ฆ์RFC-1035
๋ฅผ ์ค์ํด์ผ ํ๋ฉฐ 1~63(์๋ฌธ ๊ธฐ์ค)์ ์ด๋ด์ฌ์ผ ํฉ๋๋ค.DATABASE_VERSION
: PostgreSQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒ์ ์ ๋๋ค(์:POSTGRES_14
).NUMBER_OF_CPU
: CPU ์์ ๋๋ค.MEMORY_IN_GB
: ๋ฉ๋ชจ๋ฆฌ ์ฉ๋(GB)์ ๋๋ค.REGION_NAME
: ๋ฆฌ์ ์ด๋ฆ์ ๋๋ค.
--network
ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ณต๊ฐ IP๋ฅผ ์ฌ์ฉ ์ค์งํ๋ ค๋ฉด --no-assign-ip
ํ๋๊ทธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋๋ ์ํ๋ ๊ฒฝ์ฐ --enable-google-private-path
ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ์ฌ BigQuery์ ๊ฐ์ ๋ค๋ฅธ Google Cloud ์๋น์ค์์ Cloud SQL์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๊ณ ๋น๊ณต๊ฐ IP ์ฐ๊ฒฐ์ ํตํด ์ด ๋ฐ์ดํฐ์ ๋ํด ์ฟผ๋ฆฌ๋ฅผ ์ํํ๋๋ก ํ์ฉํฉ๋๋ค. ์ด ๋งค๊ฐ๋ณ์๋ ๋ค์ ๊ฒฝ์ฐ์๋ง ์ ํจํฉ๋๋ค.
--no-assign-ip
ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.--network
ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋น๊ณต๊ฐ ์ฐ๊ฒฐ์ ๋ง๋๋ ๋ฐ ์ฌ์ฉํ VPC ๋คํธ์ํฌ์ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค.
gcloud beta sql instances create INSTANCE_ID \ --project=PROJECT_ID \ --network=projects/NETWORK_PROJECT_ID/global/networks/VPC_NETWORK_NAME \ --no-assign-ip \ --allocated-ip-range-name=RANGE_NAME \ --enable-google-private-path \ --database-version=DATABASE_VERSION \ --cpu=NUMBER_OF_CPU \ --memory=MEMORY_IN_GB \ --region=REGION_NAME
Terraform
์ ์ธ์คํด์ค์ ๋น๊ณต๊ฐ IP๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด ๋ค์ Terraform ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํฉ๋๋ค.
google_compute_network
google_compute_global_address
google_service_networking_connection
google_sql_database_instance
๋ณ๊ฒฝ์ฌํญ ์ ์ฉ
ํ๋ก์ ํธ์ Terraform ๊ตฌ์ฑ์ ์ ์ฉํ๋ ค๋ฉด Google Cloud ๋ค์ ์น์ ์ ๋จ๊ณ๋ฅผ ์๋ฃํ์ธ์.
Cloud Shell ์ค๋น
- Cloud Shell์ ์คํํฉ๋๋ค.
-
Terraform ๊ตฌ์ฑ์ ์ ์ฉํ ๊ธฐ๋ณธ Google Cloud ํ๋ก์ ํธ๋ฅผ ์ค์ ํฉ๋๋ค.
์ด ๋ช ๋ น์ด๋ ํ๋ก์ ํธ๋น ํ ๋ฒ๋ง ์คํํ๋ฉด ๋๋ฉฐ ์ด๋ค ๋๋ ํฐ๋ฆฌ์์๋ ์คํํ ์ ์์ต๋๋ค.
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform ๊ตฌ์ฑ ํ์ผ์์ ๋ช ์์ ๊ฐ์ ์ค์ ํ๋ฉด ํ๊ฒฝ ๋ณ์๊ฐ ์ฌ์ ์๋ฉ๋๋ค.
๋๋ ํฐ๋ฆฌ ์ค๋น
๊ฐ Terraform ๊ตฌ์ฑ ํ์ผ์๋ ์์ฒด ๋๋ ํฐ๋ฆฌ(๋ฃจํธ ๋ชจ๋์ด๋ผ๊ณ ๋ ํจ)๊ฐ ์์ด์ผ ํฉ๋๋ค.
-
Cloud Shell์์ ๋๋ ํฐ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ํด๋น ๋๋ ํฐ๋ฆฌ ๋ด์ ์ ํ์ผ์ ๋ง๋์ธ์. ํ์ผ ์ด๋ฆ์๋
.tf
ํ์ฅ์๊ฐ ์์ด์ผ ํฉ๋๋ค(์:main.tf
). ์ด ํํ ๋ฆฌ์ผ์์๋ ํ์ผ์main.tf
๋ผ๊ณ ํฉ๋๋ค.mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
ํํ ๋ฆฌ์ผ์ ๋ฐ๋ผ ํ๋ ๊ฒฝ์ฐ ๊ฐ ์น์ ์ด๋ ๋จ๊ณ์์ ์ํ ์ฝ๋๋ฅผ ๋ณต์ฌํ ์ ์์ต๋๋ค.
์ํ ์ฝ๋๋ฅผ ์๋ก ๋ง๋
main.tf
์ ๋ณต์ฌํฉ๋๋ค.ํ์ํ ๊ฒฝ์ฐ GitHub์์ ์ฝ๋๋ฅผ ๋ณต์ฌํฉ๋๋ค. ์ด๋ Terraform ์ค๋ํซ์ด ์๋ ํฌ ์๋ ์๋ฃจ์ ์ ์ผ๋ถ์ธ ๊ฒฝ์ฐ์ ๊ถ์ฅ๋ฉ๋๋ค.
- ํ๊ฒฝ์ ์ ์ฉํ ์ํ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ฒํ ํ๊ณ ์์ ํฉ๋๋ค.
- ๋ณ๊ฒฝ์ฌํญ์ ์ ์ฅํฉ๋๋ค.
-
Terraform์ ์ด๊ธฐํํฉ๋๋ค. ์ด ์์
์ ๋๋ ํฐ๋ฆฌ๋น ํ ๋ฒ๋ง ์ํํ๋ฉด ๋ฉ๋๋ค.
terraform init
์ํ๋ ๊ฒฝ์ฐ ์ต์ Google ๊ณต๊ธ์ ์ฒด ๋ฒ์ ์ ์ฌ์ฉํ๋ ค๋ฉด
-upgrade
์ต์ ์ ํฌํจํฉ๋๋ค.terraform init -upgrade
๋ณ๊ฒฝ์ฌํญ ์ ์ฉ
-
๊ตฌ์ฑ์ ๊ฒํ ํ๊ณ Terraform์์ ๋ง๋ค๊ฑฐ๋ ์
๋ฐ์ดํธํ ๋ฆฌ์์ค๊ฐ ์์๊ณผ ์ผ์นํ๋์ง ํ์ธํฉ๋๋ค.
terraform plan
ํ์์ ๋ฐ๋ผ ๊ตฌ์ฑ์ ์์ ํฉ๋๋ค.
-
๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ๊ณ ํ๋กฌํํธ์
yes
๋ฅผ ์ ๋ ฅํ์ฌ Terraform ๊ตฌ์ฑ์ ์ ์ฉํฉ๋๋ค.terraform apply
Terraform์ '์ ์ฉ ์๋ฃ' ๋ฉ์์ง๊ฐ ํ์๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.
- ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ค๋ฉด Google Cloud ํ๋ก์ ํธ๋ฅผ ์ฝ๋๋ค. Google Cloud ์ฝ์์์ UI์ ๋ฆฌ์์ค๋ก ์ด๋ํ์ฌ Terraform์ด ๋ฆฌ์์ค๋ฅผ ๋ง๋ค์๊ฑฐ๋ ์ ๋ฐ์ดํธํ๋์ง ํ์ธํฉ๋๋ค.
๋ณ๊ฒฝ์ฌํญ ์ญ์
๋ณ๊ฒฝ์ฌํญ์ ์ญ์ ํ๋ ค๋ฉด ๋ค์ ๋จ๊ณ๋ฅผ ๋ฐ๋ฅด์ธ์.
- Terraform ๊ตฌ์ฑ ํ์ผ์์ ์ญ์ ๋ณดํธ๋ฅผ ์ฌ์ฉ ์ค์งํ๋ ค๋ฉด
deletion_protection
์ธ์๋ฅผfalse
๋ก ์ค์ ํฉ๋๋ค.deletion_protection = "false"
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ์คํํ๊ณ ํ๋กฌํํธ์
yes
๋ฅผ ์ ๋ ฅํ์ฌ ์ ๋ฐ์ดํธ๋ Terraform ๊ตฌ์ฑ์ ์ ์ฉํฉ๋๋ค.terraform apply
-
๋ค์ ๋ช ๋ น์ด๋ฅผ ์คํํ๊ณ ํ๋กฌํํธ์
yes
๋ฅผ ์ ๋ ฅํ์ฌ ์ด์ ์ Terraform ๊ตฌ์ฑ์ ์ ์ฉ๋ ๋ฆฌ์์ค๋ฅผ ์ญ์ ํฉ๋๋ค.terraform destroy
REST v1
๋น๊ณต๊ฐ IP ์ฃผ์๋ก ์ ์ธ์คํด์ค๋ฅผ ๋ง๋ญ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID:: ํ๋ก์ ํธ ID
- INSTANCE_ID:: ์ธ์คํด์ค ID
- VPC_NETWORK_NAME:: ์ด ์ธ์คํด์ค์ ์ฌ์ฉํ๋ ค๋ Virtual Private Cloud(VPC) ๋คํธ์ํฌ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ๋น๊ณต๊ฐ ์๋น์ค ์ก์ธ์ค๊ฐ ์ด๋ฏธ ๋คํธ์ํฌ์ ๊ตฌ์ฑ๋์ด ์์ด์ผ ํฉ๋๋ค.
- RANGE_NAME:: ์ ํ์ฌํญ์
๋๋ค. ์ง์ ํ๋ฉด IP ๋ฒ์๊ฐ ํ ๋น๋๋ ๋ฒ์ ์ด๋ฆ์ด ์ค์ ๋ฉ๋๋ค. ๋ฒ์ ์ด๋ฆ์
RFC-1035
๋ฅผ ์ค์ํด์ผ ํ๋ฉฐ 1~63(์๋ฌธ ๊ธฐ์ค)์ ์ด๋ด์ฌ์ผ ํฉ๋๋ค. - AUTHORIZED_NETWORKS:: ๊ณต๊ฐ IP ์ฐ๊ฒฐ์ ๊ฒฝ์ฐ ์ธ์คํด์ค์ ์ฐ๊ฒฐํ ์ ์๋ ์น์ธ๋ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ์ ์ง์ ํฉ๋๋ค.
ipv4Enabled
๋งค๊ฐ๋ณ์์ ๊ฒฝ์ฐ ์ธ์คํด์ค์ ๊ณต๊ฐ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๊ฐ์ true
๋ก ์ค์ ํ๊ณ , ์ธ์คํด์ค์ ๋น๊ณต๊ฐ IP ์ฃผ์๊ฐ ํฌํจ๋์์ผ๋ฉด false
๋ก ์ค์ ํฉ๋๋ค.
enablePrivatePathForGoogleCloudServices
ํ๋ผ๋ฏธํฐ๋ฅผ true
๋ก ์ค์ ํ๋ฉด BigQuery์ ๊ฐ์ ๋ค๋ฅธ Google Cloud ์๋น์ค์์ Cloud SQL์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๊ณ ๋น๊ณต๊ฐ IP ์ฐ๊ฒฐ์ ํตํด ์ด ๋ฐ์ดํฐ์ ๋ํด ์ฟผ๋ฆฌ๋ฅผ ์ํํ ์ ์์ต๋๋ค. ์ด ํ๋ผ๋ฏธํฐ๋ฅผ false
๋ก ์ค์ ํ๋ฉด ๋ค๋ฅธ Google Cloud ์๋น์ค์์ ๋น๊ณต๊ฐ IP ์ฐ๊ฒฐ์ ํตํด Cloud SQL์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "name": "INSTANCE_ID", "region": "region", "databaseVersion": "database-version", "settings": { "tier": "machine-type", "ipConfiguration": { "ipv4Enabled": false, "privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME", "allocatedIpRange": "RANGE_NAME" "authorizedNetworks": [AUTHORIZED_NETWORKS], "enablePrivatePathForGoogleCloudServices": true } } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
REST v1beta4
๋น๊ณต๊ฐ IP ์ฃผ์๋ก ์ ์ธ์คํด์ค๋ฅผ ๋ง๋ญ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID:: ํ๋ก์ ํธ ID
- INSTANCE_ID:: ์ธ์คํด์ค ID
- VPC_NETWORK_NAME:: ์ด ์ธ์คํด์ค์ ์ฌ์ฉํ๋ ค๋ Virtual Private Cloud(VPC) ๋คํธ์ํฌ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ๋น๊ณต๊ฐ ์๋น์ค ์ก์ธ์ค๊ฐ ์ด๋ฏธ ๋คํธ์ํฌ์ ๊ตฌ์ฑ๋์ด ์์ด์ผ ํฉ๋๋ค.
- RANGE_NAME:: ์ ํ์ฌํญ์
๋๋ค. ์ง์ ํ๋ฉด IP ๋ฒ์๊ฐ ํ ๋น๋๋ ๋ฒ์ ์ด๋ฆ์ด ์ค์ ๋ฉ๋๋ค. ๋ฒ์ ์ด๋ฆ์
RFC-1035
๋ฅผ ์ค์ํด์ผ ํ๋ฉฐ 1~63(์๋ฌธ ๊ธฐ์ค)์ ์ด๋ด์ฌ์ผ ํฉ๋๋ค. - AUTHORIZED_NETWORKS:: ๊ณต๊ฐ IP ์ฐ๊ฒฐ์ ๊ฒฝ์ฐ ์ธ์คํด์ค์ ์ฐ๊ฒฐํ ์ ์๋ ์น์ธ๋ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ์ ์ง์ ํฉ๋๋ค.
ipv4Enabled
๋งค๊ฐ๋ณ์์ ๊ฒฝ์ฐ ์ธ์คํด์ค์ ๊ณต๊ฐ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๊ฐ์ true
๋ก ์ค์ ํ๊ณ , ์ธ์คํด์ค์ ๋น๊ณต๊ฐ IP ์ฃผ์๊ฐ ํฌํจ๋์์ผ๋ฉด false
๋ก ์ค์ ํฉ๋๋ค.
enablePrivatePathForGoogleCloudServices
ํ๋ผ๋ฏธํฐ๋ฅผ true
๋ก ์ค์ ํ๋ฉด BigQuery์ ๊ฐ์ ๋ค๋ฅธ Google Cloud ์๋น์ค์์ Cloud SQL์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๊ณ ๋น๊ณต๊ฐ IP ์ฐ๊ฒฐ์ ํตํด ์ด ๋ฐ์ดํฐ์ ๋ํด ์ฟผ๋ฆฌ๋ฅผ ์ํํ ์ ์์ต๋๋ค. ์ด ํ๋ผ๋ฏธํฐ๋ฅผ false
๋ก ์ค์ ํ๋ฉด ๋ค๋ฅธ Google Cloud ์๋น์ค์์ ๋น๊ณต๊ฐ IP ์ฐ๊ฒฐ์ ํตํด Cloud SQL์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
HTTP ๋ฉ์๋ ๋ฐ URL:
POST https://sqladmin.googleapis.com/v1beta4/projects/PROJECT_ID/instances
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "name": "INSTANCE_ID", "region": "region", "databaseVersion": "database-version", "settings": { "tier": "machine-type", "ipConfiguration": { "ipv4Enabled": false, "privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME", "allocatedIpRange": "RANGE_NAME" "authorizedNetworks": [AUTHORIZED_NETWORKS], "enablePrivatePathForGoogleCloudServices": true } } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
๊ธฐ์กด ์ธ์คํด์ค์ ๋น๊ณต๊ฐ IP ๊ตฌ์ฑ
๊ธฐ์กด Cloud SQL ์ธ์คํด์ค์์ ๋น๊ณต๊ฐ IP๋ฅผ ์ฌ์ฉํ๋๋ก ๊ตฌ์ฑํ๋ฉด ํด๋น ์ธ์คํด์ค๊ฐ ๋ค์ ์์๋๋ฏ๋ก ๋ค์ดํ์์ด ๋ฐ์ํฉ๋๋ค.
๋น๊ณต๊ฐ IP๋ฅผ ์ฌ์ฉํ๋๋ก ๊ธฐ์กด ์ธ์คํด์ค๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด ๋ค์ ์๋ด๋ฅผ ๋ฐ๋ฅด์ธ์.
Console
-
Google Cloud ์ฝ์์์ Cloud SQL ์ธ์คํด์ค ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
- ์ธ์คํด์ค์ ๊ฐ์ ํ์ด์ง๋ฅผ ์ด๋ ค๋ฉด ์ธ์คํด์ค ์ด๋ฆ์ ํด๋ฆญํฉ๋๋ค.
- Cloud SQL ํ์ ๋ฉ๋ด์์ ์ฐ๊ฒฐ์ ์ ํํฉ๋๋ค.
- ๋คํธ์ํน ํญ์์ ๋น๊ณต๊ฐ IP ์ฒดํฌ๋ฐ์ค๋ฅผ ์ ํํฉ๋๋ค.
๋๋กญ๋ค์ด ๋ชฉ๋ก์ ํ๋ก์ ํธ์์ ์ฌ์ฉํ ์ ์๋ ๋คํธ์ํฌ๊ฐ ํ์๋ฉ๋๋ค.
- ์ฌ์ฉํ VPC ๋คํธ์ํฌ๋ฅผ ์ ํํฉ๋๋ค.
- ์ฐ๊ฒฐ ์ค์ ์ ํด๋ฆญํฉ๋๋ค.
- IP ๋ฒ์ ํ ๋น ์น์
์์ ๋ค์ ์ต์
์ค ํ๋๋ฅผ ์ ํํฉ๋๋ค.
- ํ๋ ์ด์์ ๊ธฐ์กด IP ๋ฒ์๋ฅผ ์ ํํ๊ฑฐ๋ ๋๋กญ๋ค์ด์์ ์ ๋ฒ์๋ฅผ ๋ง๋ญ๋๋ค. ๋๋กญ๋ค์ด์ ์ด์ ์ ํ ๋น๋ ๋ฒ์(์๋ ๊ฒฝ์ฐ)๊ฐ ํฌํจ๋๊ฑฐ๋ ์ IP ๋ฒ์ ํ ๋น์ ์ ํํ๊ณ ์ ๋ฒ์์ ์ด๋ฆ์ ์ ๋ ฅํ ์ ์์ต๋๋ค.
- ๋คํธ์ํฌ์ ์๋์ผ๋ก ํ ๋น๋ IP ๋ฒ์๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ๊ณ์์ ํด๋ฆญํฉ๋๋ค.
- ์ฐ๊ฒฐ ๋ง๋ค๊ธฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
VPC_NETWORK_NAME
๋คํธ์ํฌ์ ๋น๊ณต๊ฐ ์๋น์ค ์ฐ๊ฒฐ์ด ์์ฑ๋์์ต๋๋ค. ์ํ๊ฐ ํ์๋๋์ง ํ์ธํฉ๋๋ค.- (์ ํ์ฌํญ) BigQuery์ ๊ฐ์ ๋ค๋ฅธ Google Cloud ์๋น์ค์์ Cloud SQL์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๊ณ ๋น๊ณต๊ฐ IP ์ฐ๊ฒฐ์ ํตํด ์ด ๋ฐ์ดํฐ์ ๋ํด ์ฟผ๋ฆฌ๋ฅผ ์ํํ๋๋ก ํ์ฉํ๋ ค๋ฉด ๋น๊ณต๊ฐ ๊ฒฝ๋ก ์ฌ์ฉ ์ค์ ์ฒดํฌ๋ฐ์ค๋ฅผ ์ ํํฉ๋๋ค.
- ์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
๋น๊ณต๊ฐ ์๋น์ค ์ฐ๊ฒฐ ํ์๊ฐ ํ์๋๋ ๊ฒฝ์ฐ:
gcloud
ํ๋ก์ ํธ๊ฐ ๋น๊ณต๊ฐ ์๋น์ค ์ก์ธ์ค๋ฅผ ์ํด ๊ตฌ์ฑ๋์๋์ง ํ์ธํฉ๋๋ค.
--network
ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํํ VPC ๋คํธ์ํฌ์ ์ด๋ฆ์ ์ง์ ํด Cloud SQL ์ธ์คํด์ค๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค.
gcloud beta sql instances patch INSTANCE_ID \ --project=PROJECT_ID \ --network=projects/NETWORK_PROJECT_ID/global/networks/VPC_NETWORK_NAME \ --no-assign-ip \ --enable-google-private-path
REST v1
๋น๊ณต๊ฐ IP ์ฃผ์๋ก ์ ์ธ์คํด์ค๋ฅผ ๋ง๋ญ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID:: ํ๋ก์ ํธ ID
- INSTANCE_ID:: ์ธ์คํด์ค ID
- VPC_NETWORK_NAME:: ์ด ์ธ์คํด์ค์ ์ฌ์ฉํ๋ ค๋ Virtual Private Cloud(VPC) ๋คํธ์ํฌ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ๋น๊ณต๊ฐ ์๋น์ค ์ก์ธ์ค๊ฐ ์ด๋ฏธ ๋คํธ์ํฌ์ ๊ตฌ์ฑ๋์ด ์์ด์ผ ํฉ๋๋ค.
- RANGE_NAME:: ์ ํ์ฌํญ์
๋๋ค. ์ง์ ํ๋ฉด IP ๋ฒ์๊ฐ ํ ๋น๋๋ ๋ฒ์ ์ด๋ฆ์ด ์ค์ ๋ฉ๋๋ค. ๋ฒ์ ์ด๋ฆ์
RFC-1035
๋ฅผ ์ค์ํด์ผ ํ๋ฉฐ 1~63(์๋ฌธ ๊ธฐ์ค)์ ์ด๋ด์ฌ์ผ ํฉ๋๋ค. - AUTHORIZED_NETWORKS:: ๊ณต๊ฐ IP ์ฐ๊ฒฐ์ ๊ฒฝ์ฐ ์ธ์คํด์ค์ ์ฐ๊ฒฐํ ์ ์๋ ์น์ธ๋ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ์ ์ง์ ํฉ๋๋ค.
ipv4Enabled
๋งค๊ฐ๋ณ์์ ๊ฒฝ์ฐ ์ธ์คํด์ค์ ๊ณต๊ฐ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๊ฐ์ true
๋ก ์ค์ ํ๊ณ , ์ธ์คํด์ค์ ๋น๊ณต๊ฐ IP ์ฃผ์๊ฐ ํฌํจ๋์์ผ๋ฉด false
๋ก ์ค์ ํฉ๋๋ค.
enablePrivatePathForGoogleCloudServices
ํ๋ผ๋ฏธํฐ๋ฅผ true
๋ก ์ค์ ํ๋ฉด BigQuery์ ๊ฐ์ ๋ค๋ฅธ Google Cloud ์๋น์ค์์ Cloud SQL์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๊ณ ๋น๊ณต๊ฐ IP ์ฐ๊ฒฐ์ ํตํด ์ด ๋ฐ์ดํฐ์ ๋ํด ์ฟผ๋ฆฌ๋ฅผ ์ํํ ์ ์์ต๋๋ค. ์ด ํ๋ผ๋ฏธํฐ๋ฅผ false
๋ก ์ค์ ํ๋ฉด ๋ค๋ฅธ Google Cloud ์๋น์ค์์ ๋น๊ณต๊ฐ IP ์ฐ๊ฒฐ์ ํตํด Cloud SQL์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
HTTP ๋ฉ์๋ ๋ฐ URL:
PATCH https://sqladmin.googleapis.com/sql/v1/projects/PROJECT_ID/instances/INSTANCE_ID
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "settings": { "ipConfiguration": { "ipv4Enabled": false, "privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME", "allocatedIpRange": "RANGE_NAME" "authorizedNetworks": [AUTHORIZED_NETWORKS], "enablePrivatePathForGoogleCloudServices": true } } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
REST v1beta4
๋น๊ณต๊ฐ IP ์ฃผ์๋ก ์ ์ธ์คํด์ค๋ฅผ ๋ง๋ญ๋๋ค.
์์ฒญ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๋ค์์ ๋ฐ๊ฟ๋๋ค.
- PROJECT_ID:: ํ๋ก์ ํธ ID
- INSTANCE_ID:: ์ธ์คํด์ค ID
- VPC_NETWORK_NAME:: ์ด ์ธ์คํด์ค์ ์ฌ์ฉํ๋ ค๋ Virtual Private Cloud(VPC) ๋คํธ์ํฌ ์ด๋ฆ์ ์ง์ ํฉ๋๋ค. ๋น๊ณต๊ฐ ์๋น์ค ์ก์ธ์ค๊ฐ ์ด๋ฏธ ๋คํธ์ํฌ์ ๊ตฌ์ฑ๋์ด ์์ด์ผ ํฉ๋๋ค.
- RANGE_NAME:: ์ ํ์ฌํญ์
๋๋ค. ์ง์ ํ๋ฉด IP ๋ฒ์๊ฐ ํ ๋น๋๋ ๋ฒ์ ์ด๋ฆ์ด ์ค์ ๋ฉ๋๋ค. ๋ฒ์ ์ด๋ฆ์
RFC-1035
๋ฅผ ์ค์ํด์ผ ํ๋ฉฐ 1~63(์๋ฌธ ๊ธฐ์ค)์ ์ด๋ด์ฌ์ผ ํฉ๋๋ค. - AUTHORIZED_NETWORKS: ๊ณต๊ฐ IP ์ฐ๊ฒฐ์ ๊ฒฝ์ฐ ์ธ์คํด์ค์ ์ฐ๊ฒฐํ ์ ์๋ ์น์ธ๋ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ์ ์ง์ ํฉ๋๋ค.
ipv4Enabled
๋งค๊ฐ๋ณ์์ ๊ฒฝ์ฐ ์ธ์คํด์ค์ ๊ณต๊ฐ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๊ฐ์ true
๋ก ์ค์ ํ๊ณ , ์ธ์คํด์ค์ ๋น๊ณต๊ฐ IP ์ฃผ์๊ฐ ํฌํจ๋์์ผ๋ฉด false
๋ก ์ค์ ํฉ๋๋ค.
enablePrivatePathForGoogleCloudServices
ํ๋ผ๋ฏธํฐ๋ฅผ true
๋ก ์ค์ ํ๋ฉด BigQuery์ ๊ฐ์ ๋ค๋ฅธ Google Cloud ์๋น์ค์์ Cloud SQL์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ๊ณ ๋น๊ณต๊ฐ IP ์ฐ๊ฒฐ์ ํตํด ์ด ๋ฐ์ดํฐ์ ๋ํด ์ฟผ๋ฆฌ๋ฅผ ์ํํ ์ ์์ต๋๋ค. ์ด ํ๋ผ๋ฏธํฐ๋ฅผ false
๋ก ์ค์ ํ๋ฉด ๋ค๋ฅธ Google Cloud ์๋น์ค์์ ๋น๊ณต๊ฐ IP ์ฐ๊ฒฐ์ ํตํด Cloud SQL์ ๋ฐ์ดํฐ์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
HTTP ๋ฉ์๋ ๋ฐ URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_ID
JSON ์์ฒญ ๋ณธ๋ฌธ:
{ "settings": { "ipConfiguration": { "ipv4Enabled": false, "privateNetwork": "projects/PROJECT_ID/global/networks/VPC_NETWORK_NAME", "allocatedIpRange": "RANGE_NAME" "authorizedNetworks": [AUTHORIZED_NETWORKS], "enablePrivatePathForGoogleCloudServices": true } } }
์์ฒญ์ ๋ณด๋ด๋ ค๋ฉด ๋ค์ ์ต์ ์ค ํ๋๋ฅผ ํผ์นฉ๋๋ค.
๋ค์๊ณผ ๋น์ทํ JSON ์๋ต์ด ํ์๋ฉ๋๋ค.
๋น๊ณต๊ฐ IP๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค์ ์ฐ๊ฒฐ
๋น๊ณต๊ฐ ์๋น์ค ์ก์ธ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋์ผํ VPC ๋คํธ์ํฌ์ Compute Engine ๋๋ Google Kubernetes Engine ์ธ์คํด์ค(์ฌ๊ธฐ์๋ ๋ด๋ถ ์์ค๋ก ์ ์)์์ ๋๋ ํด๋น ๋คํธ์ํฌ์ ์ธ๋ถ(์ธ๋ถ ์์ค)์์ Cloud SQL ์ธ์คํด์ค์ ์ฐ๊ฒฐํฉ๋๋ค.
๋ด๋ถ ์์ค์์ ์ฐ๊ฒฐ
Compute Engine ๋ฆฌ์์ค์์ ์คํ๋๋ Cloud SQL ์ธ์ฆ ํ๋ก์์ ๊ฐ์ด Cloud SQL ์ธ์คํด์ค์ ๋์ผํ Google Cloud ํ๋ก์ ํธ์ ์์ค์์ ์ฐ๊ฒฐํ๋ ค๋ฉด ๋ฆฌ์์ค๊ฐ Cloud SQL ์ธ์คํด์ค์ ๋น๊ณต๊ฐ ์๋น์ค ์ก์ธ์ค๊ฐ ์ค์ ๋ ๋์ผํ VPC ๋คํธ์ํฌ์ ์์ด์ผ ํฉ๋๋ค.
App Engine ํ์ค ํ๊ฒฝ, Cloud Run, Cloud Run Functions์ ๊ฐ์ ์๋ฒ๋ฆฌ์ค ์์ค์์ ์ฐ๊ฒฐํ๊ธฐ ์ํด ์ ํ๋ฆฌ์ผ์ด์ ๋๋ ํจ์๊ฐ Cloud SQL ์ธ์ฆ ํ๋ก์ ์์ด ์๋ฒ๋ฆฌ์ค VPC ์ก์ธ์ค๋ฅผ ํตํด ์ธ์คํด์ค์ ์ง์ ์ฐ๊ฒฐํฉ๋๋ค.
์ธ๋ถ ์์ค์์ ์ฐ๊ฒฐ
์ธ๋ถ ๋คํธ์ํฌ(์: ์จํ๋ ๋ฏธ์ค ๋คํธ์ํฌ ๋๋ VPC ๋คํธ์ํฌ)๊ฐ Cloud SQL ์ธ์คํด์ค๊ฐ ์ฐ๊ฒฐ๋ VPC ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋ ๊ฒฝ์ฐ Cloud VPN ๋๋ Cloud Interconnect๋ฅผ ์ฌ์ฉํ์ฌ ์ธ๋ถ ๋คํธ์ํฌ์ ํด๋ผ์ด์ธํธ์์ ์ธ์คํด์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
์ธ๋ถ ๋คํธ์ํฌ์์ ์ฐ๊ฒฐ์ ํ์ฉํ๋ ค๋ฉด ๋ค์์ ์ํํฉ๋๋ค.
- Cloud VPN ํฐ๋ ๋๋ Dedicated Interconnect ๋๋ Partner Interconnect๋ฅผ ์ํ VLAN ์ฐ๊ฒฐ์ ์ฌ์ฉํ์ฌ VPC ๋คํธ์ํฌ๊ฐ ์ธ๋ถ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ๋์ด ์๋์ง ํ์ธํฉ๋๋ค.
- Cloud VPN ํฐ๋ ๋ฐ Cloud Interconnect ์ฐ๊ฒฐ(VLAN)์ ๊ด๋ฆฌํ๋ Cloud Router์ ๊ฒฝ๊ณ ๊ฒ์ดํธ์จ์ด ํ๋กํ ์ฝ(BGP) ์ธ์
์ด ์จํ๋ ๋ฏธ์ค ๋คํธ์ํฌ์์ ํน์ ํ๋ฆฌํฝ์ค(๋์)๋ฅผ ์์ ํ๋์ง ํ์ธํฉ๋๋ค.
๋คํธ์ํฌ์ ์์ฒด ๋ก์ปฌ ๊ธฐ๋ณธ ๊ฒฝ๋ก๊ฐ ์์ผ๋ฏ๋ก ๊ธฐ๋ณธ ๊ฒฝ๋ก(๋์ 0.0.0.0/0)๋ฅผ Cloud SQL VPC ๋คํธ์ํฌ๋ก ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค. ๋์์ ๋ก์ปฌ ๊ฒฝ๋ก๋ Cloud SQL ํผ์ด๋ง์ด VPC ๋คํธ์ํฌ์์ ์ปค์คํ ๊ฒฝ๋ก๋ฅผ ๊ฐ์ ธ์ค๋๋ก ๊ตฌ์ฑ๋์ด ์๋๋ผ๋ ์ฌ์ฉ๋ฉ๋๋ค.
- ๋น๊ณต๊ฐ ์๋น์ค ์ฐ๊ฒฐ์์ ์์ฑํ ํผ์ด๋ง ์ฐ๊ฒฐ์ ์๋ณํฉ๋๋ค. ์๋น์ค์ ๋ฐ๋ผ ๋น๊ณต๊ฐ ์๋น์ค ์ฐ๊ฒฐ์์ ๋ค์ ํผ์ด๋ง ์ฐ๊ฒฐ ์ค ํ๋ ์ด์์ ๋ง๋ค ์ ์์ง๋ง ๋ฐ๋์ ๋ชจ๋ ํผ์ด๋ง ์ฐ๊ฒฐ์ ๊ตฌ์ฑํ ํ์๋ ์์ต๋๋ค.
cloudsql-mysql-googleapis-com
cloudsql-postgres-googleapis-com
servicenetworking-googleapis-com
- ํผ์ด๋ง ์ฐ๊ฒฐ ๋ชจ๋๋ฅผ ์ ๋ฐ์ดํธํ์ฌ ์ปค์คํ ๊ฒฝ๋ก ๋ด๋ณด๋ด๊ธฐ๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
- ๋น๊ณต๊ฐ ์๋น์ค ์ฐ๊ฒฐ์ ์ฌ์ฉ๋๋ ํ ๋น ๋ฒ์๋ฅผ ์๋ณํฉ๋๋ค.
- Cloud VPN ํฐ๋ ๋๋ Cloud Interconnect ์ฐ๊ฒฐ(VLAN)์ BGP ์ธ์ ์ ๊ด๋ฆฌํ๋ Cloud Router์ ํ ๋น๋ ๋ฒ์์ ๋ํ Cloud Router ์ปค์คํ ๊ณต์ง ๋ชจ๋๋ฅผ ๊ตฌ์ฑํฉ๋๋ค.
Cloud Shell์์ ์ฐ๊ฒฐ
Cloud Shell์ Google Cloud ์์ ๊ด๋ฆฌํ๊ณ VPC ๋คํธ์ํฌ ์ธ๋ถ์ ์๋ Compute Engine ๊ฐ์ ๋จธ์ ์ ์ฌ์ฉํฉ๋๋ค. ๋ฐ๋ผ์ Cloud Shell๊ณผ VPC ๋คํธ์ํฌ์ ๋น๊ณต๊ฐ IP ์ฃผ์ ๊ณต๊ฐ ๊ฐ์ ์ฐ๊ฒฐ ๊ฒฝ๋ก๊ฐ ์์ต๋๋ค.
๊ทธ ๊ฒฐ๊ณผ Cloud Shell์ ๋น๊ณต๊ฐ IP ์ฃผ์๋ง ์๋ Cloud SQL ์ธ์คํด์ค์ ๋ํ ์ฐ๊ฒฐ์ ์ง์ํ์ง ์์ต๋๋ค.
๋น๊ณต๊ฐ IP ์ฐ๊ฒฐ์ ์ฌ์ฉํ์ฌ ์ธ๋ถ ๋คํธ์ํฌ์์ Cloud SQL ์ธ์คํด์ค์ ์ฐ๊ฒฐํ๋ ค๋ฉด VPC ์ธ๋ถ์์ Cloud SQL ์ธ์คํด์ค์ ์ฐ๊ฒฐ์ ์ฐธ์กฐํ์ธ์.
RFC 1918 ์ด์ธ์ IP ์ฃผ์์์ ์ฐ๊ฒฐ
RFC 1918์ ๋ด๋ถ์ ์ผ๋ก(์ฆ, ์กฐ์ง ๋ด์์) ์ฌ์ฉ๋๊ธฐ ์ํด ํ ๋น๋๋ IP ์ฃผ์๋ฅผ ์ง์ ํ๋ฉฐ ์ธํฐ๋ท์์ ๋ผ์ฐํ ํ์ง ์์ต๋๋ค. ๊ตฌ์ฒด์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- 10.0.0.0/8
- 172.16.0.0/12
- 192.168.0.0/16
๋น๊ณต๊ฐ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ Cloud SQL ์ธ์คํด์ค์ ๋ํ ์ฐ๊ฒฐ์ RFC 1918 ์ฃผ์ ๋ฒ์์์ ์๋์ผ๋ก ์น์ธ๋ฉ๋๋ค. ์ด์ ๋ฐ๋ผ ๋ชจ๋ ๋น๊ณต๊ฐ ํด๋ผ์ด์ธํธ๊ฐ ํ๋ก์๋ฅผ ํตํ์ง ์๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ก์ธ์คํ ์ ์์ต๋๋ค.
RFC 1918 ์ด์ธ์ IP ์ฃผ์์์ ์ฐ๊ฒฐํ๋ ค๋ฉด RFC 1918 ์ด์ธ์ IP ์ฃผ์ ๋ฒ์์์ ์ค๋ ํธ๋ํฝ์ ํ์ฉํ๋๋ก ์ธ์คํด์ค๋ณ IP ์น์ธ์ ์ค์ ํด์ผ ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ค์๊ณผ ๊ฐ์ gcloud
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
gcloud sql instances patch INSTANCE_NAME \ --authorized-networks=192.88.99.0/24,11.0.0.0/24
Cloud SQL์ ๊ธฐ๋ณธ์ ์ผ๋ก VPC ๋คํธ์ํฌ์์ RFC 1918 ์ด์ธ์ ์๋ธ๋ท ๊ฒฝ๋ก๋ฅผ ํ์ตํ์ง ์์ต๋๋ค. RFC 1918 ์ด์ธ์ ๊ฒฝ๋ก๋ฅผ ๋ด๋ณด๋ด๋ ค๋ฉด ๋คํธ์ํฌ ํผ์ด๋ง์ Cloud SQL๋ก ์ ๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
gcloud compute networks peerings update cloudsql-postgres-googleapis-com
\
--network=VPC_NETWORK_NAME \
--export-subnet-routes-with-public-ip \
--project=PROJECT_ID
cloudsql-postgres-googleapis-com
์ VPC ๋คํธ์ํฌ ํ์ด์ง์ ๋น๊ณต๊ฐ ์๋น์ค ์ฐ๊ฒฐ ์ด๋ฆ์ ๋๋ค.๋คํธ์ํฌ๋ฅผ ์ ํํ ๋ค์ ๋น๊ณต๊ฐ ์๋น์ค ์ฐ๊ฒฐ ์น์ ์ ์ฐพ์ต๋๋ค.
VPC_NETWORK_NAME
๋ VPC ๋คํธ์ํฌ์ ์ด๋ฆ์ ๋๋ค.PROJECT_ID
๋ VPC ๋คํธ์ํฌ ํ๋ก์ ํธ์ ID์ ๋๋ค. ๊ณต์ VPC๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํธ์คํธ ํ๋ก์ ํธ ID๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ค์์ ๋ฐ๊ฟ๋๋ค.
IP ์ฃผ์ ์์ง์ ์ํํ๋ ค๋ฉด ๋น๊ณต๊ฐ๋ก ์ฌ์ฉ๋๋ ๊ณต๊ฐ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฉ๋๋ค.
๋น๊ณต๊ฐ๋ก ์ฌ์ฉ๋๋ ๊ณต๊ฐ IP ์ฃผ์์์ ์ฐ๊ฒฐ
๋น๊ณต๊ฐ๋ก ์ฌ์ฉ๋๋ ๊ณต๊ฐ IP ์ฃผ์ ๋ฒ์์์ ์ธ์คํด์ค๋ฅผ ๊ตฌ์ฑํ๋ ค๋ฉด ๋คํธ์ํฌ์ Cloud SQL ๋คํธ์ํฌ ๊ฐ์ ๋คํธ์ํฌ ํผ์ด๋ง์์ export-subnet-routes-with-public-ip
๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
gcloud compute networks peerings update cloudsql-postgres-googleapis-com
\
--network=VPC_NETWORK_NAME \
--export-subnet-routes-with-public-ip \
--project=PROJECT_ID
cloudsql-postgres-googleapis-com
์ VPC ๋คํธ์ํฌ ํ์ด์ง์ ๋น๊ณต๊ฐ ์๋น์ค ์ฐ๊ฒฐ ์ด๋ฆ์ ๋๋ค.๋คํธ์ํฌ๋ฅผ ์ ํํ ๋ค์ ๋น๊ณต๊ฐ ์๋น์ค ์ฐ๊ฒฐ ์น์ ์ ์ฐพ์ต๋๋ค.
VPC_NETWORK_NAME
๋ VPC ๋คํธ์ํฌ์ ์ด๋ฆ์ ๋๋ค.PROJECT_ID
๋ VPC ๋คํธ์ํฌ ํ๋ก์ ํธ์ ID์ ๋๋ค. ๊ณต์ VPC๋ฅผ ์ฌ์ฉ ์ค์ด๋ฉด ํธ์คํธ ํ๋ก์ ํธ ID๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ค์์ ๋ฐ๊ฟ๋๋ค.
๋น๊ณต๊ฐ๋ก ์ฌ์ฉ๋๋ ๊ณต๊ฐ IP ์ฃผ์๋ก ๊ตฌ์ฑ๋ ์ธ์คํด์ค์ ์ฐ๊ฒฐ
๋น๊ณต๊ฐ๋ก ์ฌ์ฉ๋๋ ๊ณต๊ฐ IP ์ฃผ์ ๋ฒ์๋ก ๊ตฌ์ฑ๋์ด ์๋ ์ธ์คํด์ค์ ์ฐ๊ฒฐํ๋ ค๋ ๊ฒฝ์ฐ ๋คํธ์ํฌ์ Cloud SQL ๋คํธ์ํฌ ๊ฐ์ ๋คํธ์ํฌ ํผ์ด๋ง์์ import-subnet-routes-with-public-ip
๋ฅผ ์ฌ์ฉ ์ค์ ํฉ๋๋ค.
gcloud compute networks peerings update cloudsql-postgres-googleapis-com
\
--network=VPC_NETWORK_NAME \
--import-subnet-routes-with-public-ip \
--project=PROJECT_ID
๋ค์์ ๋ฐ๊ฟ๋๋ค.
cloudsql-postgres-googleapis-com
์ VPC ๋คํธ์ํฌ ํ์ด์ง์ ๋น๊ณต๊ฐ ์๋น์ค ์ฐ๊ฒฐ ์ด๋ฆ์ ๋๋ค.๋คํธ์ํฌ๋ฅผ ์ ํํ ๋ค์ ๋น๊ณต๊ฐ ์๋น์ค ์ฐ๊ฒฐ ์น์ ์ ์ฐพ์ต๋๋ค.
VPC_NETWORK_NAME
๋ VPC ๋คํธ์ํฌ์ ์ด๋ฆ์ ๋๋ค.PROJECT_ID
๋ VPC ๋คํธ์ํฌ ํ๋ก์ ํธ์ ID์ ๋๋ค. ๊ณต์ VPC๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํธ์คํธ ํ๋ก์ ํธ ID๋ฅผ ์ฌ์ฉํฉ๋๋ค.
์ฐ๊ธฐ ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ฐ๊ฒฐ
๋น๊ณต๊ฐ IP ์ฃผ์ ์ธ์๋ SQL ์ฐ๊ฒฐ ๋ฌธ์์ด์์ ์ฐ๊ธฐ ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. ์ฐ๊ธฐ ์๋ํฌ์ธํธ๋ ํ์ฌ ๊ธฐ๋ณธ ์ธ์คํด์ค์ IP ์ฃผ์๋ก ์๋ ํ์ธ๋๋ ์ ์ญ ๋๋ฉ์ธ ์ด๋ฆ ์๋น์ค(DNS) ์ด๋ฆ์ ๋๋ค. ์ฐ๊ธฐ ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฆฌ์ ์ฅ์ ๊ฐ ๋ฐ์ํ ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฐ๊ฒฐ์ ๋ณ๊ฒฝํ์ง ์์๋ ๋ฉ๋๋ค.
๋ณต์ ๋ณธ ์ฅ์ ์กฐ์น ๋๋ ์ ํ์ด ๋ฐ์ํ๋ฉด ์ฐ๊ธฐ ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค์ ๋น๊ณต๊ฐ IP ์ฃผ์๋ฅผ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์ฐ๊ธฐ ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ๋ณธ ์ธ์คํด์ค ์ญํ ์ ํ๋ ์ธ์คํด์ค์ ์ฐ๊ฒฐํฉ๋๋ค.
Cloud SQL์์ ์ฐ๊ธฐ ์๋ํฌ์ธํธ๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ
Google Cloud ํ๋ก์ ํธ์ Cloud DNS API๋ฅผ ์ฌ์ฉ ์ค์ ํ ํ ๊ธฐ๋ณธ Cloud SQL Enterprise Plus ๋ฒ์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ฑฐ๋ ์ธ์คํด์ค์ ๋ณต์ ๋ณธ์ ์น๊ฒฉํ๊ฑฐ๋ Cloud SQL Enterprise ๋ฒ์ ์์ ์ธ์คํด์ค๋ฅผ ์ ๊ทธ๋ ์ด๋ํ๋ฉด Cloud SQL์์ ์ฐ๊ธฐ ์๋ํฌ์ธํธ๋ฅผ ์๋์ผ๋ก ์์ฑํ์ฌ ์ธ์คํด์ค์ ํ ๋นํฉ๋๋ค.
์์ธํ ๋ด์ฉ์ ์ฐ๊ธฐ ์๋ํฌ์ธํธ ๋ณด๊ธฐ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ธ์คํด์ค์ ์ฐ๊ธฐ ์๋ํฌ์ธํธ ํ ๋น
Google Cloud ํ๋ก์ ํธ์ Cloud DNS API๋ฅผ ์ฌ์ฉ ์ค์ ํ์ง ์์ ๋ค์ ์ธ์คํด์ค๋ฅผ ๋ง๋ค๊ฑฐ๋ ์น๊ฒฉํ๊ฑฐ๋ ์ ๊ทธ๋ ์ด๋ํ๋ฉด Cloud SQL์์ ์ธ์คํด์ค์ ์ฐ๊ธฐ ์๋ํฌ์ธํธ๋ฅผ ์๋์ผ๋ก ํ ๋นํ์ง ์์ต๋๋ค.
Cloud SQL์์ ์ฐ๊ธฐ ์๋ํฌ์ธํธ๋ฅผ ์์ฑํ๊ณ ์ธ์คํด์ค์ ํ ๋นํ๋ ค๋ฉด ์ฐ๊ธฐ ์๋ํฌ์ธํธ ์์ฑ์ ์ฐธ์กฐํ์ธ์.
๋ฌธ์ ํด๊ฒฐ
์๋ ค์ง ์ฐ๊ฒฐ ๋ฌธ์ ๋ ๋ฌธ์ ํด๊ฒฐ์, ์๊ฐ ์ง๋จ์ ๋ํ ๋์์ ์ฐ๊ฒฐ ๋ฌธ์ ๋๋ฒ๊น ์ ์ฐธ์กฐํ์ธ์.
๋ค์ ๋จ๊ณ
- ๋น๊ณต๊ฐ IP ์์ธํ ์์๋ณด๊ธฐ
- ๋น๊ณต๊ฐ ์๋น์ค ์ก์ธ์ค ์์ธํ ์์๋ณด๊ธฐ
- VPC ์๋น์ค ์ ์ด ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์ฐธ์กฐํ์ฌ ์๋น์ค ๊ฒฝ๊ณ ์ถ๊ฐ
- ๋น๊ณต๊ฐ ์๋น์ค ์ก์ธ์ค ๊ตฌ์ฑ ์์ธํ ์์๋ณด๊ธฐ
- Cloud SQL์ฉ ๋น๊ณต๊ฐ ์๋น์ค ์ก์ธ์ค ๊ตฌ์ฑ ์์ธํ ์์๋ณด๊ธฐ
- Cloud VPN ์์ธํ ์์๋ณด๊ธฐ
- VPC ๋คํธ์ํฌ ์์ธํ ์์๋ณด๊ธฐ
- VPC ๋คํธ์ํฌ ํผ์ด๋ง ์์ธํ ์์๋ณด๊ธฐ
- ๊ณต์ VPC ์์ธํ ์์๋ณด๊ธฐ