Compute Engine์—์„œ ์—ฐ๊ฒฐ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” Compute Engine ์ธ์Šคํ„ด์Šค์— ์„ค์น˜๋œ psql ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๋น„๊ณต๊ฐœ IP, ๊ณต๊ฐœ IP, Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ๋˜๋Š” Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ Docker ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Cloud SQL์— ์—ฐ๊ฒฐ๋œ Compute Engine ์ƒ˜ํ”Œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋‹จ๊ณ„๋ณ„ ์•ˆ๋‚ด๋Š” ๋น ๋ฅธ ์‹œ์ž‘: Compute Engine์—์„œ ์—ฐ๊ฒฐ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

์ด ํƒœ์Šคํฌ์—๋Š” Compute Engine ์ธ์Šคํ„ด์Šค๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์•ˆ๋‚ด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Compute Engine ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ ๋ฐ ๊ตฌ์„ฑ์— ๋„์›€์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ Compute Engine ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋น„๊ณต๊ฐœ IP

๋น„๊ณต๊ฐœ IP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Compute Engine ์ธ์Šคํ„ด์Šค์—์„œ Cloud SQL์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋น„๊ณต๊ฐœ ์„œ๋น„์Šค ์•ก์„ธ์Šค๊ฐ€ ์‚ฌ์šฉ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์„ค์ •๋˜์–ด ์žˆ๊ณ  Cloud SQL ์ธ์Šคํ„ด์Šค๊ฐ€ ๋น„๊ณต๊ฐœ IP๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. Compute Engine ์ธ์Šคํ„ด์Šค๋Š” Cloud SQL ์ธ์Šคํ„ด์Šค์™€ ๊ฐ™์€ ๋ฆฌ์ „๊ณผ ๋น„๊ณต๊ฐœ๋กœ ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ๋œ ๋„คํŠธ์›Œํฌ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

1. ๋น„๊ณต๊ฐœ IP๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ธ์Šคํ„ด์Šค ๊ตฌ์„ฑ

๋น„๊ณต๊ฐœ IP ์—ฐ๊ฒฐ ๊ตฌ์„ฑ์˜ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

2. Compute Engine ์ธ์Šคํ„ด์Šค์™€์˜ Cloud Shell ํ„ฐ๋ฏธ๋„ ์—ฐ๊ฒฐ์„ ์—ฝ๋‹ˆ๋‹ค.

์ธ์Šคํ„ด์Šค์˜ ์šด์˜์ฒด์ œ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ์•ˆ๋‚ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Compute Engine ์ธ์Šคํ„ด์Šค๊ฐ€ RHEL ๋˜๋Š” CentOS ๊ณต๊ฐœ ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•  ๊ฒฝ์šฐ SELinux๊ฐ€ ํ”„๋ก์‹œ ์—ฐ๊ฒฐ์„ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” SELinux ๊ธฐ๋Šฅ์ด ์—ฐ๊ฒฐ์„ ํ—ˆ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

RHEL๊ณผ ๊ด€๋ จํ•œ SELinux์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ RHEL ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. CentOS์šฉ SELinux์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ CentOS ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

3. psql ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•„์ง ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด Compute Engine ์ธ์Šคํ„ด์Šค์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

Debian/Ubuntu

ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์—์„œ psql ํด๋ผ์ด์–ธํŠธ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

sudo apt-get update
sudo apt-get install postgresql-client

CentOS/RHEL

ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์—์„œ psql ํด๋ผ์ด์–ธํŠธ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

sudo yum install postgresql

openSUSE

ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์—์„œ psql ํด๋ผ์ด์–ธํŠธ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

sudo zypper install postgresql

๊ธฐํƒ€ ํ”Œ๋žซํผ

  1. PostgreSQL ๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€์—์„œ ํ”Œ๋žซํผ์— ๋งž๋Š” PostgreSQL Core Distribution์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    Core Distribution์—๋Š” psql ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€์˜ ์•ˆ๋‚ด์— ๋”ฐ๋ผ PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

4. psql ํด๋ผ์ด์–ธํŠธ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

psql -h CLOUD_SQL_PRIVATE_IP_ADDRESS -U USERNAME

Cloud SQL ์ธ์Šคํ„ด์Šค ํŽ˜์ด์ง€์—์„œ ๋˜๋Š” ๋‹ค์Œ gcloud ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋น„๊ณต๊ฐœ IP ์ฃผ์†Œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

gcloud sql instances list

๊ณต๊ฐœ IP

๊ณต๊ฐœ IP๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

1. ์•„์ง Compute Engine ์ธ์Šคํ„ด์Šค์— ๊ณ ์ • IPv4 IP ์ฃผ์†Œ๊ฐ€ ์—†์œผ๋ฉด ์ง€๊ธˆ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

IPv6์„ ์‚ฌ์šฉํ•˜์—ฌ Compute Engine์— ์—ฐ๊ฒฐํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ณ ์ • IP ์ฃผ์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Compute Engine ๋ฌธ์„œ์˜ ์ƒˆ ๊ณ ์ • ์™ธ๋ถ€ IP ์ฃผ์†Œ ์˜ˆ์•ฝ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

2. Compute Engine ์ธ์Šคํ„ด์Šค์˜ ๊ณ ์ • IP ์ฃผ์†Œ๋ฅผ Cloud SQL ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋„คํŠธ์›Œํฌ๋กœ ์Šน์ธํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ ๊ณต๊ฐœ IP ์—ฐ๊ฒฐ์„ ํ†ตํ•œ ์•ก์„ธ์Šค ๊ตฌ์„ฑ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

3. Compute Engine ์ธ์Šคํ„ด์Šค์™€์˜ Cloud Shell ํ„ฐ๋ฏธ๋„ ์—ฐ๊ฒฐ์„ ์—ฝ๋‹ˆ๋‹ค.

์ธ์Šคํ„ด์Šค์˜ ์šด์˜์ฒด์ œ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ์•ˆ๋‚ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Compute Engine ์ธ์Šคํ„ด์Šค๊ฐ€ RHEL ๋˜๋Š” CentOS ๊ณต๊ฐœ ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•  ๊ฒฝ์šฐ SELinux๊ฐ€ ํ”„๋ก์‹œ ์—ฐ๊ฒฐ์„ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” SELinux ๊ธฐ๋Šฅ์ด ์—ฐ๊ฒฐ์„ ํ—ˆ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

RHEL๊ณผ ๊ด€๋ จํ•œ SELinux์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ RHEL ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. CentOS์šฉ SELinux์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ CentOS ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

4. psql ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•„์ง ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด Compute Engine ์ธ์Šคํ„ด์Šค์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

Debian/Ubuntu

ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์—์„œ psql ํด๋ผ์ด์–ธํŠธ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

sudo apt-get update
sudo apt-get install postgresql-client

CentOS/RHEL

ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์—์„œ psql ํด๋ผ์ด์–ธํŠธ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

sudo yum install postgresql

openSUSE

ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์—์„œ psql ํด๋ผ์ด์–ธํŠธ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

sudo zypper install postgresql

๊ธฐํƒ€ ํ”Œ๋žซํผ

  1. PostgreSQL ๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€์—์„œ ํ”Œ๋žซํผ์— ๋งž๋Š” PostgreSQL Core Distribution์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    Core Distribution์—๋Š” psql ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€์˜ ์•ˆ๋‚ด์— ๋”ฐ๋ผ PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

5. psql ํด๋ผ์ด์–ธํŠธ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

psql -h CLOUD_SQL_PUBLIC_IP_ADDR -U USERNAME

Cloud SQL ์ธ์Šคํ„ด์Šค ํŽ˜์ด์ง€์—์„œ ๋˜๋Š” ๋‹ค์Œ gcloud ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๊ณต๊ฐœ IP ์ฃผ์†Œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

gcloud sql instances list

SSL์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์˜ ์˜ˆ์‹œ๋Š” SSL๋กœ ์—ฐ๊ฒฐํ•˜๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

6. psql ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

7. ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์—ฐ๊ฒฐ์„ ํ™œ์„ฑํ™” ์ƒํƒœ๋กœ ์œ ์ง€ํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ:

TCP ์—ฐ๊ฒฐ ์œ ์ง€๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ Compute Engine ๋ฌธ์„œ์˜ ์ธ์Šคํ„ด์Šค ๋ฐ ์ธํ„ฐ๋„ท ๊ฐ„์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ธ์Šคํ„ด์Šค์˜ ์—ฐ๊ฒฐ์€ ์ž๋™์œผ๋กœ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค.

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ

Compute Engine์—์„œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

1. Cloud SQL Admin API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

Enable the API

2. ์„œ๋น„์Šค ๊ณ„์ • ๋งŒ๋“ค๊ธฐ.

  1. Google Cloud ์ฝ˜์†”์—์„œ ์„œ๋น„์Šค ๊ณ„์ • ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ์„œ๋น„์Šค ๊ณ„์ •์œผ๋กœ ์ด๋™

  2. Cloud SQL ์ธ์Šคํ„ด์Šค๊ฐ€ ํฌํ•จ๋œ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ์„œ๋น„์Šค ๊ณ„์ • ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ์„œ๋น„์Šค ๊ณ„์ • ์ด๋ฆ„ ํ•„๋“œ์— ์„œ๋น„์Šค ๊ณ„์ •์˜ ์„ค๋ช…์ด ํฌํ•จ๋œ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  5. ์„œ๋น„์Šค ๊ณ„์ • ID๋ฅผ ๊ณ ์œ ํ•˜๊ณ  ์ธ์‹ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•œ ํ›„ ๋งŒ๋“ค๊ณ  ๊ณ„์†ํ•˜๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  6. ์—ญํ•  ์„ ํƒ ํ•„๋“œ๋ฅผ ํด๋ฆญํ•˜๊ณ  ๋‹ค์Œ ์—ญํ•  ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    • Cloud SQL > Cloud SQL ํด๋ผ์ด์–ธํŠธ
    • Cloud SQL > Cloud SQL ํŽธ์ง‘์ž
    • Cloud SQL > Cloud SQL ๊ด€๋ฆฌ์ž
  7. ์™„๋ฃŒ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์„œ๋น„์Šค ๊ณ„์ • ๋งŒ๋“ค๊ธฐ๋ฅผ ๋งˆ์นฉ๋‹ˆ๋‹ค.
  8. ์ƒˆ ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ž‘์—… ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•œ ํ›„ ํ‚ค ๊ด€๋ฆฌ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  9. ํ‚ค ์ถ”๊ฐ€ ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•œ ํ›„ ์ƒˆ ํ‚ค ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  10. ํ‚ค ์œ ํ˜•์ด JSON์ธ์ง€ ํ™•์ธํ•œ ํ›„ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ๋น„๊ณต๊ฐœ ํ‚ค ํŒŒ์ผ์ด ๋จธ์‹ ์— ๋‹ค์šด๋กœ๋“œ๋ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์„ ๋‹ค๋ฅธ ์œ„์น˜๋กœ ์ด๋™ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ‚ค ํŒŒ์ผ์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณด๊ด€ํ•˜์„ธ์š”.

Compute Engine ์ธ์Šคํ„ด์Šค๊ฐ€ Cloud SQL ์ธ์Šคํ„ด์Šค์™€ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ์žˆ๋Š” ๊ฒฝ์šฐ, Cloud SQL ์ธ์Šคํ„ด์Šค๊ฐ€ ํฌํ•จ๋œ ํ”„๋กœ์ ํŠธ์—์„œ ์„œ๋น„์Šค ๊ณ„์ •์— ์ ์ ˆํ•œ ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  1. Google Cloud ์ฝ˜์†”์—์„œ Compute Engine ์ธ์Šคํ„ด์Šค ๋ชฉ๋ก์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Compute Engine ์ธ์Šคํ„ด์Šค ๋ชฉ๋ก์œผ๋กœ ์ด๋™

  2. ํ•„์š”ํ•œ ๊ฒฝ์šฐ Compute Engine ์ธ์Šคํ„ด์Šค์™€ ์—ฐ๊ฒฐ๋œ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. Compute Engine ์ธ์Šคํ„ด์Šค๋ฅผ ์„ ํƒํ•˜์—ฌ ์†์„ฑ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  4. Compute Engine ์ธ์Šคํ„ด์Šค ์†์„ฑ์—์„œ ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฆ„์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  5. Google Cloud ์ฝ˜์†”์—์„œ IAM ๋ฐ ๊ด€๋ฆฌ์ž ํ”„๋กœ์ ํŠธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    IAM ๋ฐ ๊ด€๋ฆฌ์ž ํ”„๋กœ์ ํŠธ ํŽ˜์ด์ง€๋กœ ์ด๋™

  6. Cloud SQL ์ธ์Šคํ„ด์Šค๊ฐ€ ํฌํ•จ๋œ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  7. ์„œ๋น„์Šค ๊ณ„์ • ์ด๋ฆ„์„ ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
  8. ์ด๋ฏธ ์„œ๋น„์Šค ๊ณ„์ •์ด ์žˆ๊ณ  ์ด ๊ณ„์ •์˜ ์—ญํ• ์— cloudsql.instances.connect ๊ถŒํ•œ์ด ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉด 4๋‹จ๊ณ„๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    Cloud SQL Client, Cloud SQL Editor, Cloud SQL Admin ์—ญํ• ์€ ๋ชจ๋‘ ๊ธฐ์กด Editor ๋ฐ Owner ํ”„๋กœ์ ํŠธ ์—ญํ• ๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  9. ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•˜์—ฌ ์„œ๋น„์Šค ๊ณ„์ •์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  10. ์ฃผ ๊ตฌ์„ฑ์› ์ถ”๊ฐ€ ๋Œ€ํ™”์ƒ์ž์—์„œ ์„œ๋น„์Šค ๊ณ„์ • ์ด๋ฆ„์„ ์ง€์ •ํ•˜๊ณ  cloudsql.instances.connect ๊ถŒํ•œ์ด ์žˆ๋Š” ์—ญํ• ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋ทฐ์–ด๋ฅผ ์ œ์™ธํ•˜๊ณ  ์‚ฌ์ „ ์ •์˜๋œ ๋ชจ๋“  Cloud SQL ์—ญํ• ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ๋˜๋Š” ํ”„๋กœ์ ํŠธ > ํŽธ์ง‘์ž๋ฅผ ์„ ํƒํ•˜์—ฌ ๊ธฐ๋ณธ ํŽธ์ง‘์ž ์—ญํ• ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํŽธ์ง‘์ž ์—ญํ• ์—๋Š” Google Cloud์ „๋ฐ˜์— ๋Œ€ํ•œ ๊ถŒํ•œ์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

    ์ด๋Ÿฌํ•œ ์—ญํ• ์ด ํ‘œ์‹œ๋˜์ง€ ์•Š์œผ๋ฉด Google Cloud ์‚ฌ์šฉ์ž์—๊ฒŒ resourcemanager.projects.setIamPolicy ๊ถŒํ•œ์ด ์—†๋Š” ๊ฒƒ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”์˜ IAM ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ณ  ์‚ฌ์šฉ์ž ID๋ฅผ ๊ฒ€์ƒ‰ํ•˜์—ฌ ๊ถŒํ•œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  11. ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์ด์ œ ์ง€์ •ํ•œ ์—ญํ• ์„ ํฌํ•จํ•œ ์„œ๋น„์Šค ๊ณ„์ •์ด ๋‚˜์—ด๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. Compute Engine ์ธ์Šคํ„ด์Šค์™€์˜ ํ„ฐ๋ฏธ๋„ ์—ฐ๊ฒฐ์„ ์—ฝ๋‹ˆ๋‹ค.

์ธ์Šคํ„ด์Šค์˜ ์šด์˜์ฒด์ œ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ์•ˆ๋‚ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Compute Engine ์ธ์Šคํ„ด์Šค๊ฐ€ RHEL ๋˜๋Š” CentOS ๊ณต๊ฐœ ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•  ๊ฒฝ์šฐ SELinux๊ฐ€ ํ”„๋ก์‹œ ์—ฐ๊ฒฐ์„ ์ฐจ๋‹จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” SELinux ๊ธฐ๋Šฅ์ด ์—ฐ๊ฒฐ์„ ํ—ˆ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

RHEL๊ณผ ๊ด€๋ จํ•œ SELinux์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ RHEL ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. CentOS์šฉ SELinux์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ CentOS ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

4. psql ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•„์ง ์„ค์น˜๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋ฉด Compute Engine ์ธ์Šคํ„ด์Šค์— ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

Debian/Ubuntu

ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์—์„œ psql ํด๋ผ์ด์–ธํŠธ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

sudo apt-get update
sudo apt-get install postgresql-client

CentOS/RHEL

ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์—์„œ psql ํด๋ผ์ด์–ธํŠธ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

sudo yum install postgresql

openSUSE

ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ์ž์—์„œ psql ํด๋ผ์ด์–ธํŠธ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

sudo zypper install postgresql

๊ธฐํƒ€ ํ”Œ๋žซํผ

  1. PostgreSQL ๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€์—์„œ ํ”Œ๋žซํผ์— ๋งž๋Š” PostgreSQL Core Distribution์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    Core Distribution์—๋Š” psql ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๋‹ค์šด๋กœ๋“œ ํŽ˜์ด์ง€์˜ ์•ˆ๋‚ด์— ๋”ฐ๋ผ PostgreSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

5. Compute Engine ์ธ์Šคํ„ด์Šค์— Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

Linux 64๋น„ํŠธ

  1. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.0/cloud-sql-proxy.linux.amd64
  2. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์‹คํ–‰ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    chmod +x cloud-sql-proxy

Linux 32๋น„ํŠธ

  1. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.
    curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.0/cloud-sql-proxy.linux.386
  2. curl ๋ช…๋ น์–ด๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์œผ๋ฉด sudo apt install curl์„ ์‹คํ–‰ํ•˜๊ณ  ๋‹ค์šด๋กœ๋“œ ๋ช…๋ น์–ด๋ฅผ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค.
  3. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์‹คํ–‰ ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    chmod +x cloud-sql-proxy

Windows 64๋น„ํŠธ

https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.0/cloud-sql-proxy.x64.exe๋ฅผ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์œผ๋กœ ํด๋ฆญํ•˜๊ณ  ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ๋งํฌ ์ €์žฅ์„ ์„ ํƒํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ์ด๋ฆ„์„ cloud-sql-proxy.exe๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

Windows 32๋น„ํŠธ

https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.18.0/cloud-sql-proxy.x86.exe๋ฅผ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์œผ๋กœ ํด๋ฆญํ•˜๊ณ  ๋‹ค๋ฅธ ์ด๋ฆ„์œผ๋กœ ๋งํฌ ์ €์žฅ์„ ์„ ํƒํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ ์ด๋ฆ„์„ cloud-sql-proxy.exe๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ Docker ์ด๋ฏธ์ง€

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ์—๋Š” distroless, alpine, buster์™€ ๊ฐ™์€ ์„œ๋กœ ๋‹ค๋ฅธ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋Š” ์…ธ์ด ์—†๋Š” distroless๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์…ธ ๋˜๋Š” ๊ด€๋ จ ๋„๊ตฌ๊ฐ€ ํ•„์š”ํ•˜๋ฉด alpine ๋˜๋Š” buster๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ๋ช…๋ น์–ด๋กœ Docker๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ตœ์‹  ์ด๋ฏธ์ง€๋ฅผ ๋กœ์ปฌ ๋จธ์‹ ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.18.0

๊ธฐํƒ€ OS

์—ฌ๊ธฐ์— ํฌํ•จ๋˜์ง€ ์•Š์€ ๋‹ค๋ฅธ ์šด์˜์ฒด์ œ์˜ ๊ฒฝ์šฐ ์†Œ์Šค์—์„œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์ปดํŒŒ์ผํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

6. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์–ธ์–ด ๋ฐ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ TCP ์†Œ์ผ“, Unix ์†Œ์ผ“ ๋˜๋Š” Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ Docker ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋Š” ๋ช…๋ น์ค„์— ์ง€์ •๋œ Cloud SQL ์ธ์Šคํ„ด์Šค ํ•˜๋‚˜ ์ด์ƒ์— ์—ฐ๊ฒฐํ•˜๊ณ  ๋กœ์ปฌ ์—ฐ๊ฒฐ์„ TCP ๋˜๋Š” Unix ์†Œ์ผ“์œผ๋กœ ์—ฝ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ฝ”๋“œ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ํด๋ผ์ด์–ธํŠธ ๋„๊ตฌ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ฐ ์„œ๋น„์Šค๋Š” ์ด๋Ÿฌํ•œ TCP ๋˜๋Š” Unix ์†Œ์ผ“ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด Cloud SQL ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

TCP ์†Œ์ผ“

TCP ์—ฐ๊ฒฐ์˜ ๊ฒฝ์šฐ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ localhost(127.0.0.1)์—์„œ ๋ฆฌ์Šจํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ธ์Šคํ„ด์Šค์— --port PORT_NUMBER๋ฅผ ์ง€์ •ํ•˜๋ฉด ๋กœ์ปฌ ์—ฐ๊ฒฐ์€ 127.0.0.1:PORT_NUMBER์—์„œ ์ด๋ฃจ์–ด์ง‘๋‹ˆ๋‹ค.

๋˜๋Š” ๋กœ์ปฌ ์—ฐ๊ฒฐ์— ๋‹ค๋ฅธ ์ฃผ์†Œ๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๊ฐ€ 0.0.0.0:1234์—์„œ ๋กœ์ปฌ ์—ฐ๊ฒฐ์„ ๋ฆฌ์Šจํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

./cloud-sql-proxy --address 0.0.0.0 --port 1234 INSTANCE_CONNECTION_NAME
  1. INSTANCE_CONNECTION_NAME์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”์˜ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ๊ฐœ์š” ํŽ˜์ด์ง€์—์„œ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

        gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'

    ์˜ˆ๋ฅผ ๋“ค๋ฉด myproject:myregion:myinstance์ž…๋‹ˆ๋‹ค.

  2. ์ธ์Šคํ„ด์Šค์— ๊ณต๊ฐœ ๋ฐ ๋น„๊ณต๊ฐœ IP๊ฐ€ ๋ชจ๋‘ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๊ณ  Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ์—์„œ ๋น„๊ณต๊ฐœ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ ๋‹ค์Œ ์˜ต์…˜์„ ์ œ๊ณตํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    --private-ip
  3. ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์ธ์ฆํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ค ๋•Œ ์ƒ์„ฑ๋œ ๋น„๊ณต๊ฐœ ํ‚ค ํŒŒ์ผ์˜ ํด๋ผ์ด์–ธํŠธ ๋จธ์‹  ๋‚ด ์œ„์น˜๋ฅผ ๊ธฐ๋กํ•ด ๋‘ก๋‹ˆ๋‹ค.
  4. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

    ๊ฐ€๋Šฅํ•œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ํ˜ธ์ถœ ๋ฌธ์ž์—ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • Cloud SDK ์ธ์ฆ ์‚ฌ์šฉ:
      ./cloud-sql-proxy --port 5432 INSTANCE_CONNECTION_NAME
      ์ง€์ •๋œ ํฌํŠธ๋Š” ๋กœ์ปฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„ ๋“ฑ์—์„œ ์ด๋ฏธ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ํฌํŠธ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์„œ๋น„์Šค ๊ณ„์ • ์‚ฌ์šฉ ๋ฐ ๋ช…์‹œ์ ์œผ๋กœ ์ธ์Šคํ„ด์Šค ์—ฐ๊ฒฐ ์ด๋ฆ„ ํฌํ•จ(ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์— ๊ถŒ์žฅ):
      ./cloud-sql-proxy \
      --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &

    Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์˜ต์…˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์ธ์ฆ ์˜ต์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Unix ์†Œ์ผ“

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋Š” ํด๋”๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋™์ผํ•œ ํ˜ธ์ŠคํŠธ์—์„œ ์‹คํ–‰๋˜๋Š” ๋‘ ํ”„๋กœ์„ธ์Šค ๊ฐ„์˜ ํ†ต์‹ ์„ ๊ด€๋ฆฌํ•˜๋Š” Posix ํ‘œ์ค€ ๋ฉ”์ปค๋‹ˆ์ฆ˜์ธ Unix ์†Œ์ผ“์—์„œ ๋ฆฌ์Šจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Unix ์†Œ์ผ“์„ ์‚ฌ์šฉํ•  ๋•Œ์˜ ์žฅ์ ์€ ๋ณด์•ˆ์ด ํ–ฅ์ƒ๋˜๊ณ  ์ง€์—ฐ ์‹œ๊ฐ„์ด ์งง๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์™ธ๋ถ€ ๋จธ์‹ ์—์„œ๋Š” Unix ์†Œ์ผ“์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Unix ์†Œ์ผ“์„ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋Œ€์ƒ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ์™€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋‘ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ๋Œ€ํ•œ ์ฝ๊ธฐ ๋ฐ ์“ฐ๊ธฐ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. INSTANCE_CONNECTION_NAME์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”์˜ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ๊ฐœ์š” ํŽ˜์ด์ง€์—์„œ ํ™•์ธํ•˜๊ฑฐ๋‚˜ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

        gcloud sql instances describe INSTANCE_NAME --format='value(connectionName)'

    ์˜ˆ๋ฅผ ๋“ค๋ฉด myproject:myregion:myinstance์ž…๋‹ˆ๋‹ค.

  2. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์†Œ์ผ“์ด ์œ„์น˜ํ•  ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    sudo mkdir /cloudsql; sudo chmod 777 /cloudsql
  3. ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์ธ์ฆํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ค ๋•Œ ์ƒ์„ฑ๋œ ๋น„๊ณต๊ฐœ ํ‚ค ํŒŒ์ผ์˜ ํด๋ผ์ด์–ธํŠธ ๋จธ์‹  ๋‚ด ์œ„์น˜๋ฅผ ๊ธฐ๋กํ•ด ๋‘ก๋‹ˆ๋‹ค.
  4. ์ƒˆ Cloud Shell ํ„ฐ๋ฏธ๋„ ์ฐฝ์„ ์—ด๊ณ  Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

    ๊ฐ€๋Šฅํ•œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ํ˜ธ์ถœ ๋ฌธ์ž์—ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • Google Cloud SDK ์ธ์ฆ ์‚ฌ์šฉ
      ./cloud-sql-proxy --unix-socket /cloudsql INSTANCE_CONNECTION_NAME &
    • ์„œ๋น„์Šค ๊ณ„์ • ์‚ฌ์šฉ
        ./cloud-sql-proxy --unix-socket /cloudsql
        --credentials-file PATH_TO_KEY_FILE INSTANCE_CONNECTION_NAME &

    ์ž์ฒด Cloud Shell ํ„ฐ๋ฏธ๋„์—์„œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•˜์—ฌ ์ถœ๋ ฅ์„ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์˜ ์ถœ๋ ฅ๊ณผ ๋ณ„๋„๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์˜ต์…˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์ธ์ฆ ์˜ต์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Docker

Docker ์ปจํ…Œ์ด๋„ˆ์—์„œ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๋ฉด Google Container Registry์—์„œ ์ œ๊ณตํ•˜๋Š” Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ Docker ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ๋ช…๋ น์–ด๋กœ TCP ์†Œ์ผ“์ด๋‚˜ Unix ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์˜ต์…˜์€ INSTANCE_CONNECTION_NAME์„ ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด๋กœ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์Šคํ„ด์Šค๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”์˜ ์ธ์Šคํ„ด์Šค ๊ฐœ์š” ํŽ˜์ด์ง€์—์„œ ๋˜๋Š” ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ INSTANCE_CONNECTION_NAME์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

gcloud sql instances describe INSTANCE_NAME
.

์˜ˆ๋ฅผ ๋“ค๋ฉด myproject:myregion:myinstance์ž…๋‹ˆ๋‹ค.

์–ธ์–ด์™€ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ TCP ์†Œ์ผ“์ด๋‚˜ Unix ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ ์ž‘์„ฑ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋‚˜ Windows ํ™˜๊ฒฝ์—์„œ๋Š” Unix ์†Œ์ผ“์ด ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

TCP ์†Œ์ผ“ ์‚ฌ์šฉ

docker run -d \\
  -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \\
  -p 127.0.0.1:5432:5432 \\
  gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.18.0 \\
  --address 0.0.0.0 --port 5432 \\
  --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME

Compute Engine ์ธ์Šคํ„ด์Šค์—์„œ ์ œ๊ณต๋˜๋Š” ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” --credentials-file ๋งค๊ฐœ๋ณ€์ˆ˜์™€ -v PATH_TO_KEY_FILE:/path/to/service-account-key.json ํ–‰์„ ํฌํ•จํ•˜์ง€ ๋งˆ์„ธ์š”.

Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๊ฐ€ ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ ์™ธ๋ถ€์— ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ํ•ญ์ƒ -p์— 127.0.0.1 ํ”„๋ฆฌํ”ฝ์Šค๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค ๋งค๊ฐœ๋ณ€์ˆ˜์˜ '0.0.0.0'์€ Docker ์ปจํ…Œ์ด๋„ˆ ์™ธ๋ถ€์—์„œ ํฌํŠธ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

Unix ์†Œ์ผ“ ์‚ฌ์šฉ

docker run -d -v /cloudsql:/cloudsql \\
  -v PATH_TO_KEY_FILE:/path/to/service-account-key.json \\
  gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.18.0 --unix-socket=/cloudsql \\
  --credentials-file /path/to/service-account-key.json INSTANCE_CONNECTION_NAME

Compute Engine ์ธ์Šคํ„ด์Šค์—์„œ ์ œ๊ณต๋˜๋Š” ์‚ฌ์šฉ์ž ์ธ์ฆ ์ •๋ณด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” --credentials-file ๋งค๊ฐœ๋ณ€์ˆ˜์™€ -v PATH_TO_KEY_FILE:/path/to/service-account-key.json ํ–‰์„ ํฌํ•จํ•˜์ง€ ๋งˆ์„ธ์š”.

์ปจํ…Œ์ด๋„ˆ ์ตœ์ ํ™” ์ด๋ฏธ์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ /cloudsql ๋Œ€์‹  ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

-v /mnt/stateful_partition/cloudsql:/cloudsql

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ Compute Engine ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•  ์ธ์Šคํ„ด์Šค๋ฅผ ๋™์ ์œผ๋กœ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด์„ธ์š”.

7. psql ์„ธ์…˜์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉํ•˜๋Š” ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด์€ TCP ์†Œ์ผ“, UNIX ์†Œ์ผ“, Docker ์ค‘์—์„œ ๋ฌด์—‡์„ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋ฅผ ์‹œ์ž‘ํ–ˆ๋Š”์ง€์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

TCP ์†Œ์ผ“

  1. psql ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
    psql "host=127.0.0.1 sslmode=disable dbname=DB_NAME user=USERNAME"

    sslmode ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ disable๋กœ ์„ค์ •๋˜์–ด ์žˆ๋”๋ผ๋„ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋Š” ์•”ํ˜ธํ™”๋œ ์—ฐ๊ฒฐ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

    TCP ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•˜๋ฉด 127.0.0.1์„ ํ†ตํ•ด Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ์— ์•ก์„ธ์Šคํ•ฉ๋‹ˆ๋‹ค.

  2. ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  3. psql ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

Unix ์†Œ์ผ“ ์‚ฌ์šฉ

  1. psql ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
    psql "sslmode=disable host=/cloudsql/INSTANCE_CONNECTION_NAME dbname=DB_NAME user=USERNAME"

    sslmode ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ disable๋กœ ์„ค์ •๋˜์–ด ์žˆ๋”๋ผ๋„ Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ๋Š” ์•”ํ˜ธํ™”๋œ ์—ฐ๊ฒฐ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

  2. ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  3. psql ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๋„์›€์ด ํ•„์š”ํ•˜์‹ ๊ฐ€์š”? ํ”„๋ก์‹œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐ ๋„์›€์ด ํ•„์š”ํ•˜๋ฉด Cloud SQL ์ธ์ฆ ํ”„๋ก์‹œ ์—ฐ๊ฒฐ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋˜๋Š” Cloud SQL ์ง€์› ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋‹ค์Œ ๋‹จ๊ณ„