VPC ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ

์ปค๋„ฅํ„ฐ๊ฐ€ ํ•„์š” ์—†๋Š” Direct VPC ์ด๊ทธ๋ ˆ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ VPC ๋„คํŠธ์›Œํฌ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†กํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ Direct VPC ์ด๊ทธ๋ ˆ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ๋Œ€์‹  ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ์ปค๋„ฅํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ด ํŽ˜์ด์ง€์—์„œ๋Š” ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cloud Run ์„œ๋น„์Šค ๋˜๋Š” ์ž‘์—…์„ VPC ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐํ•˜์—ฌ Cloud Run์—์„œ Compute Engine VM ์ธ์Šคํ„ด์Šค, Memorystore ์ธ์Šคํ„ด์Šค, ๋‚ด๋ถ€ IP ์ฃผ์†Œ๊ฐ€ ์žˆ๋Š” ๊ธฐํƒ€ ๋ฆฌ์†Œ์Šค์— ์ด๊ทธ๋ ˆ์Šค(์•„์›ƒ๋ฐ”์šด๋“œ) ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

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

  • ํ”„๋กœ์ ํŠธ์— VPC ๋„คํŠธ์›Œํฌ๊ฐ€ ์•„์ง ์—†๋Š” ๊ฒฝ์šฐ VPC ๋„คํŠธ์›Œํฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

  • ๊ณต์œ  VPC๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ œํ’ˆ์˜ ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ๊ตฌ์„ฑ์„ ๊ตฌ์ฒด์ ์œผ๋กœ ๋‹ค๋ฃจ๋Š” ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  • Cloud Deployment Manager ์‚ฌ์šฉ์„ ๊ธˆ์ง€ํ•˜๋Š” ์กฐ์ง ์ •์ฑ… ์ œ์•ฝ์กฐ๊ฑด์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ์ปค๋„ฅํ„ฐ๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ปค๋„ฅํ„ฐ๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋ ค๋ฉด Deployment Manager ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

  • ํ”„๋กœ์ ํŠธ์— ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ด๋ฏธ์ง€ ์ •์ฑ…์ด ์„ค์ •๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ constraints/compute.trustedimageProjects ์กฐ์ง ์ •์ฑ…์—์„œ serverless-vpc-access-images ํ”„๋กœ์ ํŠธ๋ฅผ ํ—ˆ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์ปค๋„ฅํ„ฐ ์„œ๋ธŒ๋„ท ์š”๊ตฌ์‚ฌํ•ญ

  • ๊ฐ ์ปค๋„ฅํ„ฐ์—๋Š” /28 ๊ธฐ๋ณธ IPv4 ์ฃผ์†Œ ๋ฒ”์œ„๊ฐ€ ์žˆ๋Š” ์ž์ฒด PRIVATE์šฉ ์ „์šฉ ์„œ๋ธŒ๋„ท์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ธŒ๋„ท์€ VM, Private Service Connect ๋˜๋Š” ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋ฆฌ์†Œ์Šค์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ปค๋„ฅํ„ฐ๋ฅผ ๋งŒ๋“  ํ›„์—๋Š” ์„œ๋ธŒ๋„ท์„ ํ™•์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. /28๋กœ ์œ ์ง€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ๊ณต์œ  VPC ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋น„์Šค ํ”„๋กœ์ ํŠธ์—์„œ ์ปค๋„ฅํ„ฐ๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ๋จผ์ € ๊ณต์œ  VPC ๋„คํŠธ์›Œํฌ์˜ ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ์ž๊ฐ€ ์ปค๋„ฅํ„ฐ์˜ ์„œ๋ธŒ๋„ท์„ ์ˆ˜๋™์œผ๋กœ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • ์ปค๋„ฅํ„ฐ์—์„œ ์ˆ˜๋™์œผ๋กœ ์ƒ์„ฑ๋œ ๊ธฐ์กด ์„œ๋ธŒ๋„ท์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„œ๋ธŒ๋„ท์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute networks subnets describe SUBNET --region=REGION

    SUBNET์„ ์„œ๋ธŒ๋„ท ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊พธ๊ณ  REGION์„ ์„œ๋ธŒ๋„ท์ด ํฌํ•จ๋œ ๋ฆฌ์ „์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    ์ถœ๋ ฅ์—์„œ ๋‹ค์Œ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    • ์„œ๋ธŒ๋„ท์€ ์ผ๋ฐ˜ ์„œ๋ธŒ๋„ท์ž…๋‹ˆ๋‹ค. Google Cloud CLI์—์„œ ์ด๋Š” ์šฉ๋„์˜ ๊ฐ’์ด PRIVATE์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
    • ์„œ๋ธŒ๋„ท์˜ ๊ธฐ๋ณธ IPv4 ์ฃผ์†Œ ๋ฒ”์œ„ ipCidrRange๋Š” /28์ž…๋‹ˆ๋‹ค.
  • ์ปค๋„ฅํ„ฐ์—์„œ ์‚ฌ์šฉ๋˜๋Š” VPC ๋„คํŠธ์›Œํฌ๊ฐ€ ํฌํ•จ๋œ ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ์— ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ์ปค๋„ฅํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์ปค๋„ฅํ„ฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „์— ์ปค๋„ฅํ„ฐ์˜ ์„œ๋ธŒ๋„ท์„ ์ˆ˜๋™์œผ๋กœ ๋งŒ๋“ค๊ฑฐ๋‚˜ Google Cloud ์—์„œ ์ปค๋„ฅํ„ฐ์˜ ์„œ๋ธŒ๋„ท์„ ์ž๋™์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    Google Cloud ์—์„œ ์ปค๋„ฅํ„ฐ์˜ ์„œ๋ธŒ๋„ท์„ ๋งŒ๋“ค ๋•Œ ๋‹ค์Œ ์‚ฌํ•ญ์— ์œ ์˜ํ•˜์„ธ์š”.

    • ์ปค๋„ฅํ„ฐ๋ฅผ ์œ„ํ•ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ ์„œ๋ธŒ๋„ท์€ Google Cloud ์ฝ˜์†”, Google Cloud CLI ๋˜๋Š” Compute Engine API ์‚ฌ์šฉ ์—ฌ๋ถ€์— ๊ด€๊ณ„์—†์ด ์„œ๋ธŒ๋„ท์„ ๋‚˜์—ดํ•  ๋•Œ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

    • ์ปค๋„ฅํ„ฐ๋ฅผ ์œ„ํ•ด ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ ์„œ๋ธŒ๋„ท์€ ์„ค๋ช…ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

    • ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋œ ์„œ๋ธŒ๋„ท์€ VPC ๋„คํŠธ์›Œํฌ๋ฅผ ์„ค๋ช…ํ•  ๋•Œ ํ‘œ์‹œ๋˜๋Š” ์„œ๋ธŒ๋„ท ๋ชฉ๋ก์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ ์‚ฌ์šฉ ์ค‘์ธ IP ์ฃผ์†Œ ๋ฒ”์œ„๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๊ธฐ์กด ์„œ๋ธŒ๋„ท์„ ๋‚˜์—ดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋น„๋กฏํ•˜์—ฌ ์„œ๋ธŒ๋„ท์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์„œ๋ธŒ๋„ท ์ž‘์—…์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

IPv6 ํŠธ๋ž˜ํ”ฝ์€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ปค๋„ฅํ„ฐ ๋งŒ๋“ค๊ธฐ

๊ณต๊ฐœ ์ธํ„ฐ๋„ท์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  VPC ๋„คํŠธ์›Œํฌ์— ์š”์ฒญ์„ ๋ณด๋‚ด๊ณ  ์ด์— ๋Œ€ํ•œ ์‘๋‹ต์„ ์ˆ˜์‹ ํ•˜๋ ค๋ฉด ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

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

์ปค๋„ฅํ„ฐ๊ฐ€ ์„œ๋น„์Šค ํ”„๋กœ์ ํŠธ์— ์žˆ๊ณ  ๊ณต์œ  VPC ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ปค๋„ฅํ„ฐ์™€ ์—ฐ๊ฒฐ๋œ VPC ๋„คํŠธ์›Œํฌ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค๋„ฅํ„ฐ์™€ ํ•ด๋‹น VPC ๋„คํŠธ์›Œํฌ๊ฐ€ ์„œ๋กœ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์— ์žˆ๋Š” ๊ฒฝ์šฐ ๊ณต์œ  VPC ๋„คํŠธ์›Œํฌ ๊ด€๋ฆฌ์ž๊ฐ€ ์ปค๋„ฅํ„ฐ๋ฅผ ๋งŒ๋“ค๊ธฐ ์ „์— ๊ณต์œ  VPC ๋„คํŠธ์›Œํฌ์—์„œ ์ปค๋„ฅํ„ฐ์˜ ์„œ๋ธŒ๋„ท์„ ๋งŒ๋“ค์–ด์•ผ ํ•˜๊ณ  ์‚ฌ์šฉ์ž๋Š” ๊ธฐ์กด ์„œ๋ธŒ๋„ท์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปค๋„ฅํ„ฐ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋ธŒ๋„ท ์š”๊ตฌ์‚ฌํ•ญ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ปค๋„ฅํ„ฐ ์„œ๋ธŒ๋„ท ์š”๊ตฌ์‚ฌํ•ญ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋จธ์‹  ์œ ํ˜• ๋ฐ ํ™•์žฅ์„ ํฌํ•จํ•œ ์ปค๋„ฅํ„ฐ ์ฒ˜๋ฆฌ๋Ÿ‰์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฒ˜๋ฆฌ๋Ÿ‰ ๋ฐ ํ™•์žฅ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

Google Cloud ์ฝ˜์†”, Google Cloud CLI ๋˜๋Š” Terraform์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปค๋„ฅํ„ฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ๊ฐœ์š” ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค๋กœ ์ด๋™

  2. ์ปค๋„ฅํ„ฐ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์ด๋ฆ„ ํ•„๋“œ์— Compute Engine ์ด๋ฆ„ ์ง€์ • ๊ทœ์น™๊ณผ ์ผ์น˜ํ•˜๋Š” ์ปค๋„ฅํ„ฐ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์ถ”๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ์œผ๋กœ ์ด๋ฆ„์€ 21์ž ๋ฏธ๋งŒ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ดํ”ˆ(-)์€ 2์ž๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.

  4. ๋ฆฌ์ „ ํ•„๋“œ์—์„œ ์ปค๋„ฅํ„ฐ์˜ ๋ฆฌ์ „์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฆฌ์ „์€ ์„œ๋ฒ„๋ฆฌ์Šค ์„œ๋น„์Šค์˜ ๋ฆฌ์ „๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ์„œ๋น„์Šค ๋˜๋Š” ์ž‘์—…์ด us-central ๋˜๋Š” europe-west ๋ฆฌ์ „์— ์žˆ์œผ๋ฉด us-central1 ๋˜๋Š” europe-west1์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

  5. ๋„คํŠธ์›Œํฌ ํ•„๋“œ์—์„œ ์ปค๋„ฅํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•  VPC ๋„คํŠธ์›Œํฌ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  6. ์„œ๋ธŒ๋„ท ํ•„๋“œ์—์„œ ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    • ๊ธฐ์กด ์„œ๋ธŒ๋„ท์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปค๋„ฅํ„ฐ ๋งŒ๋“ค๊ธฐ: ์„œ๋ธŒ๋„ท ํ•„๋“œ์—์„œ ๊ธฐ์กด ์„œ๋ธŒ๋„ท์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    • ์ปค๋„ฅํ„ฐ ๋ฐ ์ƒˆ ์„œ๋ธŒ๋„ท ๋งŒ๋“ค๊ธฐ: ์„œ๋ธŒ๋„ท ํ•„๋“œ์—์„œ ์ปค์Šคํ…€ IP ๋ฒ”์œ„๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” /28 CIDR(์˜ˆ: 10.8.0.0/28)์˜ ์ฒซ ๋ฒˆ์งธ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜์—ฌ Google Cloud ์—์„œ ์ปค๋„ฅํ„ฐ์˜ VPC ๋„คํŠธ์›Œํฌ์— ๋งŒ๋“œ๋Š” ์ƒˆ ์„œ๋ธŒ๋„ท์˜ ๊ธฐ๋ณธ IPv4 ์ฃผ์†Œ ๋ฒ”์œ„๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. IP ๋ฒ”์œ„๊ฐ€ ์ปค๋„ฅํ„ฐ์˜ VPC ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š” ๊ธฐ์กด ๊ฒฝ๋กœ์™€ ์ถฉ๋Œํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ์„œ๋ธŒ๋„ท์˜ ์ด๋ฆ„์€ ํ”„๋ฆฌํ”ฝ์Šค 'aet-'๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

  7. (์„ ํƒ์‚ฌํ•ญ) ์ปค๋„ฅํ„ฐ๋ฅผ ์ถ”๊ฐ€๋กœ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ํ™•์žฅ ์˜ต์…˜์„ ์„ค์ •ํ•˜๋ ค๋ฉด ํ™•์žฅ ์„ค์ • ํ‘œ์‹œ๋ฅผ ํด๋ฆญํ•˜์—ฌ ํ™•์žฅ ์–‘์‹์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.

    1. ์ปค๋„ฅํ„ฐ์˜ ์ตœ์†Œ ๋ฐ ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ์ˆ˜๋ฅผ ์„ค์ •ํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋ณธ๊ฐ’ 2(์ตœ์†Œ)์™€ 10(์ตœ๋Œ€)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ปค๋„ฅํ„ฐ๋Š” ํŠธ๋ž˜ํ”ฝ ์‚ฌ์šฉ๋Ÿ‰์ด ํ•„์š”ํ•˜๋ฉด ์ง€์ •๋œ ์ตœ๋Œ€ ์ˆ˜๋กœ ํ™•์žฅ๋˜์ง€๋งŒ ํŠธ๋ž˜ํ”ฝ์ด ๊ฐ์†Œํ•˜๋ฉด ์ปค๋„ฅํ„ฐ๊ฐ€ ์ถ•์†Œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. 2์™€ 10 ์‚ฌ์ด์˜ ๊ฐ’์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    2. ์ธ์Šคํ„ด์Šค ์œ ํ˜• ๋ฉ”๋‰ด์—์„œ ์ปค๋„ฅํ„ฐ์— ์‚ฌ์šฉํ•  ๋จธ์‹  ์œ ํ˜•์„ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ๊ธฐ๋ณธ e2-micro๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์—ญํญ๊ณผ ๋น„์šฉ ์ถ”์ •์„ ํ‘œ์‹œํ•˜๋Š” ์ธ์Šคํ„ด์Šค ์œ ํ˜•์„ ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ๋น„์šฉ ์‚ฌ์ด๋“œ๋ฐ”๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  8. ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  9. ์‚ฌ์šฉํ•  ์ค€๋น„๊ฐ€ ๋˜๋ฉด ์ปค๋„ฅํ„ฐ ์ด๋ฆ„ ์˜†์— ๋…น์ƒ‰ ์ฒดํฌํ‘œ์‹œ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. gcloud ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    gcloud components update
  3. ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค API๊ฐ€ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•ด ์‚ฌ์šฉ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    gcloud services enable vpcaccess.googleapis.com
  4. ๋‹ค์Œ ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปค๋„ฅํ„ฐ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    ์ž์„ธํ•œ ๋‚ด์šฉ๊ณผ ์„ ํƒ์  ์ธ์ˆ˜๋Š” gcloud ์ฐธ์กฐ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

    • ๊ธฐ์กด ์„œ๋ธŒ๋„ท์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปค๋„ฅํ„ฐ ๋งŒ๋“ค๊ธฐ:

      gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
       --region REGION \
       --subnet SUBNET_NAME \
       --subnet-project HOST_PROJECT_ID \
       --min-instances MIN \
       --max-instances MAX \
       --machine-type MACHINE_TYPE

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

      • CONNECTOR_NAME: Compute Engine ์ด๋ฆ„ ์ง€์ • ๊ทœ์น™๊ณผ ์ผ์น˜ํ•˜๋Š” ์ปค๋„ฅํ„ฐ ์ด๋ฆ„์œผ๋กœ, ์ถ”๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ์œผ๋กœ ์ด๋ฆ„์ด 21์ž ๋ฏธ๋งŒ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ํ•˜์ดํ”ˆ(-)์€ 2์ž๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.
      • REGION: ์ปค๋„ฅํ„ฐ์˜ ๋ฆฌ์ „์œผ๋กœ, ์„œ๋ฒ„๋ฆฌ์Šค ์„œ๋น„์Šค ๋˜๋Š” ์ž‘์—…์˜ ๋ฆฌ์ „๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๋˜๋Š” ์ž‘์—…์ด us-central ๋˜๋Š” europe-west์— ์žˆ์œผ๋ฉด us-central1 ๋˜๋Š” europe-west1์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
      • SUBNET_NAME: ๊ธฐ์กด ์„œ๋ธŒ๋„ท์˜ ์ด๋ฆ„
      • HOST_PROJECT_ID: ๊ณต์œ  VPC ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ ID. ์ปค๋„ฅํ„ฐ์™€ ๊ธฐ์กด ์„œ๋ธŒ๋„ท์ด ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ์— ์žˆ๋Š” ๊ฒฝ์šฐ --subnet-project ํ”Œ๋ž˜๊ทธ๋ฅผ ์ƒ๋žตํ•ฉ๋‹ˆ๋‹ค.
      • MIN: ์ปค๋„ฅํ„ฐ์— ์‚ฌ์šฉํ•  ์ตœ์†Œ ์ธ์Šคํ„ด์Šค ์ˆ˜๋กœ, 2(๊ธฐ๋ณธ๊ฐ’)์—์„œ 9 ์‚ฌ์ด์˜ ์ •์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
      • MAX: ์ปค๋„ฅํ„ฐ์— ์‚ฌ์šฉํ•  ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ์ˆ˜๋กœ, 3์—์„œ 10(๊ธฐ๋ณธ๊ฐ’) ์‚ฌ์ด์˜ ์ •์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ปค๋„ฅํ„ฐ๊ฐ€ ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ์ˆ˜๊นŒ์ง€ ํ™•์žฅ๋˜๋ฉด ์ถ•์†Œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
      • MACHINE_TYPE: ๋‹ค์Œ f1-micro, e2-micro ๋˜๋Š” e2-standard-4 ์ค‘ ํ•˜๋‚˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • ์ปค๋„ฅํ„ฐ ๋ฐ ์ƒˆ ์„œ๋ธŒ๋„ท ๋งŒ๋“ค๊ธฐ:

      gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
       --region REGION \
       --network VPC_NETWORK \
       --range IP_RANGE
       --min-instances MIN \
       --max-instances MAX \
       --machine-type MACHINE_TYPE

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

      • CONNECTOR_NAME: Compute Engine ์ด๋ฆ„ ์ง€์ • ๊ทœ์น™๊ณผ ์ผ์น˜ํ•˜๋Š” ์ปค๋„ฅํ„ฐ ์ด๋ฆ„์œผ๋กœ, ์ถ”๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ์œผ๋กœ ์ด๋ฆ„์ด 21์ž ๋ฏธ๋งŒ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ํ•˜์ดํ”ˆ(-)์€ 2์ž๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค.
      • REGION: ์ปค๋„ฅํ„ฐ์˜ ๋ฆฌ์ „์œผ๋กœ, ์„œ๋ฒ„๋ฆฌ์Šค ์„œ๋น„์Šค ๋˜๋Š” ์ž‘์—…์˜ ๋ฆฌ์ „๊ณผ ์ผ์น˜ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋น„์Šค ๋˜๋Š” ์ž‘์—…์ด us-central ๋˜๋Š” europe-west์— ์žˆ์œผ๋ฉด us-central1 ๋˜๋Š” europe-west1์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
      • VPC_NETWORK: ์ปค๋„ฅํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•  VPC ๋„คํŠธ์›Œํฌ์˜ ์ด๋ฆ„์œผ๋กœ, ์ปค๋„ฅํ„ฐ์™€ VPC ๋„คํŠธ์›Œํฌ๋Š” ๋™์ผํ•œ ํ”„๋กœ์ ํŠธ์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
      • IP_RANGE: Google Cloud ์—์„œ ์ปค๋„ฅํ„ฐ์˜ VPC ๋„คํŠธ์›Œํฌ์— ๋งŒ๋“œ๋Š” ์ƒˆ ์„œ๋ธŒ๋„ท์˜ ๊ธฐ๋ณธ IPv4 ์ฃผ์†Œ ๋ฒ”์œ„๋กœ ์‚ฌ์šฉํ•  ๋ฏธ์‚ฌ์šฉ /28 CIDR(์˜ˆ: 10.8.0.0/28)์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. IP ๋ฒ”์œ„๊ฐ€ ์ปค๋„ฅํ„ฐ์˜ VPC ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š” ๊ธฐ์กด ๊ฒฝ๋กœ์™€ ์ถฉ๋Œํ•˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ์„œ๋ธŒ๋„ท์˜ ์ด๋ฆ„์€ ํ”„๋ฆฌํ”ฝ์Šค 'aet-'๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
      • MIN: ์ปค๋„ฅํ„ฐ์— ์‚ฌ์šฉํ•  ์ตœ์†Œ ์ธ์Šคํ„ด์Šค ์ˆ˜๋กœ, 2(๊ธฐ๋ณธ๊ฐ’)์—์„œ 9 ์‚ฌ์ด์˜ ์ •์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
      • MAX: ์ปค๋„ฅํ„ฐ์— ์‚ฌ์šฉํ•  ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ์ˆ˜๋กœ, 3์—์„œ 10(๊ธฐ๋ณธ๊ฐ’) ์‚ฌ์ด์˜ ์ •์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ปค๋„ฅํ„ฐ๊ฐ€ ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ์ˆ˜๊นŒ์ง€ ํ™•์žฅ๋˜๋ฉด ์ถ•์†Œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
      • MACHINE_TYPE: ๋‹ค์Œ f1-micro, e2-micro ๋˜๋Š” e2-standard-4 ์ค‘ ํ•˜๋‚˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  5. ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ์ปค๋„ฅํ„ฐ๊ฐ€ READY ์ƒํƒœ์ธ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \
    --region REGION

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

    • CONNECTOR_NAME: ์ปค๋„ฅํ„ฐ ์ด๋ฆ„์ด๋ฉฐ, ์ด์ „ ๋‹จ๊ณ„์—์„œ ์ง€์ •ํ•œ ์ด๋ฆ„
    • REGION: ์ปค๋„ฅํ„ฐ์˜ ๋ฆฌ์ „์ด๋ฉฐ, ์ด์ „ ๋‹จ๊ณ„์—์„œ ์ง€์ •ํ•œ ๋ฆฌ์ „.

    ์ถœ๋ ฅ์—๋Š” state: READY ์ค„์ด ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  6. Terraform

    Terraform ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ vpcaccess.googleapis.com API๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    resource "google_project_service" "vpcaccess-api" {
      project = var.project_id # Replace this with your project ID in quotes
      service = "vpcaccess.googleapis.com"
    }

    Terraform ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ VPC ๋„คํŠธ์›Œํฌ์™€ ์„œ๋ธŒ๋„ท์„ ๋งŒ๋“  ํ›„ ์ปค๋„ฅํ„ฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    module "test-vpc-module" {
      source       = "terraform-google-modules/network/google"
      version      = "~> 11.0"
      project_id   = var.project_id # Replace this with your project ID in quotes
      network_name = "my-serverless-network"
      mtu          = 1460
    
      subnets = [
        {
          subnet_name   = "serverless-subnet"
          subnet_ip     = "10.10.10.0/28"
          subnet_region = "us-central1"
        }
      ]
    }
    
    module "serverless-connector" {
      source     = "terraform-google-modules/network/google//modules/vpc-serverless-connector-beta"
      version    = "~> 11.0"
      project_id = var.project_id
      vpc_connectors = [{
        name        = "central-serverless"
        region      = "us-central1"
        subnet_name = module.test-vpc-module.subnets["us-central1/serverless-subnet"].name
        # host_project_id = var.host_project_id # Specify a host_project_id for shared VPC
        machine_type  = "e2-standard-4"
        min_instances = 2
        max_instances = 7
        }
        # Uncomment to specify an ip_cidr_range
        #   , {
        #     name          = "central-serverless2"
        #     region        = "us-central1"
        #     network       = module.test-vpc-module.network_name
        #     ip_cidr_range = "10.10.11.0/28"
        #     subnet_name   = null
        #     machine_type  = "e2-standard-4"
        #     min_instances = 2
        #   max_instances = 7 }
      ]
      depends_on = [
        google_project_service.vpcaccess-api
      ]
    }

์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„œ๋ฒ„๋ฆฌ์Šค ํ™˜๊ฒฝ ๊ตฌ์„ฑ

์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ์ปค๋„ฅํ„ฐ๋ฅผ ๋งŒ๋“  ํ›„ ์„œ๋ฒ„๋ฆฌ์Šค ํ™˜๊ฒฝ์˜ ์•ˆ๋‚ด์— ๋”ฐ๋ผ ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„œ๋ฒ„๋ฆฌ์Šค ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก Cloud Run ๊ตฌ์„ฑ

์ƒˆ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์ƒˆ ๋ฒ„์ „์„ ๋ฐฐํฌํ•  ๋•Œ ์„œ๋น„์Šค์—์„œ Google Cloud ์ฝ˜์†”, Google Cloud CLI, YAML ํŒŒ์ผ ๋˜๋Š” Terraform ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

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

    Cloud Run์œผ๋กœ ์ด๋™

  2. ๋ฉ”๋‰ด์—์„œ ์„œ๋น„์Šค๋ฅผ ์„ ํƒํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ ๋ฐฐํฌ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ƒˆ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋น„์Šค๋ฅผ ํด๋ฆญํ•œ ํ›„ ์ƒˆ ๋ฒ„์ „ ์ˆ˜์ • ๋ฐ ๋ฐฐํฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์ƒˆ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ์ดˆ๊ธฐ ์„œ๋น„์Šค ์„ค์ • ํŽ˜์ด์ง€๋ฅผ ์ž‘์„ฑํ•œ ํ›„ ์ปจํ…Œ์ด๋„ˆ, ๋ณผ๋ฅจ, ๋„คํŠธ์›Œํ‚น, ๋ณด์•ˆ์„ ํด๋ฆญํ•˜์—ฌ ์„œ๋น„์Šค ๊ตฌ์„ฑ ํŽ˜์ด์ง€๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

  4. ์—ฐ๊ฒฐ ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

    ์ด๋ฏธ์ง€

    • VPC ์ปค๋„ฅํ„ฐ ํ•„๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ปค๋„ฅํ„ฐ๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์—†์Œ์„ ์„ ํƒํ•˜์—ฌ VPC ๋„คํŠธ์›Œํฌ์—์„œ ์„œ๋น„์Šค์˜ ์—ฐ๊ฒฐ์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
  5. ๋งŒ๋“ค๊ธฐ ๋˜๋Š” ๋ฐฐํฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. ๋ฐฐํฌ ์ค‘์— ์ปค๋„ฅํ„ฐ๋ฅผ ์ง€์ •ํ•˜๋ ค๋ฉด --vpc-connector ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    gcloud run deploy SERVICE --image IMAGE_URL --vpc-connector CONNECTOR_NAME
    • SERVICE๋ฅผ ์„œ๋น„์Šค ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    • IMAGE_URL์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    • CONNECTOR_NAME์„ ์ปค๋„ฅํ„ฐ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์ปค๋„ฅํ„ฐ๊ฐ€ ๊ณต์œ  VPC์˜ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์— ์žˆ๋Š” ๊ฒฝ์šฐ ์™„์ „ํžˆ ์ง€์ •๋œ ์ด๋ฆ„์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
      projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
      ์—ฌ๊ธฐ์„œ HOST_PROJECT_ID๋Š” ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์˜ ID์ด๊ณ , CONNECTOR_REGION์€ ์ปค๋„ฅํ„ฐ ๋ฆฌ์ „์ด๋ฉฐ, CONNECTOR_NAME์€ ์ปค๋„ฅํ„ฐ์— ์ง€์ •ํ•œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.

    ๊ธฐ์กด ์„œ๋น„์Šค์˜ ์ปค๋„ฅํ„ฐ๋ฅผ ์—ฐ๊ฒฐ, ์—…๋ฐ์ดํŠธ, ์‚ญ์ œํ•˜๋ ค๋ฉด ํ•„์š”์— ๋”ฐ๋ผ ๋‹ค์Œ ํ”Œ๋ž˜๊ทธ ์ค‘ ํ•˜๋‚˜์™€ ํ•จ๊ป˜ gcloud run services update ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

    ์˜ˆ๋ฅผ ๋“ค์–ด ์ปค๋„ฅํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud run services update SERVICE --vpc-connector CONNECTOR_NAME
    • SERVICE๋ฅผ ์„œ๋น„์Šค ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
    • CONNECTOR_NAME์„ ์ปค๋„ฅํ„ฐ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
  3. YAML

    1. ์ƒˆ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ์—๋Š” ์ด ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. ๊ธฐ์กด ์„œ๋น„์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒฝ์šฐ YAML ๊ตฌ์„ฑ์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

      gcloud run services describe SERVICE --format export > service.yaml
    2. ์ตœ์ƒ์œ„ spec ์†์„ฑ ์•„๋ž˜์˜ annotations ์†์„ฑ์—์„œ run.googleapis.com/vpc-access-connector ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

      apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
        name: SERVICE
      spec:
        template:
          metadata:
            annotations:
              run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
      • SERVICE๋ฅผ Cloud Run ์„œ๋น„์Šค ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
      • CONNECTOR_NAME์„ ์ปค๋„ฅํ„ฐ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์ปค๋„ฅํ„ฐ๊ฐ€ ๊ณต์œ  VPC์˜ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์— ์žˆ๋Š” ๊ฒฝ์šฐ ์™„์ „ํžˆ ์ง€์ •๋œ ์ด๋ฆ„์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
        projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
        ์—ฌ๊ธฐ์„œ HOST_PROJECT_ID๋Š” ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์˜ ID์ด๊ณ , CONNECTOR_REGION์€ ์ปค๋„ฅํ„ฐ ๋ฆฌ์ „์ด๋ฉฐ, CONNECTOR_NAME์€ ์ปค๋„ฅํ„ฐ์— ์ง€์ •ํ•œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
    3. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ์ƒˆ ๊ตฌ์„ฑ์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

      gcloud beta run services replace service.yaml

    Terraform

    Terraform ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    # Cloud Run service
    resource "google_cloud_run_v2_service" "gcr_service" {
      name     = "mygcrservice"
      location = "us-west1"
    
      deletion_protection = false # set to "true" in production
    
      template {
        containers {
          image = "us-docker.pkg.dev/cloudrun/container/hello"
          resources {
            limits = {
              cpu    = "1000m"
              memory = "512Mi"
            }
          }
          # the service uses this SA to call other Google Cloud APIs
          # service_account_name = myservice_runtime_sa
        }
    
        scaling {
          # Limit scale up to prevent any cost blow outs!
          max_instance_count = 5
        }
    
        vpc_access {
          # Use the VPC Connector
          connector = google_vpc_access_connector.connector.id
          # all egress from the service should go through the VPC Connector
          egress = "ALL_TRAFFIC"
        }
      }
    }

Cloud Run Functions์—์„œ ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

Google Cloud ์ฝ˜์†” ๋˜๋Š” Google Cloud CLI์—์„œ ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•จ์ˆ˜๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์˜ Cloud Run Functions ๊ฐœ์š” ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    Cloud Run Functions๋กœ ์ด๋™

  2. ํ•จ์ˆ˜ ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ๋˜๋Š” ๊ธฐ์กด ํ•จ์ˆ˜๋ฅผ ํด๋ฆญํ•˜์—ฌ ์„ธ๋ถ€์ •๋ณด ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ณ  ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์‹คํ–‰ ์‹œ๊ฐ„, ๋นŒ๋“œ ๋ฐ ์—ฐ๊ฒฐ ์„ค์ •์„ ํด๋ฆญํ•˜์—ฌ ๊ณ ๊ธ‰ ์„ค์ •์„ ํŽผ์นฉ๋‹ˆ๋‹ค.

  4. ์ด๊ทธ๋ ˆ์Šค ์„ค์ •์˜ ์—ฐ๊ฒฐ ํƒญ์—์„œ VPC ์ปค๋„ฅํ„ฐ ํ•„๋“œ์— ์ปค๋„ฅํ„ฐ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. gcloud functions deploy ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ๋ฐฐํฌํ•˜๊ณ  --vpc-connector ํ”Œ๋ž˜๊ทธ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

    gcloud functions deploy FUNCTION_NAME \
    --vpc-connector CONNECTOR_NAME \
    FLAGS...
    

    ๊ฐ ํ•ญ๋ชฉ์˜ ์˜๋ฏธ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    • FUNCTION_NAME์€ ํ•จ์ˆ˜์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
    • CONNECTOR_NAME์€ ์ปค๋„ฅํ„ฐ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ์ปค๋„ฅํ„ฐ๊ฐ€ ๊ณต์œ  VPC์˜ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์— ์žˆ๋Š” ๊ฒฝ์šฐ ์™„์ „ํžˆ ์ง€์ •๋œ ์ด๋ฆ„์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
      projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
      ์—ฌ๊ธฐ์„œ HOST_PROJECT_ID๋Š” ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์˜ ID์ด๊ณ , CONNECTOR_REGION์€ ์ปค๋„ฅํ„ฐ ๋ฆฌ์ „์ด๋ฉฐ, CONNECTOR_NAME์€ ์ปค๋„ฅํ„ฐ์— ์ง€์ •ํ•œ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
    • FLAGS...๋Š” ํ•จ์ˆ˜ ๋ฐฐํฌ ์ค‘์— ์ „๋‹ฌํ•œ ๋‹ค๋ฅธ ํ”Œ๋ž˜๊ทธ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

์ปค๋„ฅํ„ฐ๋ฅผ ํ†ตํ•ด ๋ผ์šฐํŒ…ํ•  ์ˆ˜ ์žˆ๋Š” ์š”์ฒญ์„ ์ถ”๊ฐ€๋กœ ์ œ์–ดํ•˜๋ ค๋ฉด ์ด๊ทธ๋ ˆ์Šค ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก App Engine ๊ตฌ์„ฑ

Python 2

  1. App Engine URL Fetch ์„œ๋น„์Šค์˜ ์‚ฌ์šฉ์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.

    ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ชจ๋“  ์š”์ฒญ์€ URL Fetch ์„œ๋น„์Šค๋ฅผ ํ†ตํ•ด ๋ผ์šฐํŒ…๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด VPC ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•œ ์š”์ฒญ์ด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธฐ๋ณธ๊ฐ’์„ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ ค๋ฉด URL Fetch๋ฅผ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜์—ฌ ๋ชจ๋“  ์•„์›ƒ๋ฐ”์šด๋“œ ์š”์ฒญ ์ฒ˜๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๊ฐœ๋ณ„ ์š”์ฒญ์— ์ง์ ‘ urlfetch ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  2. ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ํ•„๋“œ๋ฅผ app.yaml ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    vpc_access_connector:
     name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

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

    • PROJECT_ID: Google Cloud ํ”„๋กœ์ ํŠธ ID. ์ปค๋„ฅํ„ฐ๊ฐ€ ๊ณต์œ  VPC์˜ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์— ์žˆ๋Š” ๊ฒฝ์šฐ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์˜ ID์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • REGION: ์ปค๋„ฅํ„ฐ๊ฐ€ ์žˆ๋Š” ๋ฆฌ์ „
    • CONNECTOR_NAME: ์ปค๋„ฅํ„ฐ ์ด๋ฆ„
  3. ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

    gcloud app deploy

    ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•œ ํ›„์—๋Š” ๋‚ด๋ถ€ IP ์ฃผ์†Œ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด VPC ๋„คํŠธ์›Œํฌ์˜ ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Java 8

  1. App Engine URL Fetch ์„œ๋น„์Šค URLFetchService์˜ ์‚ฌ์šฉ์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.

  2. ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ์š”์†Œ๋ฅผ ์„œ๋น„์Šค์˜ appengine-web.xml ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    <vpc-access-connector>
    <name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name>
    </vpc-access-connector>
    

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

    • PROJECT_ID: Google Cloud ํ”„๋กœ์ ํŠธ ID. ์ปค๋„ฅํ„ฐ๊ฐ€ ๊ณต์œ  VPC์˜ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์— ์žˆ๋Š” ๊ฒฝ์šฐ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์˜ ID์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • REGION: ์ปค๋„ฅํ„ฐ๊ฐ€ ์žˆ๋Š” ๋ฆฌ์ „
    • CONNECTOR_NAME: ์ปค๋„ฅํ„ฐ ์ด๋ฆ„
  3. ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

    gcloud app deploy WEB-INF/appengine-web.xml

    ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•œ ํ›„์—๋Š” ๋‚ด๋ถ€ IP ์ฃผ์†Œ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด VPC ๋„คํŠธ์›Œํฌ์˜ ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Go 1.11

  1. App Engine URL Fetch ์„œ๋น„์Šค์˜ ์‚ฌ์šฉ์„ ์ค‘๋‹จํ•ฉ๋‹ˆ๋‹ค.

    ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค๋Š” URL Fetch๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฉฐ URL Fetch๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜ํ–‰ํ•œ ์š”์ฒญ์€ ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ์„ค์ •์„ ๋ฌด์‹œํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์‹  ์†Œ์ผ“์„ ์‚ฌ์šฉํ•˜์—ฌ ์•„์›ƒ๋ฐ”์šด๋“œ ์—ฐ๊ฒฐ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  2. ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ํ•„๋“œ๋ฅผ app.yaml ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    vpc_access_connector:
     name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

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

    • PROJECT_ID: Google Cloud ํ”„๋กœ์ ํŠธ ID
    • REGION: ์ปค๋„ฅํ„ฐ๊ฐ€ ์žˆ๋Š” ๋ฆฌ์ „
    • CONNECTOR_NAME: ์ปค๋„ฅํ„ฐ ์ด๋ฆ„
  3. ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

    gcloud app deploy

    ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•œ ํ›„์—๋Š” ๋‚ด๋ถ€ IP ์ฃผ์†Œ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด VPC ๋„คํŠธ์›Œํฌ์˜ ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ๋ชจ๋“  ๋Ÿฐํƒ€์ž„

  1. ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ํ•„๋“œ๋ฅผ app.yaml ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    vpc_access_connector:
     name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

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

    • PROJECT_ID: Google Cloud ํ”„๋กœ์ ํŠธ ID. ์ปค๋„ฅํ„ฐ๊ฐ€ ๊ณต์œ  VPC์˜ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์— ์žˆ๋Š” ๊ฒฝ์šฐ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์˜ ID์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • REGION: ์ปค๋„ฅํ„ฐ๊ฐ€ ์žˆ๋Š” ๋ฆฌ์ „
    • CONNECTOR_NAME: ์ปค๋„ฅํ„ฐ ์ด๋ฆ„
  2. ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

    gcloud app deploy

    ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•œ ํ›„์—๋Š” ๋‚ด๋ถ€ IP ์ฃผ์†Œ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ด VPC ๋„คํŠธ์›Œํฌ์˜ ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ปค๋„ฅํ„ฐ์˜ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ๊ตฌ์„ฑ

์„œ๋น„์Šค ํ”„๋กœ์ ํŠธ์˜ ์ปค๋„ฅํ„ฐ์— ํ•„์š”ํ•œ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™

๋…๋ฆฝํ˜• VPC ๋„คํŠธ์›Œํฌ ๋˜๋Š” ๊ณต์œ  VPC ๋„คํŠธ์›Œํฌ์˜ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์— ์ปค๋„ฅํ„ฐ๋ฅผ ๋งŒ๋“ค๋ฉด Google Cloud ์—์„œ ์ปค๋„ฅํ„ฐ ์ž‘๋™์— ํ•„์š”ํ•œ ๋ชจ๋“  ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋…๋ฆฝํ˜• VPC ๋„คํŠธ์›Œํฌ ๋˜๋Š” ๊ณต์œ  VPC ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์˜ ์ปค๋„ฅํ„ฐ์— ๋Œ€ํ•œ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ์ฐธ์กฐํ•˜์„ธ์š”.

ํ•˜์ง€๋งŒ ์„œ๋น„์Šค ํ”„๋กœ์ ํŠธ์—์„œ ์ปค๋„ฅํ„ฐ๋ฅผ ๋งŒ๋“ค๊ณ  ์ปค๋„ฅํ„ฐ๊ฐ€ ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์˜ ๊ณต์œ  VPC ๋„คํŠธ์›Œํฌ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ๊ฒฝ์šฐ ๋‹ค์Œ ๋ฒ”์œ„์—์„œ ์ปค๋„ฅํ„ฐ ์ž‘๋™์— ํ•„์š”ํ•œ ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•˜๋„๋ก ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๋ฒ”์œ„๋Š” Cloud Run, Cloud Run Functions, App Engine ํ‘œ์ค€ ํ™˜๊ฒฝ์˜ Google ์ธํ”„๋ผ์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ IP ์ฃผ์†Œ์˜ ๋ชจ๋“  ์š”์ฒญ์€ Google ์ธํ”„๋ผ์—์„œ ๋ฐœ์ƒํ•˜์—ฌ ๊ฐ ์„œ๋ฒ„๋ฆฌ์Šค ๋ฆฌ์†Œ์Šค๊ฐ€ ์—ฐ๊ฒฐ๋œ ์ปค๋„ฅํ„ฐ์™€๋งŒ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

์ปค๋„ฅํ„ฐ์˜ ์„œ๋ธŒ๋„ท์—์„œ VPC ๋„คํŠธ์›Œํฌ์˜ ๋ฆฌ์†Œ์Šค๋กœ์˜ ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ ค๋ฉด ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ๋‹ค์Œ ์—ญํ•  ์ค‘ ํ•˜๋‚˜๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๊ตฌ์„ฑ์—์„œ๋Š” ๊ณต์œ  VPC ๋„คํŠธ์›Œํฌ์— ์—ฐ๊ฒฐ๋œ ๋ชจ๋“  ์„œ๋น„์Šค ํ”„๋กœ์ ํŠธ์˜ ์„œ๋ฒ„๋ฆฌ์Šค ๋ฆฌ์†Œ์Šค๊ฐ€ ๋„คํŠธ์›Œํฌ์˜ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค์— ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ๊ทœ์น™์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ๊ทœ์น™์„ ์ ์šฉํ•˜๋ ค๋ฉด ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

  1. Google์˜ ์„œ๋ฒ„๋ฆฌ์Šค ์ธํ”„๋ผ ๋ฐ ์ƒํƒœ ์ ๊ฒ€ ํ”„๋กœ๋ธŒ์˜ ์š”์ฒญ์ด ๋„คํŠธ์›Œํฌ์˜ ๋ชจ๋“  ์ปค๋„ฅํ„ฐ์— ๋„๋‹ฌํ•˜๋„๋ก ํ—ˆ์šฉํ•˜๋Š” ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ช…๋ น์–ด์—์„œ UDP ํฌํŠธ์™€ TCP ํฌํŠธ๋Š” ๊ฐ๊ฐ ํ”„๋ก์‹œ ๋ฐ HTTP ์ƒํƒœ ์ ๊ฒ€์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ง€์ •๋œ ํฌํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ๋งˆ์„ธ์š”.

    gcloud compute firewall-rules create serverless-to-vpc-connector \
        --allow tcp:667,udp:665-666,icmp \
        --source-ranges=35.199.224.0/19 \
        --direction=INGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK
    gcloud compute firewall-rules create vpc-connector-to-serverless \
        --allow tcp:667,udp:665-666,icmp \
        --destination-ranges=35.199.224.0/19 \
        --direction=EGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK
    gcloud compute firewall-rules create vpc-connector-health-checks \
        --allow tcp:667 \
        --source-ranges=35.191.0.0/16,35.191.192.0/18,130.211.0.0/22 \
        --direction=INGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK

    VPC_NETWORK๋ฅผ ์ปค๋„ฅํ„ฐ๋ฅผ ์—ฐ๊ฒฐํ•  VPC ๋„คํŠธ์›Œํฌ์˜ ์ด๋ฆ„์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  2. VPC ๋„คํŠธ์›Œํฌ์— ์ด ๋„คํŠธ์›Œํฌ๋ฅผ ๋Œ€์ƒ์œผ๋กœ ํ•˜๋Š” ์ปค๋„ฅํ„ฐ์˜ ์š”์ฒญ์„ ํ—ˆ์šฉํ•˜๋Š” ์ธ๊ทธ๋ ˆ์Šค ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    gcloud compute firewall-rules create vpc-connector-requests \
        --allow tcp,udp,icmp \
        --direction=INGRESS \
        --source-tags vpc-connector \
        --network=VPC_NETWORK

    ์ด ๊ทœ์น™์œผ๋กœ ์ปค๋„ฅํ„ฐ์—์„œ ๋„คํŠธ์›Œํฌ์˜ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„๋ฆฌ์Šค ํ™˜๊ฒฝ์—์„œ ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์ œํ•œํ•˜๋ ค๋ฉด ์ปค๋„ฅํ„ฐ VM์˜ VPC ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค ์•ก์„ธ์Šค ์ œํ•œ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

ํŠน์ • ์ปค๋„ฅํ„ฐ์˜ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ๋งŒ๋“ค๊ธฐ

์„œ๋น„์Šค ํ”„๋กœ์ ํŠธ์˜ ์ปค๋„ฅํ„ฐ์— ํ•„์š”ํ•œ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์˜ ์ ˆ์ฐจ๋ฅผ ๋”ฐ๋ฅด๋ฉด ํ˜„์žฌ์˜ ์ปค๋„ฅํ„ฐ์™€ ํ–ฅํ›„ ์ƒ์„ฑ๋˜๋Š” ์ปค๋„ฅํ„ฐ๋ฅผ ํฌํ•จํ•œ ๋ชจ๋“  ์ปค๋„ฅํ„ฐ์— ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ์›ํ•˜์ง€ ์•Š๊ณ  ๋Œ€์‹ ์— ํŠน์ • ์ปค๋„ฅํ„ฐ์—๋งŒ ์ ์šฉ๋˜๋Š” ๊ทœ์น™์„ ๋งŒ๋“ค๊ณ  ์‹ถ๋‹ค๋ฉด ํ•ด๋‹น ์ปค๋„ฅํ„ฐ์—๋งŒ ์ ์šฉ๋˜๋„๋ก ๊ทœ์น™์˜ ๋ฒ”์œ„๋ฅผ ์ขํ˜€์„œ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทœ์น™์˜ ๋ฒ”์œ„๋ฅผ ํŠน์ • ์ปค๋„ฅํ„ฐ๋กœ ์ œํ•œํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ฉ”์ปค๋‹ˆ์ฆ˜ ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

  • ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ: ๋ชจ๋“  ์ปค๋„ฅํ„ฐ์—๋Š” 2๊ฐœ์˜ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ์ธ vpc-connector์™€ vpc-connector-REGION-CONNECTOR_NAME์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํ›„์ž ํ˜•์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์˜ ๋ฒ”์œ„๋ฅผ ํŠน์ • ์ปค๋„ฅํ„ฐ๋กœ ์ œํ•œํ•ฉ๋‹ˆ๋‹ค.
  • IP ๋ฒ”์œ„: ์ด ์˜ต์…˜์€ ์ธ๊ทธ๋ ˆ์Šค ๊ทœ์น™์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ด๊ทธ๋ ˆ์Šค ๊ทœ์น™์—๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ปค๋„ฅํ„ฐ ์„œ๋ธŒ๋„ท์˜ IP ๋ฒ”์œ„๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์˜ ๋ฒ”์œ„๋ฅผ ๋‹จ์ผ VPC ์ปค๋„ฅํ„ฐ๋กœ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ปค๋„ฅํ„ฐ VM ์•ก์„ธ์Šค VPC ๋„คํŠธ์›Œํฌ ๋ฆฌ์†Œ์Šค ์ œํ•œ

VPC ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ๋˜๋Š” ๋ฐฉํ™”๋ฒฝ ์ •์ฑ…์˜ ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์—ฌ ๋Œ€์ƒ VPC ๋„คํŠธ์›Œํฌ์˜ ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ปค๋„ฅํ„ฐ์˜ ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ์ „๋žต ์ค‘ ํ•˜๋‚˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋Ÿฌํ•œ ์ œํ•œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋Œ€์ƒ์ด ์ปค๋„ฅํ„ฐ VM ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜๋ ค๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๊ณ  ์†Œ์Šค๊ฐ€ ์ปค๋„ฅํ„ฐ VM์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ธ๊ทธ๋ ˆ์Šค ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • ๋Œ€์ƒ์ด ์ปค๋„ฅํ„ฐ VM์„ ๋‚˜ํƒ€๋‚ด๊ณ  ๋Œ€์ƒ์ด ์ปค๋„ฅํ„ฐ VM ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜๋ ค๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ด๊ทธ๋ ˆ์Šค ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

๋‹ค์Œ ์˜ˆ์‹œ์—์„œ๋Š” ๊ฐ ์ „๋žต์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์ธ๊ทธ๋ ˆ์Šค ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šค ์ œํ•œ

๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋‚˜ CIDR ๋ฒ”์œ„๋ฅผ ์„ ํƒํ•˜์—ฌ VPC ๋„คํŠธ์›Œํฌ๋กœ ๋“ค์–ด์˜ค๋Š” ํŠธ๋ž˜ํ”ฝ์„ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ ํƒœ๊ทธ

๋‹ค์Œ ๋‹จ๊ณ„์—์„œ๋Š” ์ปค๋„ฅํ„ฐ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ VPC ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•œ ์ปค๋„ฅํ„ฐ์˜ ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜๋Š” ์ธ๊ทธ๋ ˆ์Šค ๊ทœ์น™์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ๋‹ค์Œ Identity and Access Management(IAM) ์—ญํ•  ์ค‘ ํ•˜๋‚˜๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  2. VPC ๋„คํŠธ์›Œํฌ์—์„œ ์ปค๋„ฅํ„ฐ ํŠธ๋ž˜ํ”ฝ์„ ๊ฑฐ๋ถ€ํ•˜์„ธ์š”.

    ์ปค๋„ฅํ„ฐ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ์—์„œ ์ธ๊ทธ๋ ˆ์Šค๋ฅผ ๊ฑฐ๋ถ€ํ•˜๋ ค๋ฉด VPC ๋„คํŠธ์›Œํฌ์—์„œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ 1000๋ณด๋‹ค ๋‚ฎ์€ ์ธ๊ทธ๋ ˆ์Šค ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค๊ฐ€ VPC ๋„คํŠธ์›Œํฌ์—์„œ ๋งŒ๋“œ๋Š” ์•”์‹œ์  ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์ด ์žฌ์ •์˜๋ฉ๋‹ˆ๋‹ค.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --rules=PROTOCOL \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY

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

    • RULE_NAME: ์ƒˆ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์˜ ์ด๋ฆ„. ์˜ˆ๋ฅผ ๋“ค๋ฉด deny-vpc-connector์ž…๋‹ˆ๋‹ค.

    • PROTOCOL: VPC ์ปค๋„ฅํ„ฐ์—์„œ ํ—ˆ์šฉํ•  ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœํ† ์ฝœ. ์ง€์›๋˜๋Š” ํ”„๋กœํ† ์ฝœ์€ tcp ๋˜๋Š” udp์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด tcp:80,udp๋Š” ํฌํŠธ 80์„ ํ†ตํ•œ TCP ํŠธ๋ž˜ํ”ฝ ๋ฐ UDP ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ allow ํ”Œ๋ž˜๊ทธ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

      ๋ณด์•ˆ ๋ฐ ๊ฒ€์ฆ์„ ์œ„ํ•ด ์ง€์›๋˜์ง€ ์•Š๋Š” ํ”„๋กœํ† ์ฝœ ah, all, esp, icmp, ipip, sctp์— ๋Œ€ํ•œ ํŠธ๋ž˜ํ”ฝ์„ ์ฐจ๋‹จํ•˜๋„๋ก ๊ฑฐ๋ถ€ ๊ทœ์น™์„ ๊ตฌ์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

    • VPC_CONNECTOR_NETWORK_TAG: ํ–ฅํ›„ ๋ชจ๋“  ์ปค๋„ฅํ„ฐ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ชจ๋“  ์ปค๋„ฅํ„ฐ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋ฒ”์šฉ ์ปค๋„ฅํ„ฐ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ ๋˜๋Š” ํŠน์ • ์ปค๋„ฅํ„ฐ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๊ณ ์œ ํ•œ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ

      • ๋ฒ”์šฉ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ: vpc-connector
      • ๊ณ ์œ  ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ: vpc-connector-REGION-CONNECTOR_NAME

        ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

        • REGION: ์ œํ•œํ•  ์ปค๋„ฅํ„ฐ์˜ ๋ฆฌ์ „
        • CONNECTOR_NAME: ์ œํ•œํ•  ์ปค๋„ฅํ„ฐ์˜ ์ด๋ฆ„

      ์ปค๋„ฅํ„ฐ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    • VPC_NETWORK: VPC ๋„คํŠธ์›Œํฌ์˜ ์ด๋ฆ„

    • PRIORITY: 0~65535 ์‚ฌ์ด์˜ ์ •์ˆ˜. ์˜ˆ๋ฅผ ๋“ค์–ด 0์€ ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„์ž…๋‹ˆ๋‹ค.

  3. ์ปค๋„ฅํ„ฐ ํŠธ๋ž˜ํ”ฝ์„ ์ˆ˜์‹ ํ•  ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ปค๋„ฅํ„ฐ ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•˜์„ธ์š”.

    allow ๋ฐ target-tags ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ VPC ์ปค๋„ฅํ„ฐ์—์„œ ์•ก์„ธ์Šคํ•  VPC ๋„คํŠธ์›Œํฌ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ์ธ๊ทธ๋ ˆ์Šค ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ๊ทœ์น™์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋งŒ๋“  ๊ทœ์น™์˜ ์šฐ์„ ์ˆœ์œ„๋ณด๋‹ค ๋‚ฎ์€ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOL \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY

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

    • RULE_NAME: ์ƒˆ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์˜ ์ด๋ฆ„. ์˜ˆ๋ฅผ ๋“ค๋ฉด allow-vpc-connector-for-select-resources์ž…๋‹ˆ๋‹ค.

    • PROTOCOL: VPC ์ปค๋„ฅํ„ฐ์—์„œ ํ—ˆ์šฉํ•  ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœํ† ์ฝœ. ์ง€์›๋˜๋Š” ํ”„๋กœํ† ์ฝœ์€ tcp ๋˜๋Š” udp์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด tcp:80,udp๋Š” ํฌํŠธ 80์„ ํ†ตํ•œ TCP ํŠธ๋ž˜ํ”ฝ ๋ฐ UDP ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ allow ํ”Œ๋ž˜๊ทธ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    • VPC_CONNECTOR_NETWORK_TAG: ํ–ฅํ›„ ๋ชจ๋“  ์ปค๋„ฅํ„ฐ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ชจ๋“  ์ปค๋„ฅํ„ฐ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๋ฒ”์šฉ ์ปค๋„ฅํ„ฐ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ ๋˜๋Š” ํŠน์ • ์ปค๋„ฅํ„ฐ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๊ณ ์œ ํ•œ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ. ์ด ํƒœ๊ทธ๋Š” ์ด์ „ ๋‹จ๊ณ„์—์„œ ์ง€์ •ํ•œ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ์™€ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

      • ๋ฒ”์šฉ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ: vpc-connector
      • ๊ณ ์œ  ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ: vpc-connector-REGION-CONNECTOR_NAME

        ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

        • REGION: ์ œํ•œํ•  ์ปค๋„ฅํ„ฐ์˜ ๋ฆฌ์ „
        • CONNECTOR_NAME: ์ œํ•œํ•  ์ปค๋„ฅํ„ฐ์˜ ์ด๋ฆ„

      ์ปค๋„ฅํ„ฐ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    • VPC_NETWORK: VPC ๋„คํŠธ์›Œํฌ์˜ ์ด๋ฆ„

    • RESOURCE_TAG: VPC ์ปค๋„ฅํ„ฐ์—์„œ ์•ก์„ธ์Šคํ•  VPC ๋ฆฌ์†Œ์Šค์˜ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ

    • PRIORITY: ์ด์ „ ๋‹จ๊ณ„์—์„œ ์„ค์ •ํ•œ ์šฐ์„ ์ˆœ์œ„๋ณด๋‹ค ์ž‘์€ ์ •์ˆ˜. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋งŒ๋“  ๊ทœ์น™์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ 990์œผ๋กœ ์„ค์ •ํ•˜๋ฉด 980์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ•„์ˆ˜ ๋ฐ ์„ ํƒ์  ํ”Œ๋ž˜๊ทธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ gcloud compute firewall-rules create ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

CIDR ๋ฒ”์œ„

๋‹ค์Œ ๋‹จ๊ณ„์—์„œ๋Š” ์ปค๋„ฅํ„ฐ์˜ CIDR ๋ฒ”์œ„๋ฅผ ๊ธฐ์ค€์œผ๋กœ VPC ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•œ ์ปค๋„ฅํ„ฐ์˜ ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜๋Š” ์ธ๊ทธ๋ ˆ์Šค ๊ทœ์น™์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ๋‹ค์Œ Identity and Access Management(IAM) ์—ญํ•  ์ค‘ ํ•˜๋‚˜๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  2. VPC ๋„คํŠธ์›Œํฌ์—์„œ ์ปค๋„ฅํ„ฐ ํŠธ๋ž˜ํ”ฝ์„ ๊ฑฐ๋ถ€ํ•˜์„ธ์š”.

    ์ปค๋„ฅํ„ฐ์˜ CIDR ๋ฒ”์œ„์—์„œ ์ธ๊ทธ๋ ˆ์Šค๋ฅผ ๊ฑฐ๋ถ€ํ•˜๋ ค๋ฉด VPC ๋„คํŠธ์›Œํฌ์—์„œ ์šฐ์„ ์ˆœ์œ„๊ฐ€ 1000๋ณด๋‹ค ๋‚ฎ์€ ์ธ๊ทธ๋ ˆ์Šค ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค๊ฐ€ VPC ๋„คํŠธ์›Œํฌ์—์„œ ๋งŒ๋“œ๋Š” ์•”์‹œ์  ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์ด ์žฌ์ •์˜๋ฉ๋‹ˆ๋‹ค.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --rules=PROTOCOL \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY

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

    • RULE_NAME: ์ƒˆ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์˜ ์ด๋ฆ„. ์˜ˆ๋ฅผ ๋“ค๋ฉด deny-vpc-connector์ž…๋‹ˆ๋‹ค.

    • PROTOCOL: VPC ์ปค๋„ฅํ„ฐ์—์„œ ํ—ˆ์šฉํ•  ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœํ† ์ฝœ. ์ง€์›๋˜๋Š” ํ”„๋กœํ† ์ฝœ์€ tcp ๋˜๋Š” udp์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด tcp:80,udp๋Š” ํฌํŠธ 80์„ ํ†ตํ•œ TCP ํŠธ๋ž˜ํ”ฝ ๋ฐ UDP ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ allow ํ”Œ๋ž˜๊ทธ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

      ๋ณด์•ˆ ๋ฐ ๊ฒ€์ฆ์„ ์œ„ํ•ด ์ง€์›๋˜์ง€ ์•Š๋Š” ํ”„๋กœํ† ์ฝœ ah, all, esp, icmp, ipip, sctp์— ๋Œ€ํ•œ ํŠธ๋ž˜ํ”ฝ์„ ์ฐจ๋‹จํ•˜๋„๋ก ๊ฑฐ๋ถ€ ๊ทœ์น™์„ ๊ตฌ์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

    • VPC_CONNECTOR_CIDR_RANGE: ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜๋Š” ์ปค๋„ฅํ„ฐ์˜ CIDR ๋ฒ”์œ„

    • VPC_NETWORK: VPC ๋„คํŠธ์›Œํฌ์˜ ์ด๋ฆ„

    • PRIORITY: 0~65535 ์‚ฌ์ด์˜ ์ •์ˆ˜. ์˜ˆ๋ฅผ ๋“ค์–ด 0์€ ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„์ž…๋‹ˆ๋‹ค.

  3. ์ปค๋„ฅํ„ฐ ํŠธ๋ž˜ํ”ฝ์„ ์ˆ˜์‹ ํ•  ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์ปค๋„ฅํ„ฐ ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•˜์„ธ์š”.

    allow ๋ฐ target-tags ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ VPC ์ปค๋„ฅํ„ฐ์—์„œ ์•ก์„ธ์Šคํ•  VPC ๋„คํŠธ์›Œํฌ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ํƒ€๊ฒŸํŒ…ํ•˜๋Š” ์ธ๊ทธ๋ ˆ์Šค ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ๊ทœ์น™์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋งŒ๋“  ๊ทœ์น™์˜ ์šฐ์„ ์ˆœ์œ„๋ณด๋‹ค ๋‚ฎ์€ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOL \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY

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

    • RULE_NAME: ์ƒˆ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์˜ ์ด๋ฆ„. ์˜ˆ๋ฅผ ๋“ค๋ฉด allow-vpc-connector-for-select-resources์ž…๋‹ˆ๋‹ค.

    • PROTOCOL: VPC ์ปค๋„ฅํ„ฐ์—์„œ ํ—ˆ์šฉํ•  ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœํ† ์ฝœ. ์ง€์›๋˜๋Š” ํ”„๋กœํ† ์ฝœ์€ tcp ๋˜๋Š” udp์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด tcp:80,udp๋Š” ํฌํŠธ 80์„ ํ†ตํ•œ TCP ํŠธ๋ž˜ํ”ฝ ๋ฐ UDP ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ allow ํ”Œ๋ž˜๊ทธ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    • VPC_CONNECTOR_CIDR_RANGE: ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜๋Š” ์ปค๋„ฅํ„ฐ์˜ CIDR ๋ฒ”์œ„

    • VPC_NETWORK: VPC ๋„คํŠธ์›Œํฌ์˜ ์ด๋ฆ„

    • RESOURCE_TAG: VPC ์ปค๋„ฅํ„ฐ์—์„œ ์•ก์„ธ์Šคํ•  VPC ๋ฆฌ์†Œ์Šค์˜ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ

    • PRIORITY: ์ด์ „ ๋‹จ๊ณ„์—์„œ ์„ค์ •ํ•œ ์šฐ์„ ์ˆœ์œ„๋ณด๋‹ค ์ž‘์€ ์ •์ˆ˜. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋งŒ๋“  ๊ทœ์น™์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ 990์œผ๋กœ ์„ค์ •ํ•˜๋ฉด 980์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ•„์ˆ˜ ๋ฐ ์„ ํƒ์  ํ”Œ๋ž˜๊ทธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ gcloud compute firewall-rules create ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ด๊ทธ๋ ˆ์Šค ๊ทœ์น™์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ก์„ธ์Šค ์ œํ•œ

๋‹ค์Œ ๋‹จ๊ณ„์—์„œ๋Š” ์ปค๋„ฅํ„ฐ ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜๋Š” ์ด๊ทธ๋ ˆ์Šค ๊ทœ์น™์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

  1. ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ์‚ฝ์ž…ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์„ธ์š”. ๋‹ค์Œ Identity and Access Management(IAM) ์—ญํ•  ์ค‘ ํ•˜๋‚˜๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  2. ์ปค๋„ฅํ„ฐ์˜ ์ด๊ทธ๋ ˆ์Šค ํŠธ๋ž˜ํ”ฝ์„ ๊ฑฐ๋ถ€ํ•˜์„ธ์š”.

    ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ์ปค๋„ฅํ„ฐ์—์„œ ์„ค์ •๋œ ์‘๋‹ต์„ ์ œ์™ธํ•œ ๋ฐœ์‹  ํŠธ๋ž˜ํ”ฝ์„ ๋Œ€์ƒ์œผ๋กœ ๋ณด๋‚ด์ง€ ์•Š๋„๋ก ์ด๊ทธ๋ ˆ์Šค ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --rules=PROTOCOL \
    --direction=EGRESS \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --network=VPC_NETWORK \
    --priority=PRIORITY

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

    • RULE_NAME: ์ƒˆ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์˜ ์ด๋ฆ„. ์˜ˆ๋ฅผ ๋“ค๋ฉด deny-vpc-connector์ž…๋‹ˆ๋‹ค.

    • PROTOCOL: VPC ์ปค๋„ฅํ„ฐ์—์„œ ํ—ˆ์šฉํ•  ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœํ† ์ฝœ. ์ง€์›๋˜๋Š” ํ”„๋กœํ† ์ฝœ์€ tcp ๋˜๋Š” udp์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด tcp:80,udp๋Š” ํฌํŠธ 80์„ ํ†ตํ•œ TCP ํŠธ๋ž˜ํ”ฝ ๋ฐ UDP ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ allow ํ”Œ๋ž˜๊ทธ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

      ๋ณด์•ˆ ๋ฐ ๊ฒ€์ฆ์„ ์œ„ํ•ด ์ง€์›๋˜์ง€ ์•Š๋Š” ํ”„๋กœํ† ์ฝœ ah, all, esp, icmp, ipip, sctp์— ๋Œ€ํ•œ ํŠธ๋ž˜ํ”ฝ์„ ์ฐจ๋‹จํ•˜๋„๋ก ๊ฑฐ๋ถ€ ๊ทœ์น™์„ ๊ตฌ์„ฑํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

    • VPC_CONNECTOR_NETWORK_TAG: ๊ทœ์น™์„ ๋ชจ๋“  ๊ธฐ์กด VPC ์ปค๋„ฅํ„ฐ์™€ ๋‚˜์ค‘์— ์ƒ์„ฑ๋˜๋Š” VPC ์ปค๋„ฅํ„ฐ์— ์ ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฒ”์šฉ VPC ์ปค๋„ฅํ„ฐ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ. ๋˜๋Š” ํŠน์ • ์ปค๋„ฅํ„ฐ๋ฅผ ์ œ์–ดํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ณ ์œ ํ•œ VPC ์ปค๋„ฅํ„ฐ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ์ž…๋‹ˆ๋‹ค.

    • VPC_NETWORK: VPC ๋„คํŠธ์›Œํฌ์˜ ์ด๋ฆ„

    • PRIORITY: 0~65535 ์‚ฌ์ด์˜ ์ •์ˆ˜. ์˜ˆ๋ฅผ ๋“ค์–ด 0์€ ๊ฐ€์žฅ ๋†’์€ ์šฐ์„ ์ˆœ์œ„์ž…๋‹ˆ๋‹ค.

  3. ๋Œ€์ƒ์ด ์ปค๋„ฅํ„ฐ์—์„œ ์•ก์„ธ์Šคํ•˜๋ ค๋Š” CIDR ๋ฒ”์œ„์— ์žˆ์œผ๋ฉด ์ด๊ทธ๋ ˆ์Šค ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.

    allow ๋ฐ destination-ranges ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ๋Œ€์ƒ ๋ฒ”์œ„์˜ ์ปค๋„ฅํ„ฐ์—์„œ ์ด๊ทธ๋ ˆ์Šค ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•˜๋Š” ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋Œ€์ƒ ๋ฒ”์œ„๋ฅผ ์ปค๋„ฅํ„ฐ์—์„œ ์•ก์„ธ์Šคํ•  VPC ๋„คํŠธ์›Œํฌ์˜ ๋ฆฌ์†Œ์Šค CIDR ๋ฒ”์œ„๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ทœ์น™์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋งŒ๋“  ๊ทœ์น™์˜ ์šฐ์„ ์ˆœ์œ„๋ณด๋‹ค ๋‚ฎ์€ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOL \
    --destination-ranges=RESOURCE_CIDR_RANGE \
    --direction=EGRESS \
    --network=VPC_NETWORK \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --priority=PRIORITY

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

    • RULE_NAME: ์ƒˆ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์˜ ์ด๋ฆ„. ์˜ˆ๋ฅผ ๋“ค๋ฉด allow-vpc-connector-for-select-resources์ž…๋‹ˆ๋‹ค.

    • PROTOCOL: VPC ์ปค๋„ฅํ„ฐ์—์„œ ํ—ˆ์šฉํ•  ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœํ† ์ฝœ. ์ง€์›๋˜๋Š” ํ”„๋กœํ† ์ฝœ์€ tcp ๋˜๋Š” udp์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด tcp:80,udp๋Š” ํฌํŠธ 80์„ ํ†ตํ•œ TCP ํŠธ๋ž˜ํ”ฝ ๋ฐ UDP ํŠธ๋ž˜ํ”ฝ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ allow ํ”Œ๋ž˜๊ทธ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

    • RESOURCE_CIDR_RANGE: ์•ก์„ธ์Šค๋ฅผ ์ œํ•œํ•˜๋Š” ์ปค๋„ฅํ„ฐ์˜ CIDR ๋ฒ”์œ„

    • VPC_NETWORK: VPC ๋„คํŠธ์›Œํฌ์˜ ์ด๋ฆ„

    • VPC_CONNECTOR_NETWORK_TAG: ๊ทœ์น™์„ ๋ชจ๋“  ๊ธฐ์กด VPC ์ปค๋„ฅํ„ฐ์™€ ๋‚˜์ค‘์— ์ƒ์„ฑ๋˜๋Š” VPC ์ปค๋„ฅํ„ฐ์— ์ ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฒ”์šฉ VPC ์ปค๋„ฅํ„ฐ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ. ๋˜๋Š” ํŠน์ • ์ปค๋„ฅํ„ฐ๋ฅผ ์ œ์–ดํ•˜๋ ค๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ณ ์œ ํ•œ VPC ์ปค๋„ฅํ„ฐ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ์ž…๋‹ˆ๋‹ค. ์ด์ „ ๋‹จ๊ณ„์—์„œ ๊ณ ์œ ํ•œ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ ํ•ด๋‹น ๊ณ ์œ ํ•œ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    • PRIORITY: ์ด์ „ ๋‹จ๊ณ„์—์„œ ์„ค์ •ํ•œ ์šฐ์„ ์ˆœ์œ„๋ณด๋‹ค ์ž‘์€ ์ •์ˆ˜. ์˜ˆ๋ฅผ ๋“ค์–ด ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋งŒ๋“  ๊ทœ์น™์˜ ์šฐ์„ ์ˆœ์œ„๋ฅผ 990์œผ๋กœ ์„ค์ •ํ•˜๋ฉด 980์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค.

๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ•„์ˆ˜ ๋ฐ ์„ ํƒ์  ํ”Œ๋ž˜๊ทธ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ gcloud compute firewall-rules create ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ปค๋„ฅํ„ฐ ์—…๋ฐ์ดํŠธ

Google Cloud ์ฝ˜์†”, Google Cloud CLI, API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปค๋„ฅํ„ฐ์˜ ๋‹ค์Œ ์†์„ฑ์„ ์—…๋ฐ์ดํŠธ ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋จธ์‹ (์ธ์Šคํ„ด์Šค) ์œ ํ˜•
  • ์ตœ์†Œ ๋ฐ ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ์ˆ˜
  • ์ตœ๊ทผ ์ฒ˜๋ฆฌ๋Ÿ‰, ์ธ์Šคํ„ด์Šค ์ˆ˜, CPU ์‚ฌ์šฉ๋ฅ 

๋จธ์‹  ์œ ํ˜• ์—…๋ฐ์ดํŠธ

์ฝ˜์†”

  1. ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ๊ฐœ์š” ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค๋กœ ์ด๋™

  2. ์ˆ˜์ •ํ•  ์ปค๋„ฅํ„ฐ๋ฅผ ์„ ํƒํ•˜๊ณ  ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์ธ์Šคํ„ด์Šค ์œ ํ˜• ๋ชฉ๋ก์—์„œ ์›ํ•˜๋Š” ๋จธ์‹ (์ธ์Šคํ„ด์Šค) ์œ ํ˜•์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋จธ์‹  ์œ ํ˜•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฒ˜๋ฆฌ๋Ÿ‰ ๋ฐ ํ™•์žฅ์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. ์ปค๋„ฅํ„ฐ ๋จธ์‹  ์œ ํ˜•์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --machine-type=MACHINE_TYPE
    ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • CONNECTOR_NAME: ์ปค๋„ฅํ„ฐ ์ด๋ฆ„
    • REGION: ์ปค๋„ฅํ„ฐ ๋ฆฌ์ „์˜ ์ด๋ฆ„
    • MACHINE_TYPE: ์„ ํ˜ธํ•˜๋Š” ๋จธ์‹  ์œ ํ˜•. ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋จธ์‹  ์œ ํ˜•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ฒ˜๋ฆฌ๋Ÿ‰ ๋ฐ ํ™•์žฅ์— ๋Œ€ํ•œ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ตœ์†Œ ๋ฐ ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ์ˆ˜ ์ค„์ด๊ธฐ

์ตœ์†Œ ๋ฐ ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ์ˆ˜๋ฅผ ์ค„์ด๋ ค๋ฉด ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ์„ ํ˜ธํ•˜๋Š” ๊ฐ’์œผ๋กœ ์ƒˆ ์ปค๋„ฅํ„ฐ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  2. ์ƒˆ ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„œ๋น„์Šค ๋˜๋Š” ํ•จ์ˆ˜๋ฅผ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.
  3. ํŠธ๋ž˜ํ”ฝ์ด ์ด๋™๋˜๋ฉด ์ด์ „ ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.

์ตœ์†Œ ๋ฐ ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ์ˆ˜ ์ฆ๊ฐ€

์ฝ˜์†”

  1. ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ๊ฐœ์š” ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค๋กœ ์ด๋™

  2. ์ˆ˜์ •ํ•  ์ปค๋„ฅํ„ฐ๋ฅผ ์„ ํƒํ•˜๊ณ  ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์ตœ์†Œ ์ธ์Šคํ„ด์Šค ํ•„๋“œ์—์„œ ์„ ํ˜ธํ•˜๋Š” ์ตœ์†Œ ์ธ์Šคํ„ด์Šค ์ˆ˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ์ด ํ•„๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Ÿ๊ฐ’์€ ํ˜„์žฌ ๊ฐ’์ž…๋‹ˆ๋‹ค. ์ด ํ•„๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ“๊ฐ’์€ ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ํ•„๋“œ์˜ ํ˜„์žฌ ๊ฐ’์—์„œ 1์„ ๋บ€ ๊ฐ’์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ํ•„๋“œ ๊ฐ’์ด 8์ธ ๊ฒฝ์šฐ ์ตœ์†Œ ์ธ์Šคํ„ด์Šค ํ•„๋“œ์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ตœ๋Œ“๊ฐ’์€ 7์ž…๋‹ˆ๋‹ค.

  4. ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ํ•„๋“œ์—์„œ ์„ ํ˜ธํ•˜๋Š” ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ์ˆ˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    ์ด ํ•„๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Ÿ๊ฐ’์€ ํ˜„์žฌ ๊ฐ’์ž…๋‹ˆ๋‹ค. ์ด ํ•„๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ“๊ฐ’์€ 10์ž…๋‹ˆ๋‹ค.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. ์ปค๋„ฅํ„ฐ์˜ ์ตœ์†Œ ๋˜๋Š” ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ์ˆ˜๋ฅผ ๋Š˜๋ฆฌ๋ ค๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --min-instances=MIN_INSTANCES --max-instances=MAX_INSTANCES
    ๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • CONNECTOR_NAME: ์ปค๋„ฅํ„ฐ ์ด๋ฆ„
    • REGION: ์ปค๋„ฅํ„ฐ ๋ฆฌ์ „์˜ ์ด๋ฆ„
    • MIN_INSTANCES: ์„ ํ˜ธํ•˜๋Š” ์ตœ์†Œ ์ธ์Šคํ„ด์Šค ์ˆ˜.
      • ์ด ํ•„๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Ÿ๊ฐ’์€ min_instances์˜ ํ˜„์žฌ ๊ฐ’์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ฐ’์„ ์ฐพ์œผ๋ ค๋ฉด ํ˜„์žฌ ์†์„ฑ ๊ฐ’ ์ฐพ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
      • min_instances๊ฐ€ max_instances๋ณด๋‹ค ์ž‘์•„์•ผ ํ•˜๋ฏ€๋กœ ์ด ํ•„๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ“๊ฐ’์€ ํ˜„์žฌ max_instances ๊ฐ’์—์„œ 1์„ ๋บ€ ๊ฐ’์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด max_instances๊ฐ€ 8์ด๋ฉด ์ด ํ•„๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ“๊ฐ’์€ 7์ž…๋‹ˆ๋‹ค. ์ปค๋„ฅํ„ฐ๊ฐ€ ๊ธฐ๋ณธ๊ฐ’์ธ max-instances 10์„ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ ์ด ํ•„๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ“๊ฐ’์€ 9์ž…๋‹ˆ๋‹ค. max-instances์˜ ๊ฐ’์„ ์ฐพ์œผ๋ ค๋ฉด ํ˜„์žฌ ์†์„ฑ ๊ฐ’ ์ฐพ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
    • MAX_INSTANCES:

      • ์ด ํ•„๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ์†Ÿ๊ฐ’์€ max_instances์˜ ํ˜„์žฌ ๊ฐ’์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ฐ’์„ ์ฐพ์œผ๋ ค๋ฉด ํ˜„์žฌ ์†์„ฑ ๊ฐ’ ์ฐพ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
      • ์ด ํ•„๋“œ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ“๊ฐ’์€ 10์ž…๋‹ˆ๋‹ค.

      ์ตœ์†Œ ์ธ์Šคํ„ด์Šค ์ˆ˜๋งŒ ๋Š˜๋ฆฌ๊ณ  ์ตœ๋Œ“๊ฐ’์€ ๋†’์ด๊ณ  ์‹ถ์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋„ ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ์ˆ˜๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค ์ˆ˜๋งŒ ์—…๋ฐ์ดํŠธํ•˜๊ณ  ์ตœ์†Ÿ๊ฐ’์€ ์—…๋ฐ์ดํŠธํ•˜์ง€ ์•Š์œผ๋ ค๋ฉด ์ตœ์†Œ ์ธ์Šคํ„ด์Šค ์ˆ˜๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค์˜ ์ตœ์†Œ ๋˜๋Š” ์ตœ๋Œ€ ์ˆ˜๋ฅผ ํ˜„์žฌ ๊ฐ’์œผ๋กœ ์œ ์ง€ํ•˜๋ ค๋ฉด ํ˜„์žฌ ๊ฐ’์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ฐ’์„ ์ฐพ์œผ๋ ค๋ฉด ํ˜„์žฌ ์†์„ฑ ๊ฐ’ ์ฐพ๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

ํ˜„์žฌ ์†์„ฑ ๊ฐ’ ์ฐพ๊ธฐ

์ปค๋„ฅํ„ฐ์˜ ํ˜„์žฌ ์†์„ฑ ๊ฐ’์„ ์ฐพ์œผ๋ ค๋ฉด ํ„ฐ๋ฏธ๋„์—์„œ ๋‹ค์Œ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

gcloud compute networks vpc-access connectors describe CONNECTOR_NAME --region=REGION --project=PROJECT
๋‹ค์Œ์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

  • CONNECTOR_NAME: ์ปค๋„ฅํ„ฐ ์ด๋ฆ„
  • REGION: ์ปค๋„ฅํ„ฐ ๋ฆฌ์ „์˜ ์ด๋ฆ„
  • PROJECT: Google Cloud ํ”„๋กœ์ ํŠธ์˜ ์ด๋ฆ„

์ปค๋„ฅํ„ฐ ์‚ฌ์šฉ๋Ÿ‰ ๋ชจ๋‹ˆํ„ฐ๋ง

์ปค๋„ฅํ„ฐ ์„ค์ • ์กฐ์ • ์‹œ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ์‹œ๊ฐ„๋ณ„ ์‚ฌ์šฉ๋Ÿ‰์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด CPU ์‚ฌ์šฉ๋ฅ ์ด ๊ธ‰์ฆํ•˜๋ฉด ์ข‹์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ์ธ์Šคํ„ด์Šค ์ตœ๋Œ€ ๊ฐœ์ˆ˜ ์ฆ๊ฐ€๋ฅผ ์‹œ๋„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜๋Š” ์ฒ˜๋ฆฌ๋Ÿ‰์„ ์ตœ๋Œ€์น˜๋กœ ์„ค์ •ํ•œ ๊ฒฝ์šฐ ๋” ํฐ ๋จธ์‹  ์œ ํ˜•์œผ๋กœ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Google Cloud ์ฝ˜์†”์„ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๊ฐ„ ๊ฒฝ๊ณผ์— ๋”ฐ๋ฅธ ์ปค๋„ฅํ„ฐ์˜ ์ฒ˜๋ฆฌ๋Ÿ‰, ์ธ์Šคํ„ด์Šค ์ˆ˜, CPU ์‚ฌ์šฉ๋ฅ  ์ธก์ •ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ์ฐจํŠธ๋ฅผ ํ‘œ์‹œํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ๊ฐœ์š” ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค๋กœ ์ด๋™

  2. ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ปค๋„ฅํ„ฐ ์ด๋ฆ„์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. 1~90์ผ ์ค‘์—์„œ ํ‘œ์‹œํ•  ์ผ์ˆ˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  4. ์ฒ˜๋ฆฌ๋Ÿ‰ ์ฐจํŠธ์—์„œ ์ฐจํŠธ ์œ„๋กœ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ ธ๊ฐ€ ์ปค๋„ฅํ„ฐ์˜ ์ตœ๊ทผ ์ฒ˜๋ฆฌ๋Ÿ‰์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  5. ์ธ์Šคํ„ด์Šค ์ˆ˜ ์ฐจํŠธ์—์„œ ์ฐจํŠธ ์œ„๋กœ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ ธ๊ฐ€ ์ปค๋„ฅํ„ฐ๊ฐ€ ์ตœ๊ทผ์— ์‚ฌ์šฉํ•œ ์ธ์Šคํ„ด์Šค ์ˆ˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  6. CPU ์‚ฌ์šฉ๋ฅ  ์ฐจํŠธ์—์„œ ์ฐจํŠธ ์œ„๋กœ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ ธ๊ฐ€ ์ปค๋„ฅํ„ฐ์˜ ์ตœ๊ทผ CPU ์‚ฌ์šฉ๋Ÿ‰์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ฐจํŠธ์—๋Š” 50๋ฒˆ์งธ, 95๋ฒˆ์งธ, 99๋ฒˆ์งธ ๋ฐฑ๋ถ„์œ„์ˆ˜์˜ ์ธ์Šคํ„ด์Šค์— ๋ถ„์‚ฐ๋œ CPU ์‚ฌ์šฉ๋Ÿ‰์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

์ปค๋„ฅํ„ฐ ์‚ญ์ œ

์ปค๋„ฅํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์ „์— ์ปค๋„ฅํ„ฐ๋ฅผ ์•„์ง ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ฒ„๋ฆฌ์Šค ๋ฆฌ์†Œ์Šค์—์„œ ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ญ์ œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋ฒ„๋ฆฌ์Šค ๋ฆฌ์†Œ์Šค์—์„œ ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์ „์— ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋‚˜์ค‘์— VPC ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๊ณต์œ  VPC ํ˜ธ์ŠคํŠธ ํ”„๋กœ์ ํŠธ์—์„œ ์ปค๋„ฅํ„ฐ๋ฅผ ์„ค์ •ํ•˜๋Š” ๊ณต์œ  VPC ์‚ฌ์šฉ์ž์˜ ๊ฒฝ์šฐ gcloud compute networks vpc-access connectors describe ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์„œ๋ฒ„๋ฆฌ์Šค ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ปค๋„ฅํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด Google Cloud ์ฝ˜์†”์ด๋‚˜ Google Cloud CLI๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Google Cloud ์ฝ˜์†”์—์„œ ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ๊ฐœ์š” ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

    ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค๋กœ ์ด๋™

  2. ์‚ญ์ œํ•  ์ปค๋„ฅํ„ฐ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ์‚ญ์ œ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ gcloud ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

    gcloud compute networks vpc-access connectors delete CONNECTOR_NAME --region=REGION
    

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

    • CONNECTOR_NAME: ์‚ญ์ œํ•  ์ปค๋„ฅํ„ฐ์˜ ์ด๋ฆ„
    • REGION: ์ปค๋„ฅํ„ฐ๊ฐ€ ์œ„์น˜ํ•œ ๋ฆฌ์ „

ํ”„๋กœ์ ํŠธ์˜ ์ปค์Šคํ…€ ์ œ์•ฝ ์กฐ๊ฑด ๊ด€๋ฆฌ

์ด ์„น์…˜์—์„œ๋Š” ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ์ปค๋„ฅํ„ฐ์˜ ์ปค์Šคํ…€ ์ œ์•ฝ ์กฐ๊ฑด์„ ๋งŒ๋“ค๊ณ  ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€์—์„œ ์ ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ปค์Šคํ…€ ์กฐ์ง ์ •์ฑ…์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ปค์Šคํ…€ ์กฐ์ง ์ •์ฑ… ๋งŒ๋“ค๊ธฐ ๋ฐ ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

Google Cloud ์กฐ์ง ์ •์ฑ…์„ ์‚ฌ์šฉํ•˜๋ฉด ์กฐ์ง ๋ฆฌ์†Œ์Šค๋ฅผ ์ค‘์•™์—์„œ ํ”„๋กœ๊ทธ๋ž˜๋งคํ‹ฑ ๋ฐฉ์‹์œผ๋กœ ์ œ์–ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์กฐ์ง ์ •์ฑ… ๊ด€๋ฆฌ์ž๋Š” Google Cloud ๋ฆฌ์†Œ์Šค ๊ณ„์ธต ๊ตฌ์กฐ์—์„œGoogle Cloud ๋ฆฌ์†Œ์Šค ๋ฐ ์ด๋Ÿฌํ•œ ๋ฆฌ์†Œ์Šค์˜ ํ•˜์œ„ ์š”์†Œ์— ์ ์šฉ๋˜๋Š” ์ œ์•ฝ ์กฐ๊ฑด์ด๋ผ๋Š” ์ œํ•œ์‚ฌํ•ญ ์ง‘ํ•ฉ์ธ ์กฐ์ง ์ •์ฑ…์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์กฐ์ง, ํด๋”, ํ”„๋กœ์ ํŠธ ์ˆ˜์ค€์—์„œ ์กฐ์ง ์ •์ฑ…์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์กฐ์ง ์ •์ฑ…์€ ๋‹ค์–‘ํ•œGoogle Cloud ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์‚ฌ์ „ ์ •์˜๋œ ์ œ์•ฝ ์กฐ๊ฑด์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์กฐ์ง ์ •์ฑ…์—์„œ ์ œํ•œ๋˜๋Š” ํŠน์ • ํ•„๋“œ๋ฅผ ๋”์šฑ ์„ธ๋ถ€์ ์œผ๋กœ ๋งž์ถค์„ค์ • ๊ฐ€๋Šฅํ•œ ๋ฐฉ์‹์œผ๋กœ ์ œ์–ดํ•˜๋ ค๋ฉด ์ปค์Šคํ…€ ์กฐ์ง ์ •์ฑ…๋„ ๋งŒ๋“ค๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด์ 

์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Serverless VPC Access API์—์„œ ์‚ฌ์šฉ์ž ๊ตฌ์„ฑ ํ•„๋“œ ๋Œ€๋ถ€๋ถ„์„ ์‚ฌ์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ์ˆ˜๋งŒํผ ์ปค์Šคํ…€ ์ œ์•ฝ ์กฐ๊ฑด์„ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ์ปค๋„ฅํ„ฐ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„œ๋ธŒ๋„ท์„ ์ง€์ •ํ•˜๋Š” ์ปค์Šคํ…€ ์ œ์•ฝ ์กฐ๊ฑด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ ์šฉ๋˜๋ฉด ์š”์ฒญ์ด ์ปค์Šคํ…€ ์ œ์•ฝ ์กฐ๊ฑด์ด ์ ์šฉ๋˜๋Š” ์ •์ฑ…์„ ์œ„๋ฐ˜ํ•˜๋ฉด gcloud CLI ๋ฐ ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ๋กœ๊ทธ์— ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์—๋Š” ์ œ์•ฝ ์กฐ๊ฑด ID์™€ ์œ„๋ฐ˜ํ•œ ์ปค์Šคํ…€ ์ œ์•ฝ ์กฐ๊ฑด์— ๋Œ€ํ•œ ์„ค๋ช…์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ •์ฑ… ์ƒ์†

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

์ œํ•œ์‚ฌํ•ญ

๋จธ์‹  ์œ ํ˜•, ์ตœ์†Œ ์ธ์Šคํ„ด์Šค ๋˜๋Š” ์ตœ๋Œ€ ์ธ์Šคํ„ด์Šค๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์€ ์ง€์›๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

์กฐ์ง ID๋ฅผ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ•„์š”ํ•œ ์—ญํ• 

์กฐ์ง ์ •์ฑ…์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์–ป์œผ๋ ค๋ฉด ๊ด€๋ฆฌ์ž์—๊ฒŒ ์กฐ์ง ๋ฆฌ์†Œ์Šค์— ๋Œ€ํ•œ ์กฐ์ง ์ •์ฑ… ๊ด€๋ฆฌ์ž(roles/orgpolicy.policyAdmin) IAM ์—ญํ• ์„ ๋ถ€์—ฌํ•ด ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜์„ธ์š”. ์—ญํ•  ๋ถ€์—ฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํ”„๋กœ์ ํŠธ, ํด๋”, ์กฐ์ง์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ปค์Šคํ…€ ์—ญํ• ์ด๋‚˜ ๋‹ค๋ฅธ ์‚ฌ์ „ ์ •์˜๋œ ์—ญํ• ์„ ํ†ตํ•ด ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์–ป์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

์ปค์Šคํ…€ ์ œ์•ฝ์กฐ๊ฑด ๋งŒ๋“ค๊ธฐ

์ปค์Šคํ…€ ์ œ์•ฝ์กฐ๊ฑด์€ ์กฐ์ง ์ •์ฑ…์„ ์ ์šฉํ•˜๋Š” ์„œ๋น„์Šค์—์„œ ์ง€์›๋˜๋Š” ๋ฆฌ์†Œ์Šค, ๋ฉ”์„œ๋“œ, ์กฐ๊ฑด, ์ž‘์—…์„ ์‚ฌ์šฉํ•˜์—ฌ YAML ํŒŒ์ผ์—์„œ ์ •์˜๋ฉ๋‹ˆ๋‹ค. ์ปค์Šคํ…€ ์ œ์•ฝ์กฐ๊ฑด์˜ ์กฐ๊ฑด์€ Common Expression Language(CEL)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜๋ฉ๋‹ˆ๋‹ค. CEL์„ ์‚ฌ์šฉํ•ด์„œ ์ปค์Šคํ…€ ์ œ์•ฝ ์กฐ๊ฑด์—์„œ ์กฐ๊ฑด์„ ๋นŒ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์ปค์Šคํ…€ ์ œ์•ฝ ์กฐ๊ฑด ๋งŒ๋“ค๊ธฐ ๋ฐ ๊ด€๋ฆฌ์˜ CEL ์„น์…˜์„ ์ฐธ์กฐํ•˜์„ธ์š”.

์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ์ปค์Šคํ…€ ์ œ์•ฝ ์กฐ๊ฑด์˜ YAML ํŒŒ์ผ์„ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ์˜ˆ์‹œ๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.

name: organizations/ORGANIZATION_ID/customConstraints/CONSTRAINT_NAME
resourceTypes:
- vpcaccess.googleapis.com/Connector
methodTypes:
- CREATE
condition: "CONDITION"
actionType: ACTION
displayName: DISPLAY_NAME
description: DESCRIPTION

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

  • ORGANIZATION_ID: ์กฐ์ง ID(์˜ˆ: 123456789)

  • CONSTRAINT_NAME: ์ƒˆ ์ปค์Šคํ…€ ์ œ์•ฝ์กฐ๊ฑด์— ์‚ฌ์šฉํ•˜๋ ค๋Š” ์ด๋ฆ„. ์ปค์Šคํ…€ ์ œ์•ฝ ์กฐ๊ฑด์€ custom.์œผ๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•˜๋ฉฐ ๋Œ€๋ฌธ์ž, ์†Œ๋ฌธ์ž, ์ˆซ์ž๋งŒ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์˜ˆ: custom.defaultNetworkConstraint.). ์ด ํ•„๋“œ์˜ ์ตœ๋Œ€ ๊ธธ์ด๋Š” ํ”„๋ฆฌํ”ฝ์Šค๋ฅผ ์ œ์™ธํ•˜๊ณ  70์ž(์˜๋ฌธ ๊ธฐ์ค€)์ž…๋‹ˆ๋‹ค.

  • CONDITION: ์ง€์›๋˜๋Š” ์„œ๋น„์Šค ๋ฆฌ์†Œ์Šค์˜ ํ‘œํ˜„์— ๋Œ€ํ•ด ์ž‘์„ฑ๋œ CEL ์กฐ๊ฑด. ์ด ํ•„๋“œ์˜ ์ตœ๋Œ€ ๊ธธ์ด๋Š” 1000์ž(์˜๋ฌธ ๊ธฐ์ค€)์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด "resource.network == default"์ž…๋‹ˆ๋‹ค.

  • ACTION: condition์ด ์ถฉ์กฑ๋  ๋•Œ ์ˆ˜ํ–‰ํ•  ์ž‘์—…. ALLOW ๋˜๋Š” DENY์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • DISPLAY_NAME: ์ œ์•ฝ์กฐ๊ฑด์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ์ด๋ฆ„. ์ด ํ•„๋“œ์˜ ์ตœ๋Œ€ ๊ธธ์ด๋Š” 200์ž(์˜๋ฌธ ๊ธฐ์ค€)์ž…๋‹ˆ๋‹ค.

  • DESCRIPTION: ์ •์ฑ…์„ ์œ„๋ฐ˜ํ•  ๋•Œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๋กœ ํ‘œ์‹œํ•  ์ œ์•ฝ ์กฐ๊ฑด์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์นœํ™”์ ์ธ ์„ค๋ช…(์˜ˆ: "Require network to not be set to default." ์ด ํ•„๋“œ์˜ ์ตœ๋Œ€ ๊ธธ์ด๋Š” 2,000์ž(์˜๋ฌธ ๊ธฐ์ค€)).

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

์ปค์Šคํ…€ ์ œ์•ฝ์กฐ๊ฑด ์„ค์ •

์ƒˆ ์ปค์Šคํ…€ ์ œ์•ฝ์กฐ๊ฑด์˜ YAML ํŒŒ์ผ์„ ๋งŒ๋“  ํ›„์—๋Š” ์กฐ์ง์—์„œ ์กฐ์ง ์ •์ฑ…์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ปค์Šคํ…€ ์ œ์•ฝ์กฐ๊ฑด์„ ์„ค์ •ํ•˜๋ ค๋ฉด gcloud org-policies set-custom-constraint ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
gcloud org-policies set-custom-constraint CONSTRAINT_PATH
CONSTRAINT_PATH๋ฅผ ์ปค์Šคํ…€ ์ œ์•ฝ์กฐ๊ฑด ํŒŒ์ผ์˜ ์ „์ฒด ๊ฒฝ๋กœ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด /home/user/customconstraint.yaml์ž…๋‹ˆ๋‹ค. ์™„๋ฃŒ๋˜๋ฉด Google Cloud ์กฐ์ง ์ •์ฑ… ๋ชฉ๋ก์—์„œ ์กฐ์ง ์ •์ฑ…์œผ๋กœ ์ปค์Šคํ…€ ์ œ์•ฝ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปค์Šคํ…€ ์ œ์•ฝ์กฐ๊ฑด์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด gcloud org-policies list-custom-constraints ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
gcloud org-policies list-custom-constraints --organization=ORGANIZATION_ID
ORGANIZATION_ID๋ฅผ ์กฐ์ง ๋ฆฌ์†Œ์Šค ID๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์กฐ์ง ์ •์ฑ… ๋ณด๊ธฐ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

์ปค์Šคํ…€ ์ œ์•ฝ์กฐ๊ฑด ์ ์šฉ

์ œ์•ฝ์กฐ๊ฑด์„ ์ฐธ์กฐํ•˜๋Š” ์กฐ์ง ์ •์ฑ…์„ ๋งŒ๋“ค๊ณ  ํ•ด๋‹น ์กฐ์ง ์ •์ฑ…์„ Google Cloud ๋ฆฌ์†Œ์Šค์— ์ ์šฉํ•˜์—ฌ ์ œ์•ฝ ์กฐ๊ฑด์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

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

    ์กฐ์ง ์ •์ฑ…์œผ๋กœ ์ด๋™

  2. ํ”„๋กœ์ ํŠธ ์„ ํƒ ๋„๊ตฌ์—์„œ ์กฐ์ง ์ •์ฑ…์„ ์„ค์ •ํ•  ํ”„๋กœ์ ํŠธ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  3. ์กฐ์ง ์ •์ฑ… ํŽ˜์ด์ง€์˜ ๋ชฉ๋ก์—์„œ ์ œ์•ฝ์กฐ๊ฑด์„ ์„ ํƒํ•˜์—ฌ ํ•ด๋‹น ์ œ์•ฝ์กฐ๊ฑด์˜ ์ •์ฑ… ์„ธ๋ถ€์ •๋ณด ํŽ˜์ด์ง€๋ฅผ ๋ด…๋‹ˆ๋‹ค.
  4. ์ด ๋ฆฌ์†Œ์Šค์˜ ์กฐ์ง ์ •์ฑ…์„ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ์ •์ฑ… ๊ด€๋ฆฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  5. ์ •์ฑ… ์ˆ˜์ • ํŽ˜์ด์ง€์—์„œ ์ƒ์œ„ ์ •์ฑ… ์žฌ์ •์˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  6. ๊ทœ์น™ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  7. ์ ์šฉ ์„น์…˜์—์„œ ์ด ์กฐ์ง ์ •์ฑ… ์ ์šฉ์„ ์‚ฌ์šฉ ์„ค์ •ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
  8. (์„ ํƒ์‚ฌํ•ญ) ํƒœ๊ทธ๋กœ ์กฐ์ง ์ •์ฑ…์„ ์กฐ๊ฑด๋ถ€๋กœ ๋งŒ๋“ค๋ ค๋ฉด ์กฐ๊ฑด ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์กฐ๊ฑด๋ถ€ ๊ทœ์น™์„ ์กฐ์ง ์ •์ฑ…์— ์ถ”๊ฐ€ํ•˜๋ฉด ๋น„์กฐ๊ฑด๋ถ€ ๊ทœ์น™์„ ์ตœ์†Œ ํ•˜๋‚˜ ์ด์ƒ ์ถ”๊ฐ€ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ •์ฑ…์„ ์ €์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ์ง ์ •์ฑ… ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.
  9. ๋ณ€๊ฒฝ์‚ฌํ•ญ ํ…Œ์ŠคํŠธ๋ฅผ ํด๋ฆญํ•˜์—ฌ ์กฐ์ง ์ •์ฑ…์˜ ํšจ๊ณผ๋ฅผ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ๊ด€๋ฆฌํ˜• ์ œ์•ฝ์กฐ๊ฑด์—๋Š” ์ •์ฑ… ์‹œ๋ฎฌ๋ ˆ์ด์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ •์ฑ… ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋กœ ์กฐ์ง ์ •์ฑ… ๋ณ€๊ฒฝ์‚ฌํ•ญ ํ…Œ์ŠคํŠธ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.
  10. ์กฐ์ง ์ •์ฑ…์„ ์™„๋ฃŒํ•˜๊ณ  ์ ์šฉํ•˜๋ ค๋ฉด ์ •์ฑ… ์„ค์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ์ •์ฑ…์ด ์ ์šฉ๋˜๋Š” ๋ฐ ์ตœ๋Œ€ 15๋ถ„์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค.

gcloud

๋ถˆ๋ฆฌ์–ธ ๊ทœ์น™์ด ์žˆ๋Š” ์กฐ์ง ์ •์ฑ…์„ ๋งŒ๋“ค๋ ค๋ฉด ์ œ์•ฝ์กฐ๊ฑด์„ ์ฐธ์กฐํ•˜๋Š” ์ •์ฑ… YAML ํŒŒ์ผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

      name: projects/PROJECT_ID/policies/CONSTRAINT_NAME
      spec:
        rules:
        - enforce: true
    

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

  • PROJECT_ID: ์ œ์•ฝ์กฐ๊ฑด์„ ์ ์šฉํ•  ํ”„๋กœ์ ํŠธ
  • CONSTRAINT_NAME: ์ปค์Šคํ…€ ์ œ์•ฝ์กฐ๊ฑด์— ๋Œ€ํ•ด ์ •์˜๋œ ์ด๋ฆ„. ์˜ˆ๋ฅผ ๋“ค๋ฉด custom.defaultNetworkConstraint์ž…๋‹ˆ๋‹ค.

์ œ์•ฝ์กฐ๊ฑด์ด ํฌํ•จ๋œ ์กฐ์ง ์ •์ฑ…์„ ์ ์šฉํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud org-policies set-policy POLICY_PATH
    

POLICY_PATH๋ฅผ ์กฐ์ง ์ •์ฑ… YAML ํŒŒ์ผ์˜ ์ „์ฒด ๊ฒฝ๋กœ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์ •์ฑ…์ด ์ ์šฉ๋˜๋Š” ๋ฐ ์ตœ๋Œ€ 15๋ถ„์ด ์†Œ์š”๋ฉ๋‹ˆ๋‹ค.

์ปค์Šคํ…€ ์ œ์•ฝ์กฐ๊ฑด ํ…Œ์ŠคํŠธ

์ธ๊ทธ๋ ˆ์Šค ์„ค์ •์„ ์ œํ•œํ•˜๋Š” ์˜ˆ์‹œ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๋ ค๋ฉด ๋„คํŠธ์›Œํฌ๋ฅผ default๋กœ ์„ค์ •ํ•˜์—ฌ ํ”„๋กœ์ ํŠธ์— ์ปค๋„ฅํ„ฐ๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

gcloud compute networks vpc-access connectors create org-policy-test \
    --project=PROJECT_ID \
    --region=REGION_ID \
    --network=default

์ถœ๋ ฅ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Operation denied by custom org policies: ["customConstraints/custom.defaultNetworkConstraint": "Require network to not be set to default."]

์ผ๋ฐ˜์ ์ธ ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ์ปค์Šคํ…€ ์กฐ์ง ์ •์ฑ… ์˜ˆ์‹œ

๋‹ค์Œ ํ‘œ์—๋Š” ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ์ปค๋„ฅํ„ฐ์—์„œ ์œ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ปค์Šคํ…€ ์ œ์•ฝ ์กฐ๊ฑด์˜ ์˜ˆ์‹œ๊ฐ€ ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ค๋ช… ์ œ์•ฝ์กฐ๊ฑด ๊ตฌ๋ฌธ
์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ์ปค๋„ฅํ„ฐ๊ฐ€ ํŠน์ • ๋„คํŠธ์›Œํฌ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.allowlistNetworks
    resourceTypes:
    - vpcaccess.googleapis.com/Connector
    methodTypes:
    - CREATE
    condition: "resource.network == 'allowlisted-network'"
    actionType: ALLOW
    displayName: allowlistNetworks
    description: Require connectors to use a specific network.
์„ค๋ช… ์ œ์•ฝ์กฐ๊ฑด ๊ตฌ๋ฌธ
์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ์ปค๋„ฅํ„ฐ๊ฐ€ ํŠน์ • ์„œ๋ธŒ๋„ท์—๋งŒ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    name: organizations/ORGANIZATION_ID/customConstraints/custom.restrictSubnetForProject
    resourceTypes:
    - vpcaccess.googleapis.com/Connector
    methodTypes:
    - CREATE
    condition: "resource.subnet.name == 'allocated-subnet'"
    actionType: ALLOW
    displayName: restrictSubnetForProject
    description: This project is only allowed to use the subnet "allocated-subnet".

์ปค๋„ฅํ„ฐ ๋Œ€์‹  Direct VPC๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก Cloud Run ํ™˜๊ฒฝ ๊ตฌ์„ฑ

Cloud Run ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉ ์„ค์ •ํ•˜์—ฌ ์ด๊ทธ๋ ˆ์Šค(์•„์›ƒ๋ฐ”์šด๋“œ) ํŠธ๋ž˜ํ”ฝ์„ VPC ๋„คํŠธ์›Œํฌ๋กœ ์ง์ ‘ ์ „์†กํ•˜์—ฌ Compute Engine VM ์ธ์Šคํ„ด์Šค, Memorystore ์ธ์Šคํ„ด์Šค, ๋‚ด๋ถ€ IP ์ฃผ์†Œ๊ฐ€ ์žˆ๋Š” ๊ธฐํƒ€ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Direct VPC๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์„œ๋น„์Šค ๊ตฌ์„ฑ

Direct VPC ์ด๊ทธ๋ ˆ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Cloud Run ์„œ๋น„์Šค๊ฐ€ ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ์ปค๋„ฅํ„ฐ ์—†์ด VPC ๋„คํŠธ์›Œํฌ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ๋น„์šฉ์€ ์„œ๋น„์Šค ์ž์ฒด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 0์œผ๋กœ ์กฐ์ •๋ฉ๋‹ˆ๋‹ค. VPC ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด Cloud Run ์„œ๋น„์Šค ๋ฒ„์ „์—์„œ ์ง์ ‘ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ์„ ๋”์šฑ ์„ธ๋ถ„ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Google Cloud ์ฝ˜์†”, Google Cloud CLI, YAML ๋˜๋Š” Terraform์„ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค์™€ ํ•จ๊ป˜ Direct VPC ์ด๊ทธ๋ ˆ์Šค๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Cloud Run์œผ๋กœ ์ด๋™

  2. ๋ฐฐํฌํ•  ์ƒˆ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋ ค๋ฉด ์„œ๋น„์Šค ๋งŒ๋“ค๊ธฐ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๊ณ  ๋ฐฐํฌํ•˜๋Š” ๊ฒฝ์šฐ ์„œ๋น„์Šค๋ฅผ ํด๋ฆญํ•œ ํ›„ ์ƒˆ ๋ฒ„์ „ ์ˆ˜์ • ๋ฐ ๋ฐฐํฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์ƒˆ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ํ•„์š”์— ๋”ฐ๋ผ ์ดˆ๊ธฐ ์„œ๋น„์Šค ์„ค์ • ํŽ˜์ด์ง€๋ฅผ ์ž‘์„ฑํ•œ ํ›„ ์ปจํ…Œ์ด๋„ˆ, ๋ณผ๋ฅจ, ๋„คํŠธ์›Œํ‚น, ๋ณด์•ˆ์„ ํด๋ฆญํ•˜์—ฌ ์„œ๋น„์Šค ๊ตฌ์„ฑ ํŽ˜์ด์ง€๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

  4. ๋„คํŠธ์›Œํ‚น ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  5. ์•„์›ƒ๋ฐ”์šด๋“œ ํŠธ๋ž˜ํ”ฝ์„ ์œ„ํ•ด VPC์— ์—ฐ๊ฒฐ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  6. VPC๋กœ ์ง์ ‘ ํŠธ๋ž˜ํ”ฝ ์ „์†ก์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  7. ๋„คํŠธ์›Œํฌ ํ•„๋“œ์—์„œ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†กํ•  VPC ๋„คํŠธ์›Œํฌ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  8. ์„œ๋ธŒ๋„ท ํ•„๋“œ์—์„œ ์„œ๋น„์Šค๊ฐ€ IP ์ฃผ์†Œ๋ฅผ ์ˆ˜์‹ ํ•  ์„œ๋ธŒ๋„ท์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ์„œ๋ธŒ๋„ท์— ์—ฌ๋Ÿฌ ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  9. (์„ ํƒ์‚ฌํ•ญ) ์„œ๋น„์Šค ๋˜๋Š” ์—ฐ๊ฒฐํ•  ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋Š” ๋ฒ„์ „ ์ˆ˜์ค€์—์„œ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ๊ฐ ์„œ๋น„์Šค ๋ฒ„์ „์€ network-tag-2์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  10. ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ…์— ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    • VPC ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋‚ด๋ถ€ ์ฃผ์†Œ๋กœ๋งŒ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†กํ•˜๋„๋ก ๋น„๊ณต๊ฐœ IP์— ๋Œ€ํ•œ ์š”์ฒญ๋งŒ VPC๋กœ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค.
    • VPC ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ์•„์›ƒ๋ฐ”์šด๋“œ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†กํ•˜๋ ค๋ฉด ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์„ VPC๋กœ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค.
  11. ๋งŒ๋“ค๊ธฐ ๋˜๋Š” ๋ฐฐํฌ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  12. ์„œ๋น„์Šค๊ฐ€ VPC ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์„œ๋น„์Šค๋ฅผ ํด๋ฆญํ•œ ํ›„ ๋„คํŠธ์›Œํ‚น ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ์™€ ์„œ๋ธŒ๋„ท์€ VPC ์นด๋“œ์— ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

    ์ด์ œ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์—์„œ ํ—ˆ์šฉํ•˜๋Š” ๋Œ€๋กœ Cloud Run ์„œ๋น„์Šค์—์„œ VPC ๋„คํŠธ์›Œํฌ์˜ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋กœ ์š”์ฒญ์„ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

gcloud

Google Cloud CLI์—์„œ ์ปค๋„ฅํ„ฐ ์—†์ด Cloud Run ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•˜๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. gcloud ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    gcloud components update
  2. ํ”„๋กœ์ ํŠธ์— Compute Engine API๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    gcloud services enable compute.googleapis.com
    
  3. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cloud Run ์„œ๋น„์Šค๋ฅผ ๋ฐฐํฌํ•ฉ๋‹ˆ๋‹ค.

    gcloud run deploy SERVICE_NAME \
    --image=IMAGE_URL \
    --network=NETWORK \
    --subnet=SUBNET \
    --network-tags=NETWORK_TAG_NAMES \
    --vpc-egress=EGRESS_SETTING \
    --region=REGION

    ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • SERVICE_NAME: Cloud Run ์„œ๋น„์Šค ์ด๋ฆ„
    • IMAGE_URL: ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ์ฐธ์กฐ(์˜ˆ: us-docker.pkg.dev/cloudrun/container/hello:latest). Artifact Registry๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ €์žฅ์†Œ REPO_NAME์ด ์ด๋ฏธ ์ƒ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. URL์€ LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG ํ˜•์‹์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
    • (์„ ํƒ์‚ฌํ•ญ) NETWORK: VPC ๋„คํŠธ์›Œํฌ ์ด๋ฆ„. VPC ๋„คํŠธ์›Œํฌ ๋˜๋Š” ์„œ๋ธŒ๋„ท, ๋˜๋Š” ๋‘˜ ๋‹ค๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ๋งŒ ์ง€์ •ํ•˜๋ฉด ์„œ๋ธŒ๋„ท์€ ๋„คํŠธ์›Œํฌ์™€ ๋™์ผํ•œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • (์„ ํƒ์‚ฌํ•ญ) SUBNET: ์„œ๋ธŒ๋„ท ์ด๋ฆ„. ์„œ๋ธŒ๋„ท์€ /26 ์ด์ƒ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง์ ‘ VPC ์ด๊ทธ๋ ˆ์Šค๋Š” IPv4 ๋ฒ”์œ„ RFC 1918, RFC 6598, ํด๋ž˜์Šค E๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ์„œ๋ธŒ๋„ท์—์„œ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค ๋˜๋Š” ์ž‘์—…์„ ๋ฐฐํฌํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์„œ๋ธŒ๋„ท์€ ๊ธฐ์กด ์ปค๋„ฅํ„ฐ์—์„œ ๊ณต์œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    • (์„ ํƒ์‚ฌํ•ญ) NETWORK_TAG_NAMES: ์„œ๋น„์Šค์™€ ์—ฐ๊ฒฐํ•  ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ์˜ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ์ด๋ฆ„. ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๊ฐ€ ๋ฒ„์ „ ์ˆ˜์ค€์—์„œ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ๊ฐ ์„œ๋น„์Šค ๋ฒ„์ „์€ network-tag-2์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • EGRESS_SETTING: ์ด๊ทธ๋ ˆ์Šค ์„ค์ • ๊ฐ’
      • all-traffic: ๋ชจ๋“  ์•„์›ƒ๋ฐ”์šด๋“œ ํŠธ๋ž˜ํ”ฝ์„ VPC ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†ก
      • private-ranges-only: VPC ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋‚ด๋ถ€ ์ฃผ์†Œ๋กœ๋งŒ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†ก
    • REGION: ์„œ๋น„์Šค ๋ฆฌ์ „
  4. ์„œ๋น„์Šค๊ฐ€ VPC ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud run services describe SERVICE_NAME \
    --region=REGION

    ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • SERVICE_NAME: ์„œ๋น„์Šค ์ด๋ฆ„
    • REGION: ์ด์ „ ๋‹จ๊ณ„์—์„œ ์ง€์ •ํ•œ ์„œ๋น„์Šค์˜ ๋ฆฌ์ „

    ์ถœ๋ ฅ์—๋Š” ๋„คํŠธ์›Œํฌ, ์„œ๋ธŒ๋„ท, ์ด๊ทธ๋ ˆ์Šค ์„ค์ •์˜ ์ด๋ฆ„์ด ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

    VPC access:
      Network:       default
      Subnet:        subnet
      Egress:        private-ranges-only
    

์ด์ œ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์—์„œ ํ—ˆ์šฉํ•˜๋Š” ๋Œ€๋กœ Cloud Run ์„œ๋น„์Šค์—์„œ VPC ๋„คํŠธ์›Œํฌ์˜ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋กœ ์š”์ฒญ์„ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

YAML

  1. ์ƒˆ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ์—๋Š” ์ด ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. ๊ธฐ์กด ์„œ๋น„์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒฝ์šฐ YAML ๊ตฌ์„ฑ์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

    gcloud run services describe SERVICE --format export > service.yaml
  2. ๋‹ค์Œ ์†์„ฑ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
        name: SERVICE_NAME
        labels:
          cloud.googleapis.com/location: REGION
      spec:
        template:
          metadata:
            annotations:
              run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
              run.googleapis.com/vpc-access-egress: EGRESS_SETTING
          spec:
            containers:
            - image: IMAGE

    ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • SERVICE_NAME: Cloud Run ์„œ๋น„์Šค ์ด๋ฆ„ ์„œ๋น„์Šค ์ด๋ฆ„์€ 49์ž ์ดํ•˜์—ฌ์•ผ ํ•˜๋ฉฐ ๋ฆฌ์ „ ๋ฐ ํ”„๋กœ์ ํŠธ๋ณ„๋กœ ๊ณ ์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • REGION: Cloud Run ์„œ๋น„์Šค์˜ ๋ฆฌ์ „. ์ด ๋ฆฌ์ „์€ ์„œ๋ธŒ๋„ท ๋ฆฌ์ „๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • (์„ ํƒ์‚ฌํ•ญ) NETWORK: VPC ๋„คํŠธ์›Œํฌ ์ด๋ฆ„. VPC ๋„คํŠธ์›Œํฌ ๋˜๋Š” ์„œ๋ธŒ๋„ท, ๋˜๋Š” ๋‘˜ ๋‹ค๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ๋งŒ ์ง€์ •ํ•˜๋ฉด ์„œ๋ธŒ๋„ท์€ ๋„คํŠธ์›Œํฌ์™€ ๋™์ผํ•œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • (์„ ํƒ์‚ฌํ•ญ) SUBNET: ์„œ๋ธŒ๋„ท ์ด๋ฆ„. ์„œ๋ธŒ๋„ท์€ /26 ์ด์ƒ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง์ ‘ VPC ์ด๊ทธ๋ ˆ์Šค๋Š” IPv4 ๋ฒ”์œ„ RFC 1918, RFC 6598, ํด๋ž˜์Šค E๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ์„œ๋ธŒ๋„ท์—์„œ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค ๋˜๋Š” ์ž‘์—…์„ ๋ฐฐํฌํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์„œ๋ธŒ๋„ท์€ ๊ธฐ์กด ์ปค๋„ฅํ„ฐ์—์„œ ๊ณต์œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    • (์„ ํƒ์‚ฌํ•ญ) NETWORK_TAG_NAMES: ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•  ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ์˜ ์ด๋ฆ„. ์„œ๋น„์Šค์˜ ๊ฒฝ์šฐ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๊ฐ€ ๋ฒ„์ „ ์ˆ˜์ค€์—์„œ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ๊ฐ ์„œ๋น„์Šค ๋ฒ„์ „์€ network-tag-2์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • EGRESS_SETTING: ์ด๊ทธ๋ ˆ์Šค ์„ค์ • ๊ฐ’
      • all-traffic: ๋ชจ๋“  ์•„์›ƒ๋ฐ”์šด๋“œ ํŠธ๋ž˜ํ”ฝ์„ VPC ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†ก
      • private-ranges-only: VPC ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋‚ด๋ถ€ ์ฃผ์†Œ๋กœ๋งŒ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†ก
    • IMAGE: ์„œ๋น„์Šค ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ URL

    ๋˜ํ•œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ œํ•œ๊ณผ ๊ฐ™์€ ์ถ”๊ฐ€ ๊ตฌ์„ฑ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  3. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค๋ฅผ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    gcloud run services replace service.yaml

Terraform

Terraform ๊ตฌ์„ฑ์„ ์ ์šฉํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๊ธฐ๋ณธ Terraform ๋ช…๋ น์–ด๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

  1. main.tf ํŒŒ์ผ์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

    /**
     * Copyright 2024 Google LLC
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    # Example configuration of a Cloud Run service with direct VPC
    
    resource "google_cloud_run_v2_service" "default" {
      name     = "cloudrun-service"
      location = "us-central1"
    
      deletion_protection = false # set to "true" in production
    
      template {
        containers {
          image = "us-docker.pkg.dev/cloudrun/container/hello"
        }
        vpc_access {
          network_interfaces {
            network    = "default"
            subnetwork = "default"
            tags       = ["tag1", "tag2", "tag3"]
          }
        }
      }
    }
    

์„ ํƒ์ ์œผ๋กœ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์ธ์ฆ๋˜์ง€ ์•Š์€ ์•ก์„ธ์Šค๋ฅผ ํ—ˆ์šฉํ•˜๋ ค๋ฉด ์„œ๋น„์Šค๋ฅผ ๊ณต๊ฐœ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

Direct VPC๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ์ž‘์—… ๊ตฌ์„ฑ

Direct VPC ์ด๊ทธ๋ ˆ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด Cloud Run ์ž‘์—…์ด ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ์ปค๋„ฅํ„ฐ ์—†์ด VPC ๋„คํŠธ์›Œํฌ๋กœ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. VPC ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ์ ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์ด Cloud Run ์ž‘์—…์—์„œ ์ง์ ‘ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ์„ ๋”์šฑ ์„ธ๋ถ„ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Google Cloud ์ฝ˜์†”, Google Cloud CLI, YAML์„ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…๊ณผ ํ•จ๊ป˜ Direct VPC ์ด๊ทธ๋ ˆ์Šค๋ฅผ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฝ˜์†”

  1. Cloud Run์œผ๋กœ ์ด๋™

  2. ์ƒˆ ์ž‘์—…์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ์ž‘์—… ํƒญ์„ ํด๋ฆญํ•˜๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ์ดˆ๊ธฐ ์ž‘์—… ์„ค์ • ํŽ˜์ด์ง€๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ์กด ์ž‘์—…์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ์ž‘์—…์„ ํด๋ฆญํ•œ ํ›„ ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์ปจํ…Œ์ด๋„ˆ, ๋ณ€์ˆ˜ ๋ฐ ๋ณด์•ˆ ๋น„๋ฐ€, ์—ฐ๊ฒฐ, ๋ณด์•ˆ์„ ํด๋ฆญํ•˜์—ฌ ์ž‘์—… ์†์„ฑ ํŽ˜์ด์ง€๋ฅผ ํŽผ์นฉ๋‹ˆ๋‹ค.

  4. ์—ฐ๊ฒฐ ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  5. ์•„์›ƒ๋ฐ”์šด๋“œ ํŠธ๋ž˜ํ”ฝ์„ ์œ„ํ•ด VPC์— ์—ฐ๊ฒฐ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  6. VPC๋กœ ์ง์ ‘ ํŠธ๋ž˜ํ”ฝ ์ „์†ก์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  7. ๋„คํŠธ์›Œํฌ ํ•„๋“œ์—์„œ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†กํ•  VPC ๋„คํŠธ์›Œํฌ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  8. ์„œ๋ธŒ๋„ท ํ•„๋“œ์—์„œ ์ž‘์—…์ด IP ์ฃผ์†Œ๋ฅผ ์ˆ˜์‹ ํ•  ์„œ๋ธŒ๋„ท์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ์„œ๋ธŒ๋„ท์—์„œ ์—ฌ๋Ÿฌ ์ž‘์—…์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  9. ํŠธ๋ž˜ํ”ฝ ๋ผ์šฐํŒ…์— ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    • VPC ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋‚ด๋ถ€ ์ฃผ์†Œ๋กœ๋งŒ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†กํ•˜๋„๋ก ๋น„๊ณต๊ฐœ IP์— ๋Œ€ํ•œ ์š”์ฒญ๋งŒ VPC๋กœ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค.
    • VPC ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ์•„์›ƒ๋ฐ”์šด๋“œ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†กํ•˜๋ ค๋ฉด ๋ชจ๋“  ํŠธ๋ž˜ํ”ฝ์„ VPC๋กœ ๋ผ์šฐํŒ…ํ•ฉ๋‹ˆ๋‹ค.
  10. (์„ ํƒ์‚ฌํ•ญ) ์„œ๋น„์Šค ๋˜๋Š” ์—ฐ๊ฒฐํ•  ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋Š” ๋ฒ„์ „ ์ˆ˜์ค€์—์„œ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ๊ฐ ์„œ๋น„์Šค ๋ฒ„์ „์€ network-tag-2์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  11. (์„ ํƒ์‚ฌํ•ญ) ์ž‘์—…์— ์—ฐ๊ฒฐํ•  ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ์˜ ์ด๋ฆ„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—…์˜ ๊ฒฝ์šฐ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋Š” ์‹คํ–‰ ์ˆ˜์ค€์—์„œ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ๊ฐ ์ž‘์—… ์‹คํ–‰์—๋Š” network-tag-2์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  12. ๋งŒ๋“ค๊ธฐ ๋˜๋Š” ์—…๋ฐ์ดํŠธ๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  13. ์ž‘์—…์ด VPC ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ์ž‘์—…์„ ํด๋ฆญํ•œ ๋‹ค์Œ ๊ตฌ์„ฑ ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ์™€ ์„œ๋ธŒ๋„ท์€ VPC ์นด๋“œ์— ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

    ์ด์ œ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์—์„œ ํ—ˆ์šฉํ•˜๋Š” ๋Œ€๋กœ Cloud Run ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ณ  VPC ๋„คํŠธ์›Œํฌ์˜ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋กœ ์ž‘์—…์˜ ์š”์ฒญ์„ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

gcloud

Google Cloud CLI์—์„œ ์ปค๋„ฅํ„ฐ ์—†์ด Cloud Run ์ž‘์—…์„ ๋งŒ๋“ค๋ ค๋ฉด ๋‹ค์Œ ์•ˆ๋‚ด๋ฅผ ๋”ฐ๋ฅด์„ธ์š”.

  1. gcloud ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์ตœ์‹  ๋ฒ„์ „์œผ๋กœ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    gcloud components update
  2. ํ”„๋กœ์ ํŠธ์— Compute Engine API๊ฐ€ ์‚ฌ์šฉ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

    gcloud services enable compute.googleapis.com
    
  3. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Cloud Run ์ž‘์—…์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    gcloud run jobs create JOB_NAME \
    --image=IMAGE_URL \
    --network=NETWORK \
    --subnet=SUBNET \
    --network-tags=NETWORK_TAG_NAMES \
    --vpc-egress=EGRESS_SETTING \
    --region=REGION

    ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • JOB_NAME: Cloud Run ์ž‘์—… ์ด๋ฆ„
    • IMAGE_URL: ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ์ฐธ์กฐ(์˜ˆ: us-docker.pkg.dev/cloudrun/container/job:latest)
    • (์„ ํƒ์‚ฌํ•ญ) NETWORK: VPC ๋„คํŠธ์›Œํฌ ์ด๋ฆ„. VPC ๋„คํŠธ์›Œํฌ ๋˜๋Š” ์„œ๋ธŒ๋„ท์„ ์ง€์ •ํ•˜๊ฑฐ๋‚˜ ๋‘˜ ๋‹ค ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ๋งŒ ์ง€์ •ํ•˜๋ฉด ์„œ๋ธŒ๋„ท์€ ๋„คํŠธ์›Œํฌ์™€ ๋™์ผํ•œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • (์„ ํƒ์‚ฌํ•ญ) SUBNET: ์„œ๋ธŒ๋„ท ์ด๋ฆ„. ์„œ๋ธŒ๋„ท์€ /26 ์ด์ƒ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง์ ‘ VPC ์ด๊ทธ๋ ˆ์Šค๋Š” IPv4 ๋ฒ”์œ„ RFC 1918, RFC 6598, ํด๋ž˜์Šค E๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ์„œ๋ธŒ๋„ท์—์„œ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค ๋˜๋Š” ์ž‘์—…์„ ๋ฐฐํฌํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์„œ๋ธŒ๋„ท์€ ๊ธฐ์กด ์ปค๋„ฅํ„ฐ์—์„œ ๊ณต์œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    • (์„ ํƒ์‚ฌํ•ญ) NETWORK_TAG_NAMES: ์ž‘์—…์— ์—ฐ๊ฒฐํ•  ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ์˜ ์ด๋ฆ„. ์ž‘์—…์˜ ๊ฒฝ์šฐ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋Š” ์‹คํ–‰ ์ˆ˜์ค€์—์„œ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ๊ฐ ์ž‘์—… ์‹คํ–‰์—๋Š” network-tag-2์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • EGRESS_SETTING: ์ด๊ทธ๋ ˆ์Šค ์„ค์ • ๊ฐ’
      • all-traffic: ๋ชจ๋“  ์•„์›ƒ๋ฐ”์šด๋“œ ํŠธ๋ž˜ํ”ฝ์„ VPC ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†ก
      • private-ranges-only: VPC ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋‚ด๋ถ€ ์ฃผ์†Œ๋กœ๋งŒ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†ก
    • REGION: ์ž‘์—…์˜ ๋ฆฌ์ „
  4. ์ž‘์—…์ด VPC ๋„คํŠธ์›Œํฌ์— ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    gcloud run jobs describe JOB_NAME \
      --region=REGION
      

    ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • JOB_NAME: ์ž‘์—… ์ด๋ฆ„
    • REGION: ์ด์ „ ๋‹จ๊ณ„์—์„œ ์ง€์ •ํ•œ ์ž‘์—…์˜ ๋ฆฌ์ „

    ์ถœ๋ ฅ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋„คํŠธ์›Œํฌ์™€ ์„œ๋ธŒ๋„ท์˜ ์ด๋ฆ„์ด ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

    VPC network:
      Network:       default
      Subnet:        default
    

์ด์ œ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์—์„œ ํ—ˆ์šฉํ•˜๋Š” ๋Œ€๋กœ Cloud Run ์ž‘์—…์„ ์‹คํ–‰ํ•˜๊ณ  VPC ๋„คํŠธ์›Œํฌ์˜ ๋ชจ๋“  ๋ฆฌ์†Œ์Šค๋กœ ์ž‘์—…์˜ ์š”์ฒญ์„ ์ „์†กํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

YAML

  1. ์ƒˆ ์ž‘์—…์„ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ์—๋Š” ์ด ๋‹จ๊ณ„๋ฅผ ๊ฑด๋„ˆ๋œ๋‹ˆ๋‹ค. ๊ธฐ์กด ์ž‘์—…์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒฝ์šฐ YAML ๊ตฌ์„ฑ์„ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค.

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. ๋‹ค์Œ ์†์„ฑ์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    apiVersion: run.googleapis.com/v1
      kind: Job
      metadata:
        name: JOB_NAME
        labels:
          cloud.googleapis.com/location: REGION
      spec:
        template:
          metadata:
            annotations:
              run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
              run.googleapis.com/vpc-access-egress: EGRESS_SETTING
          spec:
            containers:
            - image: IMAGE

    ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.

    • JOB_NAME: Cloud Run ์ž‘์—… ์ด๋ฆ„ ์ž‘์—… ์ด๋ฆ„์€ 49์ž ์ดํ•˜์—ฌ์•ผ ํ•˜๋ฉฐ ๋ฆฌ์ „ ๋ฐ ํ”„๋กœ์ ํŠธ๋ณ„๋กœ ๊ณ ์œ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • REGION: Cloud Run ์ž‘์—…์˜ ๋ฆฌ์ „. ์ด ๋ฆฌ์ „์€ ์„œ๋ธŒ๋„ท์˜ ๋ฆฌ์ „๊ณผ ์ผ์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
    • (์„ ํƒ์‚ฌํ•ญ) NETWORK: VPC ๋„คํŠธ์›Œํฌ ์ด๋ฆ„. VPC ๋„คํŠธ์›Œํฌ ๋˜๋Š” ์„œ๋ธŒ๋„ท, ๋˜๋Š” ๋‘˜ ๋‹ค๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ๋„คํŠธ์›Œํฌ๋งŒ ์ง€์ •ํ•˜๋ฉด ์„œ๋ธŒ๋„ท์€ ๋„คํŠธ์›Œํฌ์™€ ๋™์ผํ•œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • (์„ ํƒ์‚ฌํ•ญ) SUBNET: ์„œ๋ธŒ๋„ท ์ด๋ฆ„. ์„œ๋ธŒ๋„ท์€ /26 ์ด์ƒ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ง์ ‘ VPC ์ด๊ทธ๋ ˆ์Šค๋Š” IPv4 ๋ฒ”์œ„ RFC 1918, RFC 6598, ํด๋ž˜์Šค E๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ์„œ๋ธŒ๋„ท์—์„œ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค ๋˜๋Š” ์ž‘์—…์„ ๋ฐฐํฌํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์„œ๋ธŒ๋„ท์€ ๊ธฐ์กด ์ปค๋„ฅํ„ฐ์—์„œ ๊ณต์œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    • (์„ ํƒ์‚ฌํ•ญ) NETWORK_TAG_NAMES: ์ž‘์—…์— ์—ฐ๊ฒฐํ•  ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ์˜ ์ด๋ฆ„. ์ž‘์—…์˜ ๊ฒฝ์šฐ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๋Š” ์‹คํ–‰ ์ˆ˜์ค€์—์„œ ์ง€์ •๋ฉ๋‹ˆ๋‹ค. ๊ฐ ์ž‘์—… ์‹คํ–‰์—๋Š” network-tag-2์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ๋„คํŠธ์›Œํฌ ํƒœ๊ทธ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • EGRESS_SETTING: ์ด๊ทธ๋ ˆ์Šค ์„ค์ • ๊ฐ’
      • all-traffic: ๋ชจ๋“  ์•„์›ƒ๋ฐ”์šด๋“œ ํŠธ๋ž˜ํ”ฝ์„ VPC ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ์ „์†ก
      • private-ranges-only: VPC ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋‚ด๋ถ€ ์ฃผ์†Œ๋กœ๋งŒ ํŠธ๋ž˜ํ”ฝ์„ ์ „์†ก
    • IMAGE: ์ž‘์—… ์ปจํ…Œ์ด๋„ˆ ์ด๋ฏธ์ง€์˜ URL
  3. ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž‘์—…์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

    gcloud run jobs replace job.yaml

๋ฌธ์ œ ํ•ด๊ฒฐ

์„œ๋น„์Šค ๊ณ„์ • ๊ถŒํ•œ

์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค๋Š” Google Cloud ํ”„๋กœ์ ํŠธ์—์„œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ์„œ๋น„์Šค ์—์ด์ „ํŠธ ์„œ๋น„์Šค ๊ณ„์ •์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ์„œ๋น„์Šค ๊ณ„์ •์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ ํ˜•์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com

๊ธฐ๋ณธ์ ์œผ๋กœ ์ด ์„œ๋น„์Šค ๊ณ„์ •์—๋Š” ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ์„œ๋น„์Šค ์—์ด์ „ํŠธ ์—ญํ• (roles/vpcaccess.serviceAgent)์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ณ„์ •์˜ ๊ถŒํ•œ์„ ๋ณ€๊ฒฝํ•˜๋ฉด ์„œ๋ฒ„๋ฆฌ์Šค VPC ์•ก์„ธ์Šค ์ž‘์—…์ด ์‹คํŒจํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋„คํŠธ์›Œํฌ ์„ฑ๋Šฅ ์ €ํ•˜ ๋˜๋Š” ์œ ํœด CPU ์‚ฌ์šฉ๋ฅ ์ด ๋†’์Œ

์ˆ˜์ฒœ ๊ฐœ์˜ ์ธ์Šคํ„ด์Šค์— ๋‹จ์ผ ์ปค๋„ฅํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜๊ณ  ์œ ํœด CPU ์‚ฌ์šฉ๋ฅ ์ด ๋†’์•„์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ์—ฌ๋Ÿฌ ์ปค๋„ฅํ„ฐ ๊ฐ„์— ์„œ๋น„์Šค๋ฅผ ์ƒค๋”ฉํ•˜์„ธ์š”.

์ปค์Šคํ…€ MTU ๊ด€๋ จ ๋ฌธ์ œ

์ปค์Šคํ…€ MTU์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Cloud Run์˜ ๊ธฐ๋ณธ MTU ์„ค์ •์„ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ฅ˜

์„œ๋น„์Šค ๊ณ„์ •์— ์„œ๋น„์Šค ์—์ด์ „ํŠธ ์—ญํ•  ํ•„์š” ์˜ค๋ฅ˜

๋ฆฌ์†Œ์Šค ์„œ๋น„์Šค ์‚ฌ์šฉ๋Ÿ‰ ์ œํ•œ ์กฐ์ง ์ •์ฑ… ์ œ์•ฝ์กฐ๊ฑด์„ ์‚ฌ์šฉํ•˜์—ฌ Cloud Deployment Manager(deploymentmanager.googleapis.com)๋ฅผ ์ฐจ๋‹จํ•˜๋ฉด ๋‹ค์Œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Serverless VPC Access service account (service-<PROJECT_NUMBER>@gcp-sa-vpcaccess.iam.gserviceaccount.com) needs Serverless VPC Access Service Agent role in the project.

์กฐ์ง ์ •์ฑ…์„ ์„ค์ •ํ•˜์—ฌ ์ฐจ๋‹จ ๋ชฉ๋ก์—์„œ Deployment Manager๋ฅผ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ํ—ˆ์šฉ ๋ชฉ๋ก์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

์ปค๋„ฅํ„ฐ ์ƒ์„ฑ ์˜ค๋ฅ˜

์ปค๋„ฅํ„ฐ๋ฅผ ๋งŒ๋“œ๋Š” ์ค‘์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋‹ค์Œ์„ ์‹œ๋„ํ•ด ๋ณด์„ธ์š”.

  • VPC ๋„คํŠธ์›Œํฌ์˜ ๊ธฐ์กด IP ์ฃผ์†Œ ์˜ˆ์•ฝ๊ณผ ๊ฒน์น˜์ง€ ์•Š๋Š” RFC 1918 ๋‚ด๋ถ€ IP ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.
  • ID๊ฐ€ serverless-vpc-access-images์ธ ํ”„๋กœ์ ํŠธ์—์„œ Compute Engine VM ์ด๋ฏธ์ง€ ์‚ฌ์šฉ ๊ถŒํ•œ์„ ํ”„๋กœ์ ํŠธ์— ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์ด์— ๋”ฐ๋ผ ์กฐ์ง ์ •์ฑ…์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด๋ฏธ์ง€ ์•ก์„ธ์Šค ์ œ์•ฝ์กฐ๊ฑด ์„ค์ •์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†์Œ

์ปค๋„ฅํ„ฐ๋ฅผ ์ง€์ •ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ VPC ๋„คํŠธ์›Œํฌ์˜ ๋ฆฌ์†Œ์Šค์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ VPC ๋„คํŠธ์›Œํฌ์— ์ปค๋„ฅํ„ฐ์˜ IP ์ฃผ์†Œ ๋ฒ”์œ„์—์„œ ์ธ๊ทธ๋ ˆ์Šค๋ฅผ ๊ฑฐ๋ถ€ํ•˜๋Š” ์šฐ์„ ์ˆœ์œ„๊ฐ€ 1000 ์ดํ•˜์ธ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์ด ์—†๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๊ณต์œ  VPC ์„œ๋น„์Šค ํ”„๋กœ์ ํŠธ์—์„œ ์ปค๋„ฅํ„ฐ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์ด ์„œ๋ฒ„๋ฆฌ์Šค ์ธํ”„๋ผ์—์„œ ์ปค๋„ฅํ„ฐ๋กœ์˜ ์ธ๊ทธ๋ ˆ์Šค๋ฅผ ํ—ˆ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์—ฐ๊ฒฐ ๊ฑฐ๋ถ€ ์˜ค๋ฅ˜

๋„คํŠธ์›Œํฌ ์„ฑ๋Šฅ์„ ์ €ํ•˜์‹œํ‚ค๋Š” connection refused ๋˜๋Š” connection timeout ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์„œ๋ฒ„๋ฆฌ์Šค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ˜ธ์ถœ ์ „๋ฐ˜์— ๊ฑธ์ณ ๋ฌด์ œํ•œ์œผ๋กœ ์—ฐ๊ฒฐ์ด ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ธ์Šคํ„ด์Šค๋‹น ์‚ฌ์šฉ๋˜๋Š” ์ตœ๋Œ€ ์—ฐ๊ฒฐ ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋ ค๋ฉด ์—ฐ๊ฒฐ ํ’€์„ ์ง€์›ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ํ’€ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์˜ˆ์‹œ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ๊ด€๋ฆฌ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ ์˜ค๋ฅ˜

VPC ๋„คํŠธ์›Œํฌ ๋˜๋Š” ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ์‚ญ์ œํ•  ๋•Œ ๋‹ค์Œ๊ณผ ๋น„์Šทํ•œ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. The resource "aet-uscentral1-subnet--1-egrfw" was not found.

์ด ์˜ค๋ฅ˜ ๋ฐ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ VPC ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™ ๋ฌธ์„œ์˜ ๋ฆฌ์†Œ์Šค๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Œ ์˜ค๋ฅ˜๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

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