Google Kubernetes Engine์—์„œ SQL Server์šฉ Cloud SQL์— ์—ฐ๊ฒฐ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” Google Cloud ์ฝ˜์†”๊ณผ ํด๋ผ์ด์–ธํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ SQL Server ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐ๋œ Google Kubernetes Engine(GKE)์— ์ƒ˜ํ”Œ ์•ฑ์„ ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋น ๋ฅธ ์‹œ์ž‘์—์„œ ๋งŒ๋“  ๋ฆฌ์†Œ์Šค๋Š” ์ •๋ฆฌ ๋‹จ๊ณ„๊นŒ์ง€ ๋ชจ๋“  ๋‹จ๊ณ„๋ฅผ ์ ์‹œ์— ์™„๋ฃŒํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•  ๋•Œ 1๋‹ฌ๋Ÿฌ(USD) ๋ฏธ๋งŒ์˜ ๋น„์šฉ์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค.

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

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. GKE์—์„œ Cloud SQL ์ƒ˜ํ”Œ ์•ฑ์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ Google Cloud API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    ์ฝ˜์†”

    API ์‚ฌ์šฉ ์„ค์ •์„ ํด๋ฆญํ•˜์—ฌ ๋น ๋ฅธ ์‹œ์ž‘์— ํ•„์š”ํ•œ API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    API ์‚ฌ์šฉ ์„ค์ •

    ๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ API๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋ฉ๋‹ˆ๋‹ค.

    • Compute Engine API
    • Cloud SQL Admin API
    • Google Kubernetes Engine API
    • Artifact Registry API
    • Cloud Build API

    gcloud

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

    Cloud Shell ์—ด๊ธฐ

    Cloud Shell์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด gcloud services enable ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด ์ด ๋น ๋ฅธ ์‹œ์ž‘์— ํ•„์š”ํ•œ API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    gcloud services enable compute.googleapis.com sqladmin.googleapis.com \
         container.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com

    ์ด ๋ช…๋ น์–ด๋Š” ๋‹ค์Œ API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    • Compute Engine API
    • Cloud SQL Admin API
    • GKE API
    • Artifact Registry API
    • Cloud Build API

Cloud SQL ์„ค์ •

Cloud SQL ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งŒ๋“ค๊ธฐ

์ฝ˜์†”

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

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

  2. quickstart-instance๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. SQL ํƒ์ƒ‰ ๋ฉ”๋‰ด์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  4. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    1. ์ƒˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋Œ€ํ™”์ƒ์ž์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„ ํ•„๋“œ์— quickstart-db๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    2. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

gcloud sql databases create ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

gcloud sql databases create quickstart-db --instance=quickstart-instance

GKE ํด๋Ÿฌ์Šคํ„ฐ ๋งŒ๋“ค๊ธฐ

์ฝ˜์†”

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

    Google Kubernetes Engine์œผ๋กœ ์ด๋™

  2. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. GKE Autopilot์˜ ๊ตฌ์„ฑ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ์ด๋ฆ„์— ํด๋Ÿฌ์Šคํ„ฐ ์ด๋ฆ„์„ gke-cloud-sql-quickstart๋กœ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  5. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

gcloud container clusters create-auto ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

gcloud container clusters create-auto gke-cloud-sql-quickstart \
    --region us-central1

Cloud SQL ์ƒ˜ํ”Œ ์•ฑ์„ Cloud Shell ํŽธ์ง‘๊ธฐ์— ํด๋ก 

์ด์ œ Cloud SQL ์ธ์Šคํ„ด์Šค, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, GKE ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cloud SQL ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋„๋ก ์ƒ˜ํ”Œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ํด๋ก ํ•˜๊ณ  ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋น ๋ฅธ ์‹œ์ž‘์˜ ๋‚˜๋จธ์ง€ ๋‹จ๊ณ„์—์„œ๋Š” gcloud ๋ฐ kubectl ๋ช…๋ น์ค„ ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋„๊ตฌ ๋ชจ๋‘ Cloud Shell์— ์‚ฌ์ „ ์„ค์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

Go

  1. Cloud Shell ํŽธ์ง‘๊ธฐ์—์„œ ์ƒ˜ํ”Œ ์•ฑ์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
    Cloud Shell ํŽธ์ง‘๊ธฐ ์—ด๊ธฐ
  2. Open in Cloud Shell ๋Œ€ํ™”์ƒ์ž์—์„œ ํ™•์ธ์„ ํด๋ฆญํ•˜์—ฌ ์ƒ˜ํ”Œ ์•ฑ ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  Cloud Shell ํŽธ์ง‘๊ธฐ์—์„œ ์ƒ˜ํ”Œ ์•ฑ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

Java

  1. Cloud Shell ํŽธ์ง‘๊ธฐ์—์„œ ์ƒ˜ํ”Œ ์•ฑ์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
    Cloud Shell ํŽธ์ง‘๊ธฐ ์—ด๊ธฐ
  2. Open in Cloud Shell ๋Œ€ํ™”์ƒ์ž์—์„œ ํ™•์ธ์„ ํด๋ฆญํ•˜์—ฌ ์ƒ˜ํ”Œ ์•ฑ ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  Cloud Shell ํŽธ์ง‘๊ธฐ์—์„œ ์ƒ˜ํ”Œ ์•ฑ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

Node.js

  1. Cloud Shell ํŽธ์ง‘๊ธฐ์—์„œ ์ƒ˜ํ”Œ ์•ฑ์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
    Cloud Shell ํŽธ์ง‘๊ธฐ ์—ด๊ธฐ
  2. Open in Cloud Shell ๋Œ€ํ™”์ƒ์ž์—์„œ ํ™•์ธ์„ ํด๋ฆญํ•˜์—ฌ ์ƒ˜ํ”Œ ์•ฑ ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  Cloud Shell ํŽธ์ง‘๊ธฐ์—์„œ ์ƒ˜ํ”Œ ์•ฑ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

Python

  1. Cloud Shell ํŽธ์ง‘๊ธฐ์—์„œ ์ƒ˜ํ”Œ ์•ฑ์˜ ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
    Cloud Shell ํŽธ์ง‘๊ธฐ ์—ด๊ธฐ
  2. Open in Cloud Shell ๋Œ€ํ™”์ƒ์ž์—์„œ ํ™•์ธ์„ ํด๋ฆญํ•˜์—ฌ ์ƒ˜ํ”Œ ์•ฑ ์ฝ”๋“œ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  Cloud Shell ํŽธ์ง‘๊ธฐ์—์„œ ์ƒ˜ํ”Œ ์•ฑ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

GKE ํด๋Ÿฌ์Šคํ„ฐ ์‚ฌ์šฉ ์„ค์ •

์ด ๋น ๋ฅธ ์‹œ์ž‘์˜ ๋‚˜๋จธ์ง€ ๋ช…๋ น์–ด์— ์‚ฌ์šฉํ•  ๊ธฐ๋ณธ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๋ฐฉ๊ธˆ ๋งŒ๋“  GKE ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์ด gcloud container clusters get-credentials ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ GKE ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
gcloud container clusters get-credentials gke-cloud-sql-quickstart \
  --region us-central1

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

GKE์—์„œ ์‚ฌ์šฉํ•  Google Cloud ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ค๊ณ  Cloud SQL์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์žˆ๋Š” Cloud SQL ํด๋ผ์ด์–ธํŠธ ์—ญํ• ์ด ํฌํ•จ๋˜๋„๋ก ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  1. ๋‹ค์Œ๊ณผ ๊ฐ™์ด gcloud iam service-accounts create ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ƒˆ ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    gcloud iam service-accounts create gke-quickstart-service-account \
      --display-name="GKE Quickstart Service Account"
  2. ๋‹ค์Œ๊ณผ ๊ฐ™์ด gcloud projects add-iam-policy-binding ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฐฉ๊ธˆ ๋งŒ๋“  Google Cloud ์„œ๋น„์Šค ๊ณ„์ •์— Cloud SQL ํด๋ผ์ด์–ธํŠธ ์—ญํ• ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. YOUR_PROJECT_ID๋ฅผ ํ”„๋กœ์ ํŠธ ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/cloudsql.client"
  3. ์ƒ˜ํ”Œ ์•ฑ์—์„œ๋Š” ๋กœ๊น…์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด gcloud projects add-iam-policy-binding ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋ฐฉ๊ธˆ ๋งŒ๋“  Google Cloud ์„œ๋น„์Šค ๊ณ„์ •์— ๋กœ๊ทธ ์ž‘์„ฑ์ž ์—ญํ• ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. YOUR_PROJECT_ID๋ฅผ ํ”„๋กœ์ ํŠธ ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/logging.logWriter"
  4. ๋‹ค์Œ๊ณผ ๊ฐ™์ด gcloud projects add-iam-policy-binding ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ Artifact Registry ๋ฆฌ๋” ์—ญํ• ์„ ์„œ๋น„์Šค ๊ณ„์ •์— ์ถ”๊ฐ€ํ•˜๋ฏ€๋กœ
    ์„œ๋น„์Šค ๊ณ„์ •์—์„œ ์•„ํ‹ฐํŒฉํ† ๋ฆฌ ์ €์žฅ์†Œ์—์„œ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. YOUR_PROJECT_ID๋ฅผ ํ”„๋กœ์ ํŠธ ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \
      --member="serviceAccount:gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/artifactregistry.reader"
GKE์šฉ ์›Œํฌ๋กœ๋“œ ์•„์ด๋ดํ‹ฐํ‹ฐ ์ œํœด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Google Cloud ์„œ๋น„์Šค ๊ณ„์ •์— ๋ฐ”์ธ๋”ฉํ•ด Cloud SQL์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑ๋œ Kubernetes ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  1. Kubernetes ์„œ๋น„์Šค ๊ณ„์ •์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
    1. Cloud Shell ํŽธ์ง‘๊ธฐ์—์„œ service-account.yaml ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค. <YOUR-KSA-NAME>์„ ksa-cloud-sql๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    2. Cloud Shell์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด kubectl apply ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
      kubectl apply -f service-account.yaml
  2. ๋‹ค์Œ๊ณผ ๊ฐ™์ด gcloud iam service-accounts add-iam-policy-binding ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ Google Cloud ์„œ๋น„์Šค ๊ณ„์ •๊ณผ Kubernetes ์„œ๋น„์Šค ๊ณ„์ •์˜ IAM ๋ฐ”์ธ๋”ฉ์„ ์‚ฌ์šฉ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    • YOUR_PROJECT_ID๋ฅผ ํ”„๋กœ์ ํŠธ ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    • YOUR_K8S_NAMESPACE๋ฅผ GKE์—์„œ ์ƒ์„ฑ๋œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ๊ธฐ๋ณธ ๋„ค์ž„์ŠคํŽ˜์ด์Šค์ธ default๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    • ksa-cloud-sql์„ YOUR_KSA_NAME์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    gcloud iam service-accounts add-iam-policy-binding \
      --role="roles/iam.workloadIdentityUser" \
      --member="serviceAccount:YOUR_PROJECT_ID.svc.id.goog[YOUR_K8S_NAMESPACE/YOUR_KSA_NAME]" \
      gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com
  3. ๋‹ค์Œ๊ณผ ๊ฐ™์ด kubectl annotate ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ IAM binding์œผ๋กœ Kubernetes ์„œ๋น„์Šค ๊ณ„์ •์— ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    • ksa-cloud-sql์„ YOUR_KSA_NAME์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    • YOUR_PROJECT_ID๋ฅผ ํ”„๋กœ์ ํŠธ ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    kubectl annotate serviceaccount \
      YOUR_KSA_NAME  \
      iam.gke.io/gcp-service-account=gke-quickstart-service-account@YOUR_PROJECT_ID.iam.gserviceaccount.com

๋ณด์•ˆ ๋น„๋ฐ€ ๊ตฌ์„ฑ

๋‹ค์Œ๊ณผ ๊ฐ™์€ kubectl create secret generic ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์ƒ˜ํ”Œ ์•ฑ์—์„œ ์‚ฌ์šฉํ•  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์‚ฌ์šฉ์ž, ์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ์˜ Kubernetes ๋ณด์•ˆ ๋น„๋ฐ€์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ฐ ๋ณด์•ˆ ๋น„๋ฐ€ ๊ฐ’์€ ์ด ๋น ๋ฅธ ์‹œ์ž‘์˜ ์ด์ „ ๋‹จ๊ณ„์—์„œ ์ง€์ •๋œ ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. DB_PASS๋ฅผ Cloud SQL ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ ๋‹จ๊ณ„์—์„œ ๋งŒ๋“  sqlserver ๋ฃจํŠธ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

kubectl create secret generic gke-cloud-sql-secrets \
  --from-literal=database=quickstart-db \
  --from-literal=username=sqlserver \
  --from-literal=password=DB_PASS

์ƒ˜ํ”Œ ์•ฑ ๋นŒ๋“œ

Go

  1. Cloud Shell์—์„œ ๋‹ค์Œ gcloud artifacts repositories create ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์™€ ๊ฐ™์€ ๋ฆฌ์ „์— gke-cloud-sql-repo๋ผ๋Š” Artifact Registry์— ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. YOUR_PROJECT_ID๋ฅผ ํ”„๋กœ์ ํŠธ ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    gcloud artifacts repositories create gke-cloud-sql-repo \
      --project=YOUR_PROJECT_ID \
      --repository-format=docker \
      --location=us-central1 \
      --description="GKE Quickstart sample app"
  2. Cloud Shell์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด gcloud builds submit ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  Artifact Registry์— ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค. YOUR_PROJECT_ID๋ฅผ ํ”„๋กœ์ ํŠธ ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    gcloud builds submit \
      --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .

Java

  1. Cloud Shell์—์„œ ๋‹ค์Œ gcloud artifacts repositories create ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์™€ ๊ฐ™์€ ๋ฆฌ์ „์— gke-cloud-sql-repo๋ผ๋Š” Artifact Registry์— ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. YOUR_PROJECT_ID๋ฅผ ํ”„๋กœ์ ํŠธ ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    gcloud artifacts repositories create gke-cloud-sql-repo \
      --project=YOUR_PROJECT_ID \
      --repository-format=docker \
      --location=us-central1 \
      --description="GKE Quickstart sample app"
  2. Cloud Shell์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด mvn ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  Artifact Registry์— ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค. YOUR_PROJECT_ID๋ฅผ ํ”„๋กœ์ ํŠธ ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    mvn clean package com.google.cloud.tools:jib-maven-plugin:2.8.0:build \
      -Dimage=us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql \
      -DskipTests -Djib.to.credHelper=gcloud

Node.js

  1. Cloud Shell์—์„œ ๋‹ค์Œ gcloud artifacts repositories create ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์™€ ๊ฐ™์€ ๋ฆฌ์ „์— gke-cloud-sql-repo๋ผ๋Š” Artifact Registry์— ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. YOUR_PROJECT_ID๋ฅผ ํ”„๋กœ์ ํŠธ ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    gcloud artifacts repositories create gke-cloud-sql-repo \
      --project=YOUR_PROJECT_ID \
      --repository-format=docker \
      --location=us-central1 \
      --description="GKE Quickstart sample app"
  2. Cloud Shell์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด gcloud builds submit ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  Artifact Registry์— ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค. YOUR_PROJECT_ID๋ฅผ ํ”„๋กœ์ ํŠธ ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    gcloud builds submit \
      --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .

Python

  1. Cloud Shell์—์„œ ๋‹ค์Œ gcloud artifacts repositories create ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ์™€ ๊ฐ™์€ ๋ฆฌ์ „์— gke-cloud-sql-repo๋ผ๋Š” Artifact Registry์— ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. YOUR_PROJECT_ID๋ฅผ ํ”„๋กœ์ ํŠธ ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    gcloud artifacts repositories create gke-cloud-sql-repo \
      --project=YOUR_PROJECT_ID \
      --repository-format=docker \
      --location=us-central1 \
      --description="GKE Quickstart sample app"
  2. Cloud Shell์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด gcloud builds submit ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜์—ฌ Docker ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  Artifact Registry์— ๊ฒŒ์‹œํ•ฉ๋‹ˆ๋‹ค. YOUR_PROJECT_ID๋ฅผ ํ”„๋กœ์ ํŠธ ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    gcloud builds submit \
      --tag us-central1-docker.pkg.dev/YOUR_PROJECT_ID/gke-cloud-sql-repo/gke-sql .

์ƒ˜ํ”Œ ์•ฑ ๋ฐฐํฌ

์‚ญ์ œ

์ด ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉํ•œ ๋ฆฌ์†Œ์Šค ๋น„์šฉ์ด Google Cloud ๊ณ„์ •์— ์ฒญ๊ตฌ๋˜์ง€ ์•Š๋„๋ก ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

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

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

  2. quickstart-instance ์ธ์Šคํ„ด์Šค๋ฅผ ์„ ํƒํ•˜์—ฌ ์ธ์Šคํ„ด์Šค ์„ธ๋ถ€์ •๋ณด ํŽ˜์ด์ง€๋ฅผ ์—ฝ๋‹ˆ๋‹ค.
  3. ํŽ˜์ด์ง€ ์ƒ๋‹จ์˜ ์•„์ด์ฝ˜ ํ‘œ์‹œ์ค„์—์„œ ์‚ญ์ œ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  4. ์ธ์Šคํ„ด์Šค ์‚ญ์ œ ๋Œ€ํ™”์ƒ์ž์—์„œ quickstart-instance๋ฅผ ์ž…๋ ฅํ•œ ํ›„ ์‚ญ์ œ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
  5. Google Cloud ์ฝ˜์†”์—์„œ Google Kubernetes Engine ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Google Kubernetes Engine์œผ๋กœ ์ด๋™

  6. gke-cloud-sql-quickstart ์„œ๋น„์Šค ์ด๋ฆ„ ์˜†์˜ ์ฒดํฌ๋ฐ•์Šค๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  7. Google Kubernetes Engine ํŽ˜์ด์ง€ ์ƒ๋‹จ์— ์žˆ๋Š” ์‚ญ์ œ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์„ ํƒ์ ์ธ ์‚ญ์ œ ๋‹จ๊ณ„

์ด ๋น ๋ฅธ ์‹œ์ž‘์—์„œ ๋งŒ๋“  Google Cloud ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์—๋Š” ์ด ๊ณ„์ •์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

    IAM์œผ๋กœ ์ด๋™

  2. gke-quickstart-service-account๋ผ๋Š” IAM ๊ณ„์ •์˜ ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ์‚ญ์ œ๋ฅผ ํด๋ฆญํ•˜๊ณ  ์‚ญ์ œ๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

์ด ๋น ๋ฅธ ์‹œ์ž‘์„ ์ง„ํ–‰ํ•˜๋Š” ๋™์•ˆ ์‚ฌ์šฉ ์„ค์ •๋œ API๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ๋Š” ์ด๋ฅผ ์‚ฌ์šฉ ์ค‘์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์ด ๋น ๋ฅธ ์‹œ์ž‘ ๋‚ด์—์„œ ์‚ฌ์šฉ ์„ค์ •๋œ API:
    • Compute Engine API
    • Cloud SQL Admin API
    • Google Kubernetes Engine API
    • Artifact Registry API
    • Cloud Build API
  1. Google Cloud ์ฝ˜์†”์—์„œ API ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    API๋กœ ์ด๋™

  2. ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ ค๋Š” API๋ฅผ ์„ ํƒํ•œ ํ›„ API ์‚ฌ์šฉ ์ค‘์ง€ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

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

Cloud SQL ์ธ์Šคํ„ด์Šค ๋งŒ๋“ค๊ธฐ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ(ํ•„์š”ํ•œ ๊ฒฝ์šฐ)

Cloud SQL ์ธ์Šคํ„ด์Šค์˜ SQL Server ์‚ฌ์šฉ์ž ๋ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•๋„ ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Cloud SQL ๊ฐ€๊ฒฉ ์ •๋ณด ์ฐธ์กฐํ•˜๊ธฐ

๋‹ค์Œ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ

๋˜ํ•œ ๋‹ค๋ฅธ Google Cloud ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ Cloud SQL ์ธ์Šคํ„ด์Šค์— ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”.