์ธ์Šคํ„ด์Šค ์ •๋ณด ๋ณด๊ธฐ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” Cloud SQL ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ณด๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ธ์Šคํ„ด์Šค ์š”์•ฝ ์ •๋ณด ๋ณด๊ธฐ

Google Cloud ์ฝ˜์†”, gcloud CLI ๋˜๋Š” API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์Šคํ„ด์Šค์˜ ์š”์•ฝ ์ •๋ณด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

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

    Cloud SQL ์ธ์Šคํ„ด์Šค๋กœ ์ด๋™

    Private Service Connect๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ Cloud SQL ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ๋‹ค์Œ ์ •๋ณด๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

  2. ํ˜„์žฌ ์ธ์Šคํ„ด์Šค ์ƒํƒœ๋ฅผ ๋ณด๋ ค๋ฉด ์ธ์Šคํ„ด์Šค ์ด๋ฆ„ ์˜†์˜ ์ƒํƒœ ์•„์ด์ฝ˜ ์œ„์— ๋งˆ์šฐ์Šค ํฌ์ธํ„ฐ๋ฅผ ๋†“์Šต๋‹ˆ๋‹ค.

    ์ธ์Šคํ„ด์Šค๊ฐ€ FAILED ๋˜๋Š” MAINTENANCE ์ƒํƒœ์ธ ๊ฒฝ์šฐ ๊ณผ๊ฑฐ์˜ ์‹œ๊ฐ„์„ ์„ ํƒํ•˜๊ณ  ์ธ์Šคํ„ด์Šค๋ฅผ ํ•ด๋‹น ์‹œ์ ์˜ ์ƒํƒœ๋กœ ๋ณต์›ํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  3. ์ธ์Šคํ„ด์Šค์˜ ๊ฐœ์š” ํŽ˜์ด์ง€๋ฅผ ์—ด๋ ค๋ฉด ์ธ์Šคํ„ด์Šค ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์ด ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐ ์นด๋“œ์—์„œ Private Service Connect๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ Cloud SQL ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ถ”๊ฐ€ ์ •๋ณด๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    • ๋น„๊ณต๊ฐœ IP ์—ฐ๊ฒฐ: ์ธ์Šคํ„ด์Šค์— ๋‚ด๋ถ€ IP ์ฃผ์†Œ๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฏ€๋กœ ์‚ฌ์šฉ ์„ค์ •๋จ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
    • ํ—ˆ์šฉ๋œ ํ”„๋กœ์ ํŠธ: ์ด๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ๋Š” Private Service Connect ์—”๋“œํฌ์ธํŠธ์—์„œ ์ธ์Šคํ„ด์Šค๋กœ์˜ ์—ฐ๊ฒฐ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ์„œ๋น„์Šค ์—ฐ๊ฒฐ: ์ธ์Šคํ„ด์Šค์˜ ์„œ๋น„์Šค ์—ฐ๊ฒฐ์ž…๋‹ˆ๋‹ค.
    • ๊ณต๊ฐœ IP ์—ฐ๊ฒฐ: ์™ธ๋ถ€ IP ์—ฐ๊ฒฐ์ด ์ง€์›๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์‚ฌ์šฉ ์ค‘์ง€๋จ ์ƒํƒœ์ž…๋‹ˆ๋‹ค.
  4. ์ธ์Šคํ„ด์Šค์— ๋‚ด๋ถ€ IP ์ฃผ์†Œ ๋˜๋Š” ์™ธ๋ถ€ IP ์ฃผ์†Œ๋ฅผ ์ถ”๊ฐ€ํ• ์ง€ ์—ฌ๋ถ€, ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ์Šน์ธ๋œ ๋„คํŠธ์›Œํฌ, BigQuery์™€ ๊ฐ™์€ ๋‹ค๋ฅธ Google Cloud ์„œ๋น„์Šค๊ฐ€ ๋‚ด๋ถ€ ์—ฐ๊ฒฐ์„ ํ†ตํ•ด Cloud SQL์˜ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•˜๊ณ  ์ด ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์ฟผ๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€ ๋“ฑ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ์—ฐ๊ฒฐ ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์ด ํƒญ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฐ๊ฒฐ ์˜ต์…˜ ์ •๋ณด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  5. ๋„คํŠธ์›Œํ‚น ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. Private Service Connect๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ๋‹ค์Œ ์ •๋ณด๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

    • ๋น„๊ณต๊ฐœ IP ์ฒดํฌ๋ฐ•์Šค๊ฐ€ ์„ ํƒ๋˜์—ˆ์ง€๋งŒ ๋น„ํ™œ์„ฑํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค์— ๋‚ด๋ถ€ IP ์ฃผ์†Œ๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋ฉฐ ์ด ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    • ์ธ์Šคํ„ด์Šค์— ํ—ˆ์šฉ๋˜๋Š” ํ”„๋กœ์ ํŠธ์ž…๋‹ˆ๋‹ค.
    • ๊ณต๊ฐœ IP ์ฒดํฌ๋ฐ•์Šค๊ฐ€ ์„ ํƒ๋˜์—ˆ์ง€๋งŒ ๋น„ํ™œ์„ฑํ™”๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
    • ์ธ์Šคํ„ด์Šค์—์„œ ์ด ๊ธฐ๋Šฅ์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š” Private Service Connect๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ์Šน์ธ๋œ ๋„คํŠธ์›Œํฌ ํ•„๋“œ๊ฐ€ ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.

gcloud

gcloud CLI ์„ค์น˜ ๋ฐ ์‹œ์ž‘์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ gcloud CLI ์„ค์น˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”. Cloud Shell ์‹œ์ž‘ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud Shell ์‚ฌ์šฉ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

  1. ์ธ์Šคํ„ด์Šค์˜ ์š”์•ฝ ์ •๋ณด๋ฅผ ๋ณด๋ ค๋ฉด gcloud sql instances describe ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    gcloud sql instances describe INSTANCE_NAME \
    --project=PROJECT_ID

    ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    ๋‹ค์Œ์€ ์ด ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ถœ๋ ฅ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

    gcloud sql instances describe myinstance \
    --project=12345
    ...
    dnsName: mydnsname
    ...
    pscServiceAttachmentLink: projects/myproject/regions/myregion/serviceAttachments/myserviceattachment
    ...
     settings:
      ...
      ipConfiguration:
      ipv4Enabled: false
      pscConfig:
        allowedConsumerProjects:
          - projects/23456
          - projects/34567
        pscEnabled: true
  2. Private Service Connect๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์ •๋ณด๋ฅผ ๋ณด๋ ค๋ฉด ๋‹ค์Œ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  3. ์„ค์ • ๋งค๊ฐœ๋ณ€์ˆ˜ ์ฐธ๊ณ 
    DNS ์ด๋ฆ„ dnsName ์ธ์Šคํ„ด์Šค์˜ DNS ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด ์ด๋ฆ„์œผ๋กœ DNS ๋ ˆ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  Private Service Connect ์—”๋“œํฌ์ธํŠธ์˜ IP ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
    ์„œ๋น„์Šค ์—ฐ๊ฒฐ pscServiceAttachmentLink ์ธ์Šคํ„ด์Šค์˜ ์„œ๋น„์Šค ์—ฐ๊ฒฐ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” URI์ž…๋‹ˆ๋‹ค. ์ด URI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Private Service Connect ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    ํ—ˆ์šฉ๋œ ์†Œ๋น„์ž ํ”„๋กœ์ ํŠธ allowedConsumerProjects ์ธ์Šคํ„ด์Šค์— ํ—ˆ์šฉ๋˜๋Š” ํ”„๋กœ์ ํŠธ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๋Š” ์ด๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  VPC ๋„คํŠธ์›Œํฌ์—์„œ ์ธ์Šคํ„ด์Šค์˜ ์„œ๋น„์Šค ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ Private Service Connect ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    Private Service Connect ์‚ฌ์šฉ ์„ค์ • pscEnabled ์ธ์Šคํ„ด์Šค์— Private Service Connect๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค.

Terraform

์ธ์Šคํ„ด์Šค๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด Terraform ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

resource "google_sql_database_instance" "postgres_pvp_instance_name" {
  name             = "postgres-pvp-instance-name"
  region           = "asia-northeast1"
  database_version = "POSTGRES_14"
  root_password    = "abcABC123!"
  settings {
    tier = "db-custom-2-7680"
    password_validation_policy {
      min_length                  = 6
      reuse_interval              = 2
      complexity                  = "COMPLEXITY_DEFAULT"
      disallow_username_substring = true
      password_change_interval    = "30s"
      enable_password_policy      = true
    }
  }
  # set `deletion_protection` to true, will ensure that one cannot accidentally delete this instance by
  # use of Terraform whereas `deletion_protection_enabled` flag protects this instance at the GCP level.
  deletion_protection = false
}

๋ณ€๊ฒฝ์‚ฌํ•ญ ์ ์šฉ

ํ”„๋กœ์ ํŠธ์— Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•˜๋ ค๋ฉด Google Cloud ๋‹ค์Œ ์„น์…˜์˜ ๋‹จ๊ณ„๋ฅผ ์™„๋ฃŒํ•˜์„ธ์š”.

Cloud Shell ์ค€๋น„

  1. Cloud Shell์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
  2. Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•  ๊ธฐ๋ณธ Google Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    ์ด ๋ช…๋ น์–ด๋Š” ํ”„๋กœ์ ํŠธ๋‹น ํ•œ ๋ฒˆ๋งŒ ์‹คํ–‰ํ•˜๋ฉด ๋˜๋ฉฐ ์–ด๋–ค ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ๋„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Terraform ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ๋ช…์‹œ์  ๊ฐ’์„ ์„ค์ •ํ•˜๋ฉด ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์žฌ์ •์˜๋ฉ๋‹ˆ๋‹ค.

๋””๋ ‰ํ„ฐ๋ฆฌ ์ค€๋น„

๊ฐ Terraform ๊ตฌ์„ฑ ํŒŒ์ผ์—๋Š” ์ž์ฒด ๋””๋ ‰ํ„ฐ๋ฆฌ(๋ฃจํŠธ ๋ชจ๋“ˆ์ด๋ผ๊ณ ๋„ ํ•จ)๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. Cloud Shell์—์„œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ๋งŒ๋“ค๊ณ  ํ•ด๋‹น ๋””๋ ‰ํ„ฐ๋ฆฌ ๋‚ด์— ์ƒˆ ํŒŒ์ผ์„ ๋งŒ๋“œ์„ธ์š”. ํŒŒ์ผ ์ด๋ฆ„์—๋Š” .tf ํ™•์žฅ์ž๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ˆ: main.tf). ์ด ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” ํŒŒ์ผ์„ main.tf๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. ํŠœํ† ๋ฆฌ์–ผ์„ ๋”ฐ๋ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฐ ์„น์…˜์ด๋‚˜ ๋‹จ๊ณ„์—์„œ ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“  main.tf์— ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

    ํ•„์š”ํ•œ ๊ฒฝ์šฐ GitHub์—์„œ ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” Terraform ์Šค๋‹ˆํŽซ์ด ์—”๋“œ ํˆฌ ์—”๋“œ ์†”๋ฃจ์…˜์˜ ์ผ๋ถ€์ธ ๊ฒฝ์šฐ์— ๊ถŒ์žฅ๋ฉ๋‹ˆ๋‹ค.

  3. ํ™˜๊ฒฝ์— ์ ์šฉํ•  ์ƒ˜ํ”Œ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๊ฒ€ํ† ํ•˜๊ณ  ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
  5. Terraform์„ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ์ด ์ž‘์—…์€ ๋””๋ ‰ํ„ฐ๋ฆฌ๋‹น ํ•œ ๋ฒˆ๋งŒ ์ˆ˜ํ–‰ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
    terraform init

    ์›ํ•˜๋Š” ๊ฒฝ์šฐ ์ตœ์‹  Google ๊ณต๊ธ‰์—…์ฒด ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด -upgrade ์˜ต์…˜์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

    terraform init -upgrade

๋ณ€๊ฒฝ์‚ฌํ•ญ ์ ์šฉ

  1. ๊ตฌ์„ฑ์„ ๊ฒ€ํ† ํ•˜๊ณ  Terraform์—์„œ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•  ๋ฆฌ์†Œ์Šค๊ฐ€ ์˜ˆ์ƒ๊ณผ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    terraform plan

    ํ•„์š”์— ๋”ฐ๋ผ ๊ตฌ์„ฑ์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

  2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ”„๋กฌํ”„ํŠธ์— yes๋ฅผ ์ž…๋ ฅํ•˜์—ฌ Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
    terraform apply

    Terraform์— '์ ์šฉ ์™„๋ฃŒ' ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฝ๋‹ˆ๋‹ค.

  3. ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ ค๋ฉด Google Cloud ํ”„๋กœ์ ํŠธ๋ฅผ ์—ฝ๋‹ˆ๋‹ค. Google Cloud ์ฝ˜์†”์—์„œ UI์˜ ๋ฆฌ์†Œ์Šค๋กœ ์ด๋™ํ•˜์—ฌ Terraform์ด ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŒ๋“ค์—ˆ๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ–ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ์‚ฌํ•ญ ์‚ญ์ œ

๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. Terraform ๊ตฌ์„ฑ ํŒŒ์ผ์—์„œ ์‚ญ์ œ ๋ณดํ˜ธ๋ฅผ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ ค๋ฉด deletion_protection ์ธ์ˆ˜๋ฅผ false๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
    deletion_protection =  "false"
  2. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ”„๋กฌํ”„ํŠธ์— yes๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์—…๋ฐ์ดํŠธ๋œ Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.
    terraform apply
  1. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ํ”„๋กฌํ”„ํŠธ์— yes๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ์ด์ „์— Terraform ๊ตฌ์„ฑ์— ์ ์šฉ๋œ ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

    terraform destroy

REST v1

์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "POSTGRES_13",
  "settings": {
    "authorizedGaeApplications": [],
    "tier": "db-custom-2-7680",
    "kind": "sql#settings",
    "availabilityType": "REGIONAL",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "activationPolicy": "ALWAYS",
    "ipConfiguration": {
      "authorizedNetworks": [],
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "pscEnabled": true
      },
      "ipv4Enabled": false
    },
  ...
  "createTime": "2023-06-14T18:48:34.975Z",
  "sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE",
  "pscServiceAttachmentLink": "projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_ID",
  "dnsName": "DNS_NAME"
}

Private Service Connect๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ ์ธ์Šคํ„ด์Šค์—๋Š” ๋‹ค์Œ ํ•„๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • allowedConsumerProjects: ์ธ์Šคํ„ด์Šค์— ํ—ˆ์šฉ๋˜๋Š” ํ”„๋กœ์ ํŠธ ๋ชฉ๋ก. ์‚ฌ์šฉ์ž๋Š” ์ด๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  VPC ๋„คํŠธ์›Œํฌ์—์„œ ์ธ์Šคํ„ด์Šค์˜ ์„œ๋น„์Šค ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ Private Service Connect ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • pscEnabled: ์ธ์Šคํ„ด์Šค์— Private Service Connect๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค.
  • pscServiceAttachmentLink: ์ธ์Šคํ„ด์Šค์˜ ์„œ๋น„์Šค ์—ฐ๊ฒฐ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” URI์ž…๋‹ˆ๋‹ค. ์ด URI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Private Service Connect ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • dnsName: ์ธ์Šคํ„ด์Šค์˜ DNS ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด ์ด๋ฆ„์œผ๋กœ DNS ๋ ˆ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  Private Service Connect ์—”๋“œํฌ์ธํŠธ์˜ IP ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ด ํƒœ์Šคํฌ์— ๋Œ€ํ•œ ๊ธฐ๋ณธ REST API ์š”์ฒญ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์€ instances:get ํŽ˜์ด์ง€๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

REST v1beta4

์š”์ฒญ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

HTTP ๋ฉ”์„œ๋“œ ๋ฐ URL:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME

์š”์ฒญ์„ ๋ณด๋‚ด๋ ค๋ฉด ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ JSON ์‘๋‹ต์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "POSTGRES_13",
  "settings": {
    "authorizedGaeApplications": [],
    "tier": "db-custom-2-7680",
    "kind": "sql#settings",
    "availabilityType": "REGIONAL",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "activationPolicy": "ALWAYS",
    "ipConfiguration": {
      "authorizedNetworks": [],
      "pscConfig": {
        "allowedConsumerProjects": [
          "ALLOWED_PROJECTS"
        ],
        "pscEnabled": true
      },
      "ipv4Enabled": false
    },
  ...
  "createTime": "2023-06-14T18:48:34.975Z",
  "sqlNetworkArchitecture": "NEW_NETWORK_ARCHITECTURE",
  "pscServiceAttachmentLink": "projects/PROJECT_ID/regions/REGION_NAME/serviceAttachments/SERVICE_ATTACHMENT_ID",
  "dnsName": "DNS_NAME"
}

Private Service Connect๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋œ ์ธ์Šคํ„ด์Šค์—๋Š” ๋‹ค์Œ ํ•„๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • allowedConsumerProjects: ์ธ์Šคํ„ด์Šค์— ํ—ˆ์šฉ๋˜๋Š” ํ”„๋กœ์ ํŠธ ๋ชฉ๋ก. ์‚ฌ์šฉ์ž๋Š” ์ด๋Ÿฌํ•œ ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  VPC ๋„คํŠธ์›Œํฌ์—์„œ ์ธ์Šคํ„ด์Šค์˜ ์„œ๋น„์Šค ์—ฐ๊ฒฐ์— ๋Œ€ํ•œ Private Service Connect ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • pscEnabled: ์ธ์Šคํ„ด์Šค์— Private Service Connect๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€์ž…๋‹ˆ๋‹ค.
  • pscServiceAttachmentLink: ์ธ์Šคํ„ด์Šค์˜ ์„œ๋น„์Šค ์—ฐ๊ฒฐ์„ ๊ฐ€๋ฆฌํ‚ค๋Š” URI์ž…๋‹ˆ๋‹ค. ์ด URI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Private Service Connect ์—”๋“œํฌ์ธํŠธ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • dnsName: ์ธ์Šคํ„ด์Šค์˜ DNS ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด ์ด๋ฆ„์œผ๋กœ DNS ๋ ˆ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  Private Service Connect ์—”๋“œํฌ์ธํŠธ์˜ IP ์ฃผ์†Œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ด ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ƒ๋‹จ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ž‘์—…์„ ์ œ์•ˆํ•˜๋Š” ๋ฐฐ๋„ˆ๊ฐ€ ๋ช‡ ๊ฐ€์ง€ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์“ฐ๊ธฐ ์—”๋“œํฌ์ธํŠธ ๋ณด๊ธฐ

์“ฐ๊ธฐ ์—”๋“œํฌ์ธํŠธ๋Š” ํ˜„์žฌ ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค์˜ IP ์ฃผ์†Œ๋กœ ์ž๋™ ํ™•์ธ๋˜๋Š” ์ „์—ญ ๋„๋ฉ”์ธ ์ด๋ฆ„ ์„œ๋น„์Šค(DNS) ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ด ์—”๋“œํฌ์ธํŠธ๋Š” ๋ณต์ œ๋ณธ ์žฅ์•  ์กฐ์น˜ ๋˜๋Š” ์ „ํ™˜ ์ž‘์—… ์‹œ ๋“ค์–ด์˜ค๋Š” ์—ฐ๊ฒฐ์„ ์ƒˆ๋กœ์šด ๊ธฐ๋ณธ ์ธ์Šคํ„ด์Šค๋กœ ์ž๋™ ๋ฆฌ๋””๋ ‰์…˜ํ•ฉ๋‹ˆ๋‹ค. IP ์ฃผ์†Œ ๋Œ€์‹  SQL ์—ฐ๊ฒฐ ๋ฌธ์ž์—ด์—์„œ ์“ฐ๊ธฐ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์“ฐ๊ธฐ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฆฌ์ „ ์„œ๋น„์Šค ์ค‘๋‹จ์ด ๋ฐœ์ƒํ•  ๋•Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์—ฐ๊ฒฐ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์•„๋„ ๋ฉ๋‹ˆ๋‹ค.

์“ฐ๊ธฐ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์“ฐ๊ธฐ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ธก์ •ํ•ญ๋ชฉ

์ด ์„น์…˜์—์„œ๋Š” ์ธ์Šคํ„ด์Šค๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฃผ์š” ์ธ์Šคํ„ด์Šค ์ธก์ •ํ•ญ๋ชฉ์˜ ์‚ฌ์šฉ๋Ÿ‰ ์ฐจํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ธก์ •ํ•ญ๋ชฉ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ๋‹ค์Œ ์‚ฌํ•ญ์— ์œ ์˜ํ•˜์„ธ์š”.

  • ์ธก์ •ํ•ญ๋ชฉ์˜ ๋ฐ์ดํ„ฐ ํฌ์ธํŠธ๋Š” ์ธ์Šคํ„ด์Šค์—์„œ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ง‘๊ณ„์ž…๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋Š” ์ง€์—ญ ์‹œ๊ฐ„์œผ๋กœ ๋ณด๊ณ ๋ฉ๋‹ˆ๋‹ค.
  • ๋ Œ๋”๋ง๋œ ์ฐจํŠธ๋Š” ์ž๋™์œผ๋กœ ์ƒˆ๋กœ๊ณ ์นจ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ƒˆ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋ ค๋ฉด ํŽ˜์ด์ง€๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ์ธก์ •ํ•ญ๋ชฉ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ธฐ๋ก๋˜๋Š” ์‹œ์ ๊ณผ ์‚ฌ์šฉ๋Ÿ‰ ์ฐจํŠธ์— ํ‘œ์‹œ๋˜๋Š” ์‹œ์  ๊ฐ„์— ๋ช‡ ๋ถ„ ์ •๋„ ์ง€์—ฐ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ฐจํŠธ์— ํ‘œ์‹œ๋œ ์ธก์ •ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud SQL ์ธ์Šคํ„ด์Šค ๋ชจ๋‹ˆํ„ฐ๋ง์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Cloud Monitoring์—์„œ ์ œ๊ณตํ•˜๋Š” Cloud SQL ์ธก์ •ํ•ญ๋ชฉ์˜ ์ „์ฒด ๋ชฉ๋ก์€ Cloud SQL ์ธก์ •ํ•ญ๋ชฉ ๋ชฉ๋ก์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Google Cloud์™€ ํ•จ๊ป˜ Cloud Monitoring์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud Monitoring ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐ

์ด ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐ ์„น์…˜์—์„œ ์ธ์Šคํ„ด์Šค์˜ IP ์ฃผ์†Œ, VPC ๋„คํŠธ์›Œํฌ, ์—ฐ๊ฒฐ ์ด๋ฆ„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ„ฐ๋ฏธ๋„์„ ์—ด๊ณ  ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋ ค๋ฉด Cloud Shell์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ฅธ์ชฝ ์ฐฝ์—์„œ ๊ด€๋ จ ํŠœํ† ๋ฆฌ์–ผ์„ ์—ด๋ ค๋ฉด Compute Engine VM ์ธ์Šคํ„ด์Šค์—์„œ ์—ฐ๊ฒฐ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์—ฐ๊ฒฐ ์˜ต์…˜์œผ๋กœ ์ด๋™ํ•˜๋ ค๋ฉด ๋ชจ๋“  ์—ฐ๊ฒฐ ๋ฐฉ๋ฒ• ๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์ธ์Šคํ„ด์Šค ์—ฐ๊ฒฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฐ๊ฒฐ ๊ฐœ์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์„œ๋น„์Šค ๊ณ„์ •

์ด ์„น์…˜์—๋Š” ์ธ์Šคํ„ด์Šค์˜ ์„œ๋น„์Šค ๊ณ„์ • ์ด๋ฉ”์ผ ์ฃผ์†Œ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์ž์„ธํ•œ ๋‚ด์šฉ์€ IAM ์„œ๋น„์Šค ๊ณ„์ • ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๊ตฌ์„ฑ

์ด ์„น์…˜์—๋Š” ์ธ์Šคํ„ด์Šค์˜ ํ˜„์žฌ ๊ตฌ์„ฑ ์„ค์ •์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

๊ตฌ์„ฑ ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๊ตฌ์„ฑ ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

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

์ž‘์—… ๋ฐ ๋กœ๊ทธ

์ด ์„น์…˜์—๋Š” ๋ฐฑ์—… ๋งŒ๋“ค๊ธฐ์™€ ๊ฐ™์€ ์ตœ๊ทผ ์ธ์Šคํ„ด์Šค ์ž‘์—…์ด ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ๊ทผ ์ž‘์—…์„ ๋ณด๋ ค๋ฉด ๋ชจ๋“  ์ž‘์—… ๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

๋กœ๊น… ์ •๋ณด๋ฅผ ๋ณด๋ ค๋ฉด PostgreSQL ์˜ค๋ฅ˜ ๋กœ๊ทธ ๋ณด๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์ž‘์—… ๋ฐ ๋กœ๊ทธ ํƒ์ƒ‰๊ธฐ ํŽ˜์ด์ง€์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Cloud SQL ๋กœ๊น…์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋กœ๊น…์— ๋Œ€ํ•œ ์ผ๋ฐ˜ ์ •๋ณด๋Š” ๋กœ๊ทธ ๋ณด๊ธฐ ๋ฐ ๋กœ๊ทธ ํƒ์ƒ‰์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์œ ์ง€๋ณด์ˆ˜

์ด ์„น์…˜์—๋Š” ํ˜„์žฌ ์œ ์ง€๋ณด์ˆ˜ ์—…๋ฐ์ดํŠธ ์„ค์ •๊ณผ ์ผ์ •์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

ํ™˜๊ฒฝ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์œ ์ง€๋ณด์ˆ˜ ํ™˜๊ฒฝ์„ค์ • ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์•Œ๋ฆผ ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์•Œ๋ฆผ ํ™˜๊ฒฝ์„ค์ • ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

Cloud SQL ์œ ์ง€๋ณด์ˆ˜ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์œ ์ง€๋ณด์ˆ˜ ๊ฐœ์š”๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

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