๋ณธ๋ฌธ์œผ๋กœ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

๐Ÿ”ง Multi-Region Infrastructure ๊ด€๋ฆฌ ๊ฐ€์ด๋“œ

๐Ÿ“‹ ๊ฐœ์š”โ€‹

Multi-Region Infrastructure์˜ ์ผ์ƒ์ ์ธ ๊ด€๋ฆฌ, ์„ค์ • ๋ณ€๊ฒฝ, ๊ทธ๋ฆฌ๊ณ  ์šด์˜ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค.

๐Ÿ—‚๏ธ ์„ค์ • ํŒŒ์ผ ๊ตฌ์กฐโ€‹

๊ณ„์ธต์  ์„ค์ • ์ƒ์†โ€‹

shared/common.hcl (์ „์—ญ ๊ณตํ†ต)
โฌ‡๏ธ
`[env]`/env.hcl (ํ™˜๊ฒฝ๋ณ„)
โฌ‡๏ธ
regions/`[region]`/region.hcl (์ง€์—ญ๋ณ„)
โฌ‡๏ธ
`[service]`/terragrunt.hcl (์„œ๋น„์Šค๋ณ„)

์„ค์ • ๋กœ๋”ฉ ํŒจํ„ดโ€‹

# ๋ชจ๋“  ์„œ๋น„์Šค์—์„œ ํ‘œ์ค€์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด
locals {
# ์ƒ์œ„ ์„ค์ •๋“ค ๋กœ๋“œ
env_vars = read_terragrunt_config(find_in_parent_folders("env.hcl"))
region_vars = read_terragrunt_config("../region.hcl")

# ๋™์  ๊ฐ’ ์ถ”์ถœ
project_id = local.region_vars.locals.project_id
region = local.region_vars.locals.region
zone = local.region_vars.locals.zone
}

๐ŸŽฏ ์ƒˆ๋กœ์šด Region ์ถ”๊ฐ€โ€‹

1๋‹จ๊ณ„: ๊ณตํ†ต ์„ค์ • ์—…๋ฐ์ดํŠธโ€‹

shared/regions.hcl์— ์ƒˆ region ์ถ”๊ฐ€โ€‹

locals {
regions = {
# ๊ธฐ์กด regions...

# ์ƒˆ๋กœ์šด US Region
"us-central1" = {
region = "us-central1"
zone = "us-central1-a"
timezone = "America/Chicago"
url_suffix = "us"

services = {
cloud_run_region = "us-central1"
cloudsql_region = "us-central1"
redis_region = "us-central1"
scheduler_region = "us-central1"
}
}
}
}

2๋‹จ๊ณ„: ํ™˜๊ฒฝ๋ณ„ ํ”„๋กœ์ ํŠธ ๋งคํ•‘โ€‹

[env]/env.hcl ์—…๋ฐ์ดํŠธโ€‹

locals {
projects = {
europe = { ... } # ๊ธฐ์กด
asia = { ... } # ๊ธฐ์กด

# ์ƒˆ๋กœ์šด US region ์ถ”๊ฐ€
us = {
project_id = "dta-cloud-us-dev" # ๋˜๋Š” ์ ์ ˆํ•œ naming
project_name = "dta-cloud-us-dev"
region = "us-central1"
zone = "us-central1-a"
timezone = "America/Chicago"
url_suffix = "us"
}
}

# ์„œ๋น„์Šค URL ์ถ”๊ฐ€
services = {
europe = { ... } # ๊ธฐ์กด
asia = { ... } # ๊ธฐ์กด

us = {
dta_wide_api_url = "https://dta-wide-api-${local.environment}-us-xxxxxxxx-uc.a.run.app"
}
}
}

3๋‹จ๊ณ„: Region ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑโ€‹

# ์ƒˆ region ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ
mkdir -p infrastructure/terragrunt/dev/regions/us-central1

# ๊ธฐ์กด region์—์„œ ๋ณต์‚ฌ
cp -r infrastructure/terragrunt/dev/regions/europe-west3/* \
infrastructure/terragrunt/dev/regions/us-central1/

# region.hcl ์ˆ˜์ •

regions/us-central1/region.hclโ€‹

locals {
# ๋ถ€๋ชจ ์„ค์ • ๋กœ๋“œ
env_vars = read_terragrunt_config("../../env.hcl").locals
regions_vars = read_terragrunt_config("../../../shared/regions.hcl").locals

# US region ์„ค์ •
current_region = "us-central1"
region_config = local.regions_vars.regions[local.current_region]

# US region ํ”„๋กœ์ ํŠธ ์ •๋ณด
project_id = local.env_vars.projects.us.project_id
region = local.region_config.region
zone = local.region_config.zone
}

4๋‹จ๊ณ„: ๋ฐฐํฌ ๋ฐ ๊ฒ€์ฆโ€‹

# ์ƒˆ๋กœ์šด region ๊ฒ€์ฆ
terragrunt validate --terragrunt-working-dir dev/regions/us-central1/

# ๋‹จ๊ณ„๋ณ„ ๋ฐฐํฌ
terragrunt apply --terragrunt-working-dir dev/regions/us-central1/network/
terragrunt apply --terragrunt-working-dir dev/regions/us-central1/cloudsql/
# ... ๊ธฐํƒ€ ์„œ๋น„์Šค๋“ค

๐Ÿ”„ ํ™˜๊ฒฝ ๊ด€๋ฆฌโ€‹

์ƒˆ๋กœ์šด Environment ์ถ”๊ฐ€โ€‹

1. ํ™˜๊ฒฝ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑโ€‹

# ์ƒˆ๋กœ์šด ํ™˜๊ฒฝ (์˜ˆ: staging2) ์ƒ์„ฑ
cp -r infrastructure/terragrunt/dev infrastructure/terragrunt/staging2

2. env.hcl ์—…๋ฐ์ดํŠธโ€‹

locals {
environment = "staging2"

projects = {
europe = {
project_id = "dta-cloud-de-staging2"
}
asia = {
project_id = "dta-cloud-staging2"
}
}
}

Environment๊ฐ„ ์„ค์ • ๋™๊ธฐํ™”โ€‹

# Dev์—์„œ Stage๋กœ ์„ค์ • ๋™๊ธฐํ™”
./scripts/sync-env-config.sh dev stage

# ๋ชจ๋“  ํ™˜๊ฒฝ์— ๊ณตํ†ต ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ ์šฉ
./scripts/apply-global-changes.sh

๐Ÿ“Š ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌโ€‹

ํ”„๋กœ์ ํŠธ ์ƒ์„ฑโ€‹

์ˆ˜๋™ ์ƒ์„ฑ (๊ถŒ์žฅ)โ€‹

# EU region ํ”„๋กœ์ ํŠธ
gcloud projects create dta-cloud-de-dev \
--organization=778204568675 \
--name="DTA Cloud DE Dev"

# Asia region ํ”„๋กœ์ ํŠธ
gcloud projects create dta-cloud-dev \
--organization=778204568675 \
--name="DTA Cloud Dev"

# Billing ๊ณ„์ • ์—ฐ๊ฒฐ
gcloud billing projects link dta-cloud-de-dev \
--billing-account=01A3DE-04193F-06C496

Terragrunt ๊ธฐ๋ฐ˜ ์ƒ์„ฑโ€‹

# Global project-creation ๋ชจ๋“ˆ ์‚ฌ์šฉ
terragrunt apply --terragrunt-working-dir dev/global/project-creation/

ํ”„๋กœ์ ํŠธ ๊ถŒํ•œ ์„ค์ •โ€‹

# DevOps ํŒ€ ๊ถŒํ•œ ๋ถ€์—ฌ
gcloud projects add-iam-policy-binding dta-cloud-dev \
--member="user:bok@weltcorp.com" \
--role="roles/editor"

# Service Account ๊ถŒํ•œ ๋ถ€์—ฌ
gcloud projects add-iam-policy-binding dta-cloud-dev \
--member="serviceAccount:terraform@dta-cloud-de-dev.iam.gserviceaccount.com" \
--role="roles/editor"

๐Ÿ”ง ์„œ๋น„์Šค๋ณ„ ๊ด€๋ฆฌโ€‹

Cloud SQL ๊ด€๋ฆฌโ€‹

Region๋ณ„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ์Šคํ„ด์Šคโ€‹

# Europe region
instance_name = "db-dta-wide-${local.environment}-eu"
region = "europe-west3"

# Asia region
instance_name = "db-dta-wide-${local.environment}-asia"
region = "asia-northeast3"

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜โ€‹

# Asia region์— ์ดˆ๊ธฐ ์Šคํ‚ค๋งˆ ์„ค์ •
psql -h <asia-db-ip> -U admin -d dta_wide_0_1_0 < schema.sql

# ๊ธฐ์กด EU ๋ฐ์ดํ„ฐ๋ฅผ Asia๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ (์„ ํƒ์ )
pg_dump -h <eu-db-ip> -U admin dta_wide_0_1_0 | \
psql -h <asia-db-ip> -U admin dta_wide_0_1_0

Redis ์บ์‹œ ๊ด€๋ฆฌโ€‹

Region๋ณ„ ์บ์‹œ ์ „๋žตโ€‹

# ๊ฐ region๋ณ„ ๋…๋ฆฝ์ ์ธ ์บ์‹œ
locals {
redis_configs = {
europe = {
memory_size_gb = 2 # EU ์‚ฌ์šฉ์ž ๋งŽ์Œ
tier = "STANDARD_HA"
}
asia = {
memory_size_gb = 1 # ์ดˆ๊ธฐ ๋‹จ๊ณ„
tier = "BASIC"
}
}
}

๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌโ€‹

CIDR ๋ฒ”์œ„ ๊ด€๋ฆฌโ€‹

# Region๋ณ„ ๊ฒน์น˜์ง€ ์•Š๋Š” IP ๋ฒ”์œ„
vpc_cidrs = {
europe = "10.8.0.0/16" # EU VPC
asia = "10.9.0.0/16" # Asia VPC
us = "10.10.0.0/16" # ๋ฏธ๋ž˜ US VPC
}

# VPC Connector CIDR
connector_cidrs = {
europe = "10.8.0.0/28" # EU Connector
asia = "10.9.0.0/28" # Asia Connector
us = "10.10.0.0/28" # ๋ฏธ๋ž˜ US Connector
}

๐Ÿ“‹ ์ผ์ƒ์ ์ธ ์šด์˜ ์ž‘์—…โ€‹

์„ค์ • ๋ณ€๊ฒฝโ€‹

๊ณตํ†ต ์„ค์ • ๋ณ€๊ฒฝโ€‹

# 1. shared/common.hcl ์ˆ˜์ •
# 2. ๋ชจ๋“  ํ™˜๊ฒฝ์— ์ ์šฉ
for env in dev stage prod; do
terragrunt run-all apply --terragrunt-working-dir $env/
done

ํŠน์ • Region ์„ค์ • ๋ณ€๊ฒฝโ€‹

# Asia region CloudSQL ๋ฉ”๋ชจ๋ฆฌ ์ฆ๊ฐ€
terragrunt apply --terragrunt-working-dir dev/regions/asia-northeast3/cloudsql/

# ํŠน์ • ์„œ๋น„์Šค๋งŒ ์—…๋ฐ์ดํŠธ
terragrunt apply --terragrunt-working-dir dev/regions/asia-northeast3/memorystore/

๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ๋กœ๊น…โ€‹

Region๋ณ„ ๋ชจ๋‹ˆํ„ฐ๋งโ€‹

# Europe region ์ƒํƒœ ํ™•์ธ
gcloud monitoring dashboards list --project=dta-cloud-de-dev

# Asia region ์ƒํƒœ ํ™•์ธ
gcloud monitoring dashboards list --project=dta-cloud-dev

ํ†ตํ•ฉ ๋กœ๊ทธ ๋ถ„์„โ€‹

# ๋ชจ๋“  region์˜ ๋กœ๊ทธ ํ†ตํ•ฉ ์ฟผ๋ฆฌ
gcloud logging read "
resource.type=cloud_run_revision AND
(resource.labels.project_id=dta-cloud-de-dev OR resource.labels.project_id=dta-cloud-dev)
" --limit=100

๐Ÿšจ ์žฅ์•  ๋Œ€์‘โ€‹

Region๋ณ„ ์žฅ์•  ์‹œ๋‚˜๋ฆฌ์˜คโ€‹

Europe Region ์žฅ์• โ€‹

# 1. Asia region์œผ๋กœ ํŠธ๋ž˜ํ”ฝ ์šฐํšŒ
gcloud compute url-maps edit dta-wide-global-lb

# 2. ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™” ํ™•์ธ
# 3. ์„œ๋น„์Šค ๋ณต๊ตฌ ํ›„ ํŠธ๋ž˜ํ”ฝ ๋ณต์›

Asia Region ์žฅ์• โ€‹

# 1. Europe region์—์„œ Asia ์‚ฌ์šฉ์ž ์ฒ˜๋ฆฌ
# 2. ์บ์‹œ ๋ฐ์ดํ„ฐ ๋ณต๊ตฌ
# 3. ๋‹จ๊ณ„์  ์„œ๋น„์Šค ๋ณต์›

Cross-Region ๋ฐ์ดํ„ฐ ๋ณต๊ตฌโ€‹

# Europe -> Asia ๋ฐ์ดํ„ฐ ๋ณต์ œ
gcloud sql export sql dta-wide-eu-instance gs://backup-bucket/eu-backup.sql \
--project=dta-cloud-de-dev

gcloud sql import sql dta-wide-asia-instance gs://backup-bucket/eu-backup.sql \
--project=dta-cloud-dev

๐Ÿ”„ ์—…๋ฐ์ดํŠธ ๋ฐ ํŒจ์น˜โ€‹

Rolling Update ์ „๋žตโ€‹

์„œ๋น„์Šค๋ณ„ ์—…๋ฐ์ดํŠธ ์ˆœ์„œโ€‹

  1. Global Services: APIs, IAM, Firebase
  2. Network Infrastructure: VPC, Subnets
  3. Data Services: Cloud SQL, Memorystore
  4. Compute Services: Cloud Run, Scheduler
  5. Monitoring: OTEL, Logging

๐Ÿ› ๏ธ ์œ ์šฉํ•œ ์Šคํฌ๋ฆฝํŠธโ€‹

์ผ๊ด„ ๋ฐฐํฌ ์Šคํฌ๋ฆฝํŠธโ€‹

#!/bin/bash
# deploy-all-regions.sh

ENVIRONMENT=${1:-dev}
ACTION=${2:-plan}

echo "๐Ÿš€ Deploying $ENVIRONMENT environment..."

# Global services first
echo "๐Ÿ“ฆ Deploying global services..."
terragrunt run-all $ACTION --terragrunt-working-dir $ENVIRONMENT/global/

# Europe region
echo "๐Ÿ‡ช๐Ÿ‡บ Deploying Europe region..."
terragrunt run-all $ACTION --terragrunt-working-dir $ENVIRONMENT/regions/europe-west3/

# Asia region
echo "๐Ÿ‡ฐ๐Ÿ‡ท Deploying Asia region..."
terragrunt run-all $ACTION --terragrunt-working-dir $ENVIRONMENT/regions/asia-northeast3/

echo "โœ… Deployment completed!"

์„ค์ • ๊ฒ€์ฆ ์Šคํฌ๋ฆฝํŠธโ€‹

#!/bin/bash
# validate-all.sh

for env in dev stage prod; do
echo "๐Ÿ” Validating $env environment..."

# Global services
terragrunt validate --terragrunt-working-dir $env/global/

# Regional services
for region in europe-west3 asia-northeast3; do
echo " ๐Ÿ“ Validating $region..."
terragrunt validate --terragrunt-working-dir $env/regions/$region/
done
done

๋น„์šฉ ๋ชจ๋‹ˆํ„ฐ๋ง ์Šคํฌ๋ฆฝํŠธโ€‹

#!/bin/bash
# cost-monitoring.sh

echo "๐Ÿ’ฐ Multi-Region Cost Analysis"

# Europe region ๋น„์šฉ
echo "๐Ÿ‡ช๐Ÿ‡บ Europe Region Costs:"
gcloud billing budgets list --project=dta-cloud-de-dev

# Asia region ๋น„์šฉ
echo "๐Ÿ‡ฐ๐Ÿ‡ท Asia Region Costs:"
gcloud billing budgets list --project=dta-cloud-dev

# ๋น„์šฉ ์•Œ๋ฆผ ์„ค์ •
gcloud alpha billing budgets create \
--billing-account=01A3DE-04193F-06C496 \
--display-name="DTA-Wide Multi-Region Budget" \
--budget-amount=500USD

๐Ÿ“Š ์„ฑ๋Šฅ ํŠœ๋‹โ€‹

Region๋ณ„ ๋ฆฌ์†Œ์Šค ์ตœ์ ํ™”โ€‹

์‚ฌ์šฉ๋Ÿ‰ ๊ธฐ๋ฐ˜ ์กฐ์ •โ€‹

# ์‹ค์ œ ์‚ฌ์šฉ๋Ÿ‰์— ๋”ฐ๋ฅธ ๋™์  ์กฐ์ •
locals {
# ์‚ฌ์šฉ์ž ๋ถ„ํฌ์— ๋”ฐ๋ฅธ ๋ฆฌ์†Œ์Šค ํ• ๋‹น
user_distribution = {
europe = 70 # 70% ์‚ฌ์šฉ์ž
asia = 30 # 30% ์‚ฌ์šฉ์ž
}

# ๋น„๋ก€์  ๋ฆฌ์†Œ์Šค ํ• ๋‹น
instance_configs = {
europe = {
min_instances = ceil(local.user_distribution.europe / 10) # 7๊ฐœ
max_instances = local.user_distribution.europe / 5 # 14๊ฐœ
}
asia = {
min_instances = ceil(local.user_distribution.asia / 10) # 3๊ฐœ
max_instances = local.user_distribution.asia / 5 # 6๊ฐœ
}
}
}

์˜คํ† ์Šค์ผ€์ผ๋ง ์„ค์ •โ€‹

# Cloud Run ์˜คํ† ์Šค์ผ€์ผ๋ง ์—…๋ฐ์ดํŠธ
gcloud run services update dta-wide-api \
--region=asia-northeast3 \
--project=dta-cloud-dev \
--min-instances=0 \
--max-instances=5

๐Ÿ” ๋ณด์•ˆ ๊ด€๋ฆฌโ€‹

Service Account ๊ด€๋ฆฌโ€‹

Cross-Region Service Account ๊ถŒํ•œโ€‹

# Asia region Service Account๊ฐ€ EU BigQuery ์ ‘๊ทผ
gcloud projects add-iam-policy-binding dta-cloud-de-dev \
--member="serviceAccount:dta-wide-api@dta-cloud-dev.iam.gserviceaccount.com" \
--role="roles/bigquery.dataViewer"

๋„คํŠธ์›Œํฌ ๋ณด์•ˆโ€‹

# Region๋ณ„ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ๊ด€๋ฆฌ
gcloud compute firewall-rules create allow-asia-to-eu-db \
--project=dta-cloud-de-dev \
--source-ranges=10.9.0.0/16 \
--allow=tcp:5432 \
--target-tags=cloudsql-asia-access

์‹œํฌ๋ฆฟ ๊ด€๋ฆฌโ€‹

Region๋ณ„ ์‹œํฌ๋ฆฟ ๋ณต์ œโ€‹

# EU์—์„œ Asia๋กœ ์‹œํฌ๋ฆฟ ๋ณต์ œ
gcloud secrets versions access latest \
--secret=dta-wide-api-key \
--project=dta-cloud-de-dev | \
gcloud secrets create dta-wide-api-key \
--project=dta-cloud-dev \
--data-file=-

๐Ÿ“ˆ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์•Œ๋ฆผโ€‹

Multi-Region ๋Œ€์‹œ๋ณด๋“œโ€‹

ํ†ตํ•ฉ ๋ชจ๋‹ˆํ„ฐ๋ง ์„ค์ •โ€‹

# monitoring-config.yaml
dashboards:
- name: "Multi-Region Overview"
widgets:
- title: "EU Region Health"
project: "dta-cloud-de-dev"
metrics: ["cloud_run/request_count", "cloudsql/cpu_utilization"]

- title: "Asia Region Health"
project: "dta-cloud-dev"
metrics: ["cloud_run/request_count", "cloudsql/cpu_utilization"]

- title: "Cross-Region Comparison"
projects: ["dta-cloud-de-dev", "dta-cloud-dev"]
metrics: ["latency", "error_rate", "throughput"]

์•Œ๋ฆผ ์ •์ฑ…โ€‹

# Region๋ณ„ ์•Œ๋ฆผ ์ •์ฑ… ์„ค์ •
gcloud alpha monitoring policies create \
--policy-file=multi-region-alerts.yaml \
--project=dta-cloud-de-dev

# Cross-region ์žฅ์•  ์•Œ๋ฆผ
gcloud alpha monitoring policies create \
--notification-channels=$SLACK_CHANNEL \
--display-name="Multi-Region Failover Alert"

๐Ÿ”„ ๋ฐฑ์—… ๋ฐ ๋ณต๊ตฌโ€‹

์ž๋™ ๋ฐฑ์—… ์„ค์ •โ€‹

Cross-Region ๋ฐฑ์—…โ€‹

# Cloud SQL ์ž๋™ ๋ฐฑ์—…
backup_configuration = {
enabled = true
start_time = "02:00" # ๊ฐ region timezone ๊ธฐ์ค€
location = "asia-northeast3" # ๋ฐฑ์—… ์ €์žฅ ์œ„์น˜
point_in_time_recovery_enabled = true

# Cross-region ๋ฐฑ์—…
backup_retention_settings = {
retained_backups = 30
retention_unit = "COUNT"
}
}

๋ฐ์ดํ„ฐ ๋™๊ธฐํ™” ์Šค์ผ€์ค„โ€‹

# ๋งค์‹œ๊ฐ„ ์ฆ๋ถ„ ๋™๊ธฐํ™”
0 * * * * /scripts/sync-eu-to-asia.sh

# ๋งค์ผ ์ „์ฒด ๋ฐฑ์—…
0 2 * * * /scripts/full-backup-cross-region.sh

๐ŸŽฏ ์šด์˜ ์ฒดํฌ๋ฆฌ์ŠคํŠธโ€‹

์ผ์ผ ์ฒดํฌโ€‹

  • ๋ชจ๋“  region ์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธ
  • ์ง€์—ฐ์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ™•์ธ
  • ์—๋Ÿฌ์œจ ์ž„๊ณ„์น˜ ํ™•์ธ
  • ๋น„์šฉ ์‚ฌ์šฉ๋Ÿ‰ ํ™•์ธ

์ฃผ๊ฐ„ ์ฒดํฌโ€‹

  • ๊ฐ region๋ณ„ ์„ฑ๋Šฅ ๋ฆฌํฌํŠธ ๊ฒ€ํ† 
  • ๋ฐฑ์—… ์ƒํƒœ ๊ฒ€์ฆ
  • ๋ณด์•ˆ ์—…๋ฐ์ดํŠธ ์ ์šฉ
  • ์šฉ๋Ÿ‰ ๊ณ„ํš ๊ฒ€ํ† 

์›”๊ฐ„ ์ฒดํฌโ€‹

  • ๋น„์šฉ ์ตœ์ ํ™” ๋ถ„์„
  • ์ƒˆ๋กœ์šด region ํ•„์š”์„ฑ ๊ฒ€ํ† 
  • DR(์žฌํ•ด๋ณต๊ตฌ) ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰
  • ์•„ํ‚คํ…์ฒ˜ ๊ฐœ์„ ์‚ฌํ•ญ ๊ฒ€ํ† 

๐Ÿšจ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…โ€‹

์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋“คโ€‹

์„ค์ • ๋ฌธ์ œโ€‹

# Terragrunt ์„ค์ • ๊ฒ€์ฆ
terragrunt validate --terragrunt-working-dir dev/regions/asia-northeast3/

# ์ข…์†์„ฑ ๊ทธ๋ž˜ํ”„ ํ™•์ธ
terragrunt graph-dependencies --terragrunt-working-dir dev/

๊ถŒํ•œ ๋ฌธ์ œโ€‹

# Service Account ๊ถŒํ•œ ํ™•์ธ
gcloud projects get-iam-policy dta-cloud-dev \
--flatten="bindings[].members" \
--filter="bindings.members:serviceAccount:*"

๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ๋ฌธ์ œโ€‹

# VPC Connector ์ƒํƒœ ํ™•์ธ
gcloud compute networks vpc-access connectors list \
--region=asia-northeast3 \
--project=dta-cloud-dev

๐Ÿ“š ๊ด€๋ จ ๋ฌธ์„œโ€‹


๐Ÿ“ง ๋ฌธ์˜: DevOps Team (bok@weltcorp.com)