๊ฒŒ์‹œ๋œ ์„œ๋น„์Šค ๊ด€๋ฆฌ

์ด ํŽ˜์ด์ง€์—์„œ๋Š” ๊ฒŒ์‹œ๋œ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ์š”์ฒญ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•, ๊ฒŒ์‹œ๋œ ์„œ๋น„์Šค์˜ ์—ฐ๊ฒฐ ํ™˜๊ฒฝ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•, ์—ฐ๊ฒฐ ์กฐ์ •์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ์„œ๋น„์Šค ์—ฐ๊ฒฐ์—๋Š” ์—ฐ๊ฒฐ ์š”์ฒญ์ด ์ž๋™์œผ๋กœ ํ—ˆ์šฉ๋˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ง€์ •ํ•˜๋Š” ์—ฐ๊ฒฐ ํ™˜๊ฒฝ์„ค์ •์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—๋Š” ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ์˜ต์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

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

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

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

์—ญํ• 

๋‹ค์Œ IAM ์—ญํ• ์€ ์ด ๊ฐ€์ด๋“œ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ฒŒ์‹œ๋œ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ์š”์ฒญ ๊ด€๋ฆฌ

๋ช…์‹œ์  ์Šน์ธ์œผ๋กœ ์„œ๋น„์Šค๋ฅผ ๊ฒŒ์‹œํ•œ ๊ฒฝ์šฐ ์†Œ๋น„์ž ํ”„๋กœ์ ํŠธ๋‚˜ VPC ๋„คํŠธ์›Œํฌ์˜ ์—ฐ๊ฒฐ ์š”์ฒญ์„ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฑฐ๋ถ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”„๋กœ์ ํŠธ ๋˜๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํ—ˆ์šฉ ๋ชฉ๋ก๊ณผ ๊ฑฐ๋ถ€ ๋ชฉ๋ก์— ๋ชจ๋‘ ์ถ”๊ฐ€ํ•˜๋ฉด ํ•ด๋‹น ํ”„๋กœ์ ํŠธ๋‚˜ ๋„คํŠธ์›Œํฌ์˜ ์—ฐ๊ฒฐ ์š”์ฒญ์ด ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค.

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

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

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

์ฝ˜์†”

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

    Private Service Connect๋กœ ์ด๋™

  2. ๊ฒŒ์‹œ๋œ ์„œ๋น„์Šค ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ๊ด€๋ฆฌํ•  ์„œ๋น„์Šค๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ์—ฐ๊ฒฐ๋œ ํ”„๋กœ์ ํŠธ ์„น์…˜์— ์ด ์„œ๋น„์Šค์— ์—ฐ๊ฒฐ์„ ์‹œ๋„ํ•œ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœ์ ํŠธ ์˜†์— ์žˆ๋Š” ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒํ•˜๊ณ  ํ”„๋กœ์ ํŠธ ์ˆ˜๋ฝ ๋˜๋Š” ํ”„๋กœ์ ํŠธ ๊ฑฐ๋ถ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

  1. ์ˆ˜์ •ํ•˜๋ ค๋Š” ์„œ๋น„์Šค ์—ฐ๊ฒฐ์„ ์„ค๋ช…ํ•˜๋ ค๋ฉด service-attachments describe ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute service-attachments describe \
        ATTACHMENT_NAME --region=REGION
    

    ์ถœ๋ ฅ์€ ๋‹ค์Œ ์˜ˆ์‹œ์™€ ๋น„์Šทํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๊ธฐ ์ค‘์ธ ์†Œ๋น„์ž ์—ฐ๊ฒฐ์ด ์žˆ์œผ๋ฉด ์ƒํƒœ๊ฐ€ PENDING์œผ๋กœ ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

    ์ด ์ถœ๋ ฅ ์˜ˆ์‹œ์—์„œ CONSUMER_PROJECT_1 ํ”„๋กœ์ ํŠธ๋Š” ํ—ˆ์šฉ ๋ชฉ๋ก์— ์žˆ์œผ๋ฏ€๋กœ ENDPOINT_1์ด ์ˆ˜๋ฝ๋˜๊ณ  ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. CONSUMER_PROJECT_2 ํ”„๋กœ์ ํŠธ๋Š” ์ˆ˜๋ฝ ๋ชฉ๋ก์— ์—†์œผ๋ฏ€๋กœ ENDPOINT_2๋Š” ๋Œ€๊ธฐ ์ค‘์ž…๋‹ˆ๋‹ค. CONSUMER_PROJECT_2๊ฐ€ ํ—ˆ์šฉ ๋ชฉ๋ก์— ์ถ”๊ฐ€๋˜๋ฉด ENDPOINT_2์˜ ์ƒํƒœ๊ฐ€ ACCEPTED๋กœ ๋ณ€๊ฒฝ๋˜๊ณ  ์—”๋“œํฌ์ธํŠธ๊ฐ€ ์„œ๋น„์Šค์— ์—ฐ๊ฒฐ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    connectedEndpoints:
    - endpoint: https://www.googleapis.com/compute/v1/projects/CONSUMER_PROJECT_1/regions/REGION_1/forwardingRules/ENDPOINT_1
      pscConnectionId: 'ENDPOINT_1_ID'
      status: ACCEPTED
    - endpoint: https://www.googleapis.com/compute/v1/projects/CONSUMER_PROJECT_2/regions/REGION_2/forwardingRules/ENDPOINT_2
      pscConnectionId: 'ENDPOINT_2_ID'
      status: PENDING
    connectionPreference: ACCEPT_MANUAL
    consumerAcceptLists:
    - connectionLimit: LIMIT_1
      projectIdOrNum: CONSUMER_PROJECT_1
    creationTimestamp: 'TIMESTAMP'
    description: 'DESCRIPTION'
    enableProxyProtocol: false
    fingerprint: FINGERPRINT
    id: 'ID'
    kind: compute#serviceAttachment
    name: NAME
    natSubnets:
    - https://www.googleapis.com/compute/v1/projects/PRODUCER_PROJECT/regions/REGION/subnetworks/PSC_SUBNET
    pscServiceAttachmentId:
      high: 'PSC_ATTACH_ID_HIGH'
      low: 'PSC_ATTACH_ID_LOW'
    region: https://www.googleapis.com/compute/v1/projects/PRODUCER_PROJECT/regions/REGION
    selfLink: https://www.googleapis.com/compute/v1/projects/projects/PRODUCER_PROJECT/regions/REGION/serviceAttachments/ATTACHMENT_NAME
    targetService: https://www.googleapis.com/compute/v1/projects/PRODUCER_PROJECT/regions/REGION/forwardingRules/PRODUCER_FWD_RULE
    
  2. ์†Œ๋น„์ž ํ”„๋กœ์ ํŠธ ๋˜๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฑฐ๋ถ€ํ•˜๋ ค๋ฉด service-attachments update ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    --consumer-accept-list, --consumer-reject-list ๋˜๋Š” ๋‘˜ ๋‹ค๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. --consumer-accept-list ๋ฐ --consumer-reject-list์— ๊ฐ’์„ ์—ฌ๋Ÿฌ ๊ฐœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. VPC ํ”„๋กœ์ ํŠธ๋‚˜ ๋„คํŠธ์›Œํฌ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ”„๋กœ์ ํŠธ์™€ ๋„คํŠธ์›Œํฌ๋ฅผ ํ˜ผํ•ฉํ•˜์—ฌ ํฌํ•จํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

    gcloud compute service-attachments update ATTACHMENT_NAME \
        --region=REGION \
        --consumer-accept-list=ACCEPTED_PROJECT_OR_NETWORK_1=LIMIT_1,ACCEPTED_PROJECT_OR_NETWORK_2=LIMIT_2 \
        --consumer-reject-list=REJECTED_PROJECT_OR_NETWORK_1,REJECTED_PROJECT_OR_NETWORK_2
    

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

    • ATTACHMENT_NAME: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ด๋ฆ„

    • REGION: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์ด ์žˆ๋Š” ๋ฆฌ์ „

    • ACCEPTED_PROJECT_OR_NETWORK_1 ๋ฐ ACCEPTED_PROJECT_OR_NETWORK_2: ํ—ˆ์šฉํ•  ํ”„๋กœ์ ํŠธ ID, ํ”„๋กœ์ ํŠธ ์ด๋ฆ„ ๋˜๋Š” ๋„คํŠธ์›Œํฌ URL. --consumer-accept-list๋Š” ์„ ํƒ์‚ฌํ•ญ์ด๋ฉฐ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœ์ ํŠธ ๋˜๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‘ ์œ ํ˜•์„ ํ˜ผํ•ฉํ•˜์—ฌ ํฌํ•จํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

    • LIMIT_1 ๋ฐ LIMIT_2: ํ”„๋กœ์ ํŠธ ๋˜๋Š” ๋„คํŠธ์›Œํฌ์˜ ์—ฐ๊ฒฐ ํ•œ๋„์ž…๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ํ•œ๋„๋Š” ์ด ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์†Œ๋น„์ž ์—”๋“œํฌ์ธํŠธ์˜ ์ˆ˜์ž…๋‹ˆ๋‹ค.

    • REJECTED_PROJECT_OR_NETWORK_1 ๋ฐ REJECTED_PROJECT_OR_NETWORK_2: ๊ฑฐ๋ถ€ํ•  ํ”„๋กœ์ ํŠธ ID, ํ”„๋กœ์ ํŠธ ์ด๋ฆ„ ๋˜๋Š” ๋„คํŠธ์›Œํฌ URL. --consumer-reject-list๋Š” ์„ ํƒ์‚ฌํ•ญ์ด๋ฉฐ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœ์ ํŠธ ๋˜๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‘ ์œ ํ˜•์„ ํ˜ผํ•ฉํ•˜์—ฌ ํฌํ•จํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

API

  1. ์ˆ˜์ •ํ•˜๋ ค๋Š” ์„œ๋น„์Šค ์—ฐ๊ฒฐ์„ ์„ค๋ช…ํ•˜๋ ค๋ฉด serviceAttachments.get ๋ฉ”์„œ๋“œ์— ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

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

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
    

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

    • PROJECT_ID: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ํ”„๋กœ์ ํŠธ
    • REGION: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ๋ฆฌ์ „
    • ATTACHMENT_NAME: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ด๋ฆ„

    ๋Œ€๊ธฐ ์ค‘์ธ ์†Œ๋น„์ž ์—ฐ๊ฒฐ์ด ์žˆ์œผ๋ฉด ์ƒํƒœ๊ฐ€ PENDING์œผ๋กœ ๋‚˜์—ด๋ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉํ•  fingerprint ๊ฐ’์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  2. ์†Œ๋น„์ž ํ”„๋กœ์ ํŠธ ๋˜๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฑฐ๋ถ€ํ•˜๋ ค๋ฉด serviceAttachments.patch ๋ฉ”์„œ๋“œ์— ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

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

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

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

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
      

      JSON ์š”์ฒญ ๋ณธ๋ฌธ:

      {
        "consumerAcceptLists": [
          {
            "projectIdOrNum": "ACCEPTED_PROJECT_1",
            "connectionLimit": "LIMIT_1"
          },
          {
            "projectIdOrNum": "ACCEPTED_PROJECT_2",
            "connectionLimit": "LIMIT_2"
          }
        ],
        "consumerRejectLists": [
          "REJECTED_PROJECT_1",
          "REJECTED_PROJECT_2"
        ],
        "fingerprint" : "FINGERPRINT"
      }
      

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

      • PROJECT_ID: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ํ”„๋กœ์ ํŠธ
      • REGION: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ๋ฆฌ์ „
      • ATTACHMENT_NAME: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ด๋ฆ„
      • ACCEPTED_PROJECT_1 ๋ฐ ACCEPTED_PROJECT_2: ํ—ˆ์šฉํ•  ํ”„๋กœ์ ํŠธ ID ๋˜๋Š” ํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ. consumerAcceptList๋Š” ์„ ํƒ์‚ฌํ•ญ์ด๋ฉฐ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • LIMIT_1 ๋ฐ LIMIT_2: ํ”„๋กœ์ ํŠธ์˜ ์—ฐ๊ฒฐ ํ•œ๋„. ์—ฐ๊ฒฐ ํ•œ๋„๋Š” ์ด ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์†Œ๋น„์ž ์—”๋“œํฌ์ธํŠธ์˜ ์ˆ˜์ž…๋‹ˆ๋‹ค.
      • REJECTED_PROJECT_1 ๋ฐ REJECTED_PROJECT_2: ๊ฑฐ๋ถ€ํ•  ํ”„๋กœ์ ํŠธ ID ๋˜๋Š” ํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ. consumerRejectList๋Š” ์„ ํƒ์‚ฌํ•ญ์ด๋ฉฐ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • FINGERPRINT: ์ด์ „ ๋‹จ๊ณ„์—์„œ ์ฐพ์€ ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ตœ์‹  ์ง€๋ฌธ
    • VPC ๋„คํŠธ์›Œํฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์†Œ๋น„์ž๋ฅผ ํ—ˆ์šฉํ•˜๊ฑฐ๋‚˜ ๊ฑฐ๋ถ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

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

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
      

      JSON ์š”์ฒญ ๋ณธ๋ฌธ:

      {
        "consumerAcceptLists": [
          {
            "networkUrl": "projects/ACCEPTED_PROJECT_ID_1/global/network/ACCEPTED_NETWORK_1",
            "connectionLimit": "LIMIT_1"
          },
          {
            "networkUrl": "projects/ACCEPTED_PROJECT_ID_2/global/network/ACCEPTED_NETWORK_2",
            "connectionLimit": "LIMIT_2"
          }
        ],
        "consumerRejectLists": [
          "projects/REJECTED_PROJECT_ID_1/global/networks/REJECTED_NETWORK_1",
          "projects/REJECTED_PROJECT_ID_2/global/network/REJECTED_NETWORK_2"
        ],
        "fingerprint": "FINGERPRINT"
      }
      

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

      • ACCEPTED_PROJECT_ID_1 ๋ฐ ACCEPTED_PROJECT_ID_2: ํ—ˆ์šฉํ•˜๋ ค๋Š” ๋„คํŠธ์›Œํฌ์˜ ์ƒ์œ„ ํ”„๋กœ์ ํŠธ ID. consumerAcceptLists๋Š” ์„ ํƒ์‚ฌํ•ญ์ด๋ฉฐ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ACCEPTED_NETWORK_1 ๋ฐ ACCEPTED_NETWORK_2: ํ—ˆ์šฉํ•  ๋„คํŠธ์›Œํฌ์˜ ์ด๋ฆ„
      • LIMIT_1 ๋ฐ LIMIT_2: ๋„คํŠธ์›Œํฌ์˜ ์—ฐ๊ฒฐ ํ•œ๋„. ์—ฐ๊ฒฐ ํ•œ๋„๋Š” ์ด ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์†Œ๋น„์ž ์—”๋“œํฌ์ธํŠธ์˜ ์ˆ˜์ž…๋‹ˆ๋‹ค.
      • REJECTED_PROJECT_ID_1 ๋ฐ REJECTED_PROJECT_ID_2: ๊ฑฐ๋ถ€ํ•˜๋ ค๋Š” ๋„คํŠธ์›Œํฌ์˜ ์ƒ์œ„ ํ”„๋กœ์ ํŠธ ID์ž…๋‹ˆ๋‹ค. consumerRejectLists๋Š” ์„ ํƒ์‚ฌํ•ญ์ด๋ฉฐ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • REJECTED_NETWORK_1 ๋ฐ REJECTED_NETWORK_2: ๊ฑฐ๋ถ€ํ•˜๋ ค๋Š” ๋„คํŠธ์›Œํฌ์˜ ์ด๋ฆ„

๊ฒŒ์‹œ๋œ ์„œ๋น„์Šค์˜ ์—ฐ๊ฒฐ ํ™˜๊ฒฝ์„ค์ • ๋ณ€๊ฒฝ

๊ฒŒ์‹œ๋œ ์„œ๋น„์Šค์˜ ์ž๋™ ๋ฐ ๋ช…์‹œ์ ์ธ ํ”„๋กœ์ ํŠธ ํ—ˆ์šฉ ๊ฐ„์— ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

์ฝ˜์†”

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

    Private Service Connect๋กœ ์ด๋™

  2. ๊ฒŒ์‹œ๋œ ์„œ๋น„์Šค ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์—…๋ฐ์ดํŠธํ•  ์„œ๋น„์Šค๋ฅผ ํด๋ฆญํ•œ ๋‹ค์Œ ์„œ๋น„์Šค ์„ธ๋ถ€์ •๋ณด ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ์›ํ•˜๋Š” ์—ฐ๊ฒฐ ํ™˜๊ฒฝ์„ค์ •์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

    • ์„ ํƒํ•œ ํ”„๋กœ์ ํŠธ์˜ ์—ฐ๊ฒฐ ํ—ˆ์šฉ
    • ์„ ํƒํ•œ ๋„คํŠธ์›Œํฌ์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ ํ—ˆ์šฉ
    • ๋ชจ๋“  ์—ฐ๊ฒฐ์„ ์ž๋™์œผ๋กœ ํ—ˆ์šฉ
  5. ์„ ํƒ์‚ฌํ•ญ: ์„ ํƒํ•œ ํ”„๋กœ์ ํŠธ์˜ ์—ฐ๊ฒฐ ํ—ˆ์šฉ์œผ๋กœ ์ „ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ ํ—ˆ์šฉํ•  ํ”„๋กœ์ ํŠธ์˜ ์„ธ๋ถ€์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ฑฐ๋‚˜ ๋‚˜์ค‘์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

    1. ํ—ˆ์šฉ๋œ ๋„คํŠธ์›Œํฌ ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    2. ํ”„๋กœ์ ํŠธ, ๋„คํŠธ์›Œํฌ ๋ฐ ์—ฐ๊ฒฐ ํ•œ๋„๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
  7. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

  • ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์—ฐ๊ฒฐ ํ™˜๊ฒฝ์„ค์ •์„ ACCEPT_AUTOMATIC์—์„œ ACCEPT_MANUAL๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด service-attachments update ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    --consumer-accept-list ๋ฐ --consumer-reject-list๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ์ œ์–ดํ•ฉ๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ ํ™˜๊ฒฝ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ๋•Œ ํ—ˆ์šฉ ๋ฐ ๊ฑฐ๋ถ€ ๋ชฉ๋ก์„ ๊ตฌ์„ฑํ•˜๊ฑฐ๋‚˜ ๋‚˜์ค‘์— ๋ชฉ๋ก์„ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    gcloud compute service-attachments update ATTACHMENT_NAME \
        --region=REGION \
        --connection-preference=ACCEPT_MANUAL \
        [ --consumer-accept-list=ACCEPTED_PROJECT_OR_NETWORK_1=LIMIT_1,ACCEPTED_PROJECT_OR_NETWORK_2=LIMIT_2] \
        [ --consumer-reject-list=REJECTED_PROJECT_OR_NETWORK_1,REJECTED_PROJECT_OR_NETWORK_2 ]
    

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

    • ATTACHMENT_NAME: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ด๋ฆ„

    • REGION: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์ด ์žˆ๋Š” ๋ฆฌ์ „

    • ACCEPTED_PROJECT_OR_NETWORK_1 ๋ฐ ACCEPTED_PROJECT_OR_NETWORK_2: ํ—ˆ์šฉํ•  ํ”„๋กœ์ ํŠธ ID, ํ”„๋กœ์ ํŠธ ์ด๋ฆ„ ๋˜๋Š” ๋„คํŠธ์›Œํฌ URL. --consumer-accept-list๋Š” ์„ ํƒ์‚ฌํ•ญ์ด๋ฉฐ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœ์ ํŠธ ๋˜๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‘ ์œ ํ˜•์„ ํ˜ผํ•ฉํ•˜์—ฌ ํฌํ•จํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

    • LIMIT_1 ๋ฐ LIMIT_2: ํ”„๋กœ์ ํŠธ์˜ ์—ฐ๊ฒฐ ํ•œ๋„. ์—ฐ๊ฒฐ ํ•œ๋„๋Š” ์ด ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์†Œ๋น„์ž ์—”๋“œํฌ์ธํŠธ์˜ ์ˆ˜์ž…๋‹ˆ๋‹ค.

    • REJECTED_PROJECT_OR_NETWORK_1 ๋ฐ REJECTED_PROJECT_OR_NETWORK_2: ๊ฑฐ๋ถ€ํ•  ํ”„๋กœ์ ํŠธ ID, ํ”„๋กœ์ ํŠธ ์ด๋ฆ„ ๋˜๋Š” ๋„คํŠธ์›Œํฌ URL. --consumer-reject-list๋Š” ์„ ํƒ์‚ฌํ•ญ์ด๋ฉฐ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœ์ ํŠธ ๋˜๋Š” ๋„คํŠธ์›Œํฌ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋‘ ์œ ํ˜•์„ ํ˜ผํ•ฉํ•˜์—ฌ ํฌํ•จํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค.

  • ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์—ฐ๊ฒฐ ํ™˜๊ฒฝ์„ค์ •์„ ACCEPT_MANUAL์—์„œ ACCEPT_AUTOMATIC์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    ํ—ˆ์šฉ ๋ชฉ๋ก ๋˜๋Š” ๊ฑฐ๋ถ€ ๋ชฉ๋ก์— ๊ฐ’์ด ์žˆ์œผ๋ฉด ์—ฐ๊ฒฐ ํ™˜๊ฒฝ์„ค์ •์„ ๋ณ€๊ฒฝํ•  ๋•Œ ๊ฐ’์„ ๋นˆ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค("" ์ฐธ์กฐ).

    gcloud compute service-attachments update ATTACHMENT_NAME \
        --region=REGION \
        --connection-preference=ACCEPT_AUTOMATIC \
        --consumer-accept-list="" \
        --consumer-reject-list=""
    

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

    • ATTACHMENT_NAME: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ด๋ฆ„

    • REGION: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์ด ์žˆ๋Š” ๋ฆฌ์ „

API

  1. ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ fingerprint๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด serviceAttachments.get ๋ฉ”์„œ๋“œ์— ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

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

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
    

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

    • PROJECT_ID: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ํ”„๋กœ์ ํŠธ
    • REGION: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ๋ฆฌ์ „
    • ATTACHMENT_NAME: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ด๋ฆ„

    ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉํ•  fingerprint ๊ฐ’์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  2. ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์—ฐ๊ฒฐ ํ™˜๊ฒฝ์„ค์ •์„ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด serviceAttachments.patch ๋ฉ”์„œ๋“œ์— ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

    • ์—ฐ๊ฒฐ ํ™˜๊ฒฝ์„ค์ •์„ ACCEPT_AUTOMATIC์—์„œ ACCEPT_MANUAL๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  ํ”„๋กœ์ ํŠธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์†Œ๋น„์ž ์ˆ˜๋ฝ ๋ฐ ๊ฑฐ๋ถ€ ๋ชฉ๋ก์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋‹ค์Œ ์š”์ฒญ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

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

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
      

      JSON ์š”์ฒญ ๋ณธ๋ฌธ:

      {
        "connectionPreference": "ACCEPT_MANUAL",
        "consumerAcceptLists": [
          {
            "projectIdOrNum": "ACCEPTED_PROJECT_1"
            "connectionLimit": "LIMIT_1",
          },
          {
            "projectIdOrNum": "ACCEPTED_PROJECT_2"
            "connectionLimit": "LIMIT_2",
          }
        ],
        "consumerRejectLists": [
          "REJECTED_PROJECT_1",
          "REJECTED_PROJECT_2",
        ],
        "fingerprint" : "FINGERPRINT"
      }
      

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

      • PROJECT_ID: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ํ”„๋กœ์ ํŠธ
      • REGION: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ๋ฆฌ์ „
      • ATTACHMENT_NAME: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ด๋ฆ„
      • ACCEPTED_PROJECT_1 ๋ฐ ACCEPTED_PROJECT_2: ํ—ˆ์šฉํ•  ํ”„๋กœ์ ํŠธ ID ๋˜๋Š” ํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ. consumerAcceptList๋Š” ์„ ํƒ์‚ฌํ•ญ์ด๋ฉฐ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • LIMIT_1 ๋ฐ LIMIT_2: ํ”„๋กœ์ ํŠธ์˜ ์—ฐ๊ฒฐ ํ•œ๋„. ์—ฐ๊ฒฐ ํ•œ๋„๋Š” ์ด ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์†Œ๋น„์ž ์—”๋“œํฌ์ธํŠธ์˜ ์ˆ˜์ž…๋‹ˆ๋‹ค.
      • REJECTED_PROJECT_1 ๋ฐ REJECTED_PROJECT_2: ๊ฑฐ๋ถ€ํ•  ํ”„๋กœ์ ํŠธ ID ๋˜๋Š” ํ”„๋กœ์ ํŠธ ๋ฒˆํ˜ธ. consumerRejectList๋Š” ์„ ํƒ์‚ฌํ•ญ์ด๋ฉฐ ํ•˜๋‚˜ ์ด์ƒ์˜ ํ”„๋กœ์ ํŠธ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • FINGERPRINT: 1๋‹จ๊ณ„์—์„œ ์ฐพ์€ ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ตœ์‹  ์ง€๋ฌธ
    • ์—ฐ๊ฒฐ ํ™˜๊ฒฝ์„ค์ •์„ ACCEPT_AUTOMATIC์—์„œ ACCEPT_MANUAL๋กœ ๋ณ€๊ฒฝํ•˜๊ณ  VPC ๋„คํŠธ์›Œํฌ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์†Œ๋น„์ž ์ˆ˜๋ฝ ๋ฐ ๊ฑฐ๋ถ€ ๋ชฉ๋ก์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด ๋‹ค์Œ ์š”์ฒญ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

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

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
      

      JSON ์š”์ฒญ ๋ณธ๋ฌธ:

      {
        "connectionPreference": "ACCEPT_MANUAL",
        "consumerAcceptLists": [
          {
            "networkUrl": "projects/ACCEPTED_PROJECT_ID_1/global/networks/ACCEPTED_NETWORK_1",
            "connectionLimit": "LIMIT_1"
          },
          {
            "networkUrl": "projects/ACCEPTED_PROJECT_ID_2/global/networks/ACCEPTED_NETWORK_2",
            "connectionLimit": "LIMIT_2"
          }
        ],
        "consumerRejectLists": [
          "projects/REJECTED_PROJECT_ID_1/global/networks/REJECTED_NETWORK_1",
          "projects/REJECTED_PROJECT_ID_2/global/network/REJECTED_NETWORK_2"
        ],
        "fingerprint" : "FINGERPRINT"
      }
      

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

      • ACCEPTED_PROJECT_ID_1 ๋ฐ ACCEPTED_PROJECT_ID_2: ํ—ˆ์šฉํ•˜๋ ค๋Š” ๋„คํŠธ์›Œํฌ์˜ ์ƒ์œ„ ํ”„๋กœ์ ํŠธ ID. consumerAcceptLists๋Š” ์„ ํƒ์‚ฌํ•ญ์ด๋ฉฐ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • ACCEPTED_NETWORK_1 ๋ฐ ACCEPTED_NETWORK_2: ํ—ˆ์šฉํ•  ๋„คํŠธ์›Œํฌ์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค.
      • LIMIT_1 ๋ฐ LIMIT_2: ๋„คํŠธ์›Œํฌ์˜ ์—ฐ๊ฒฐ ํ•œ๋„. ์—ฐ๊ฒฐ ํ•œ๋„๋Š” ์ด ์„œ๋น„์Šค์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ์†Œ๋น„์ž ์—”๋“œํฌ์ธํŠธ์˜ ์ˆ˜์ž…๋‹ˆ๋‹ค.
      • REJECTED_PROJECT_ID_1 ๋ฐ REJECTED_PROJECT_ID_2: ๊ฑฐ๋ถ€ํ•˜๋ ค๋Š” ๋„คํŠธ์›Œํฌ์˜ ์ƒ์œ„ ํ”„๋กœ์ ํŠธ ID์ž…๋‹ˆ๋‹ค. consumerRejectLists๋Š” ์„ ํƒ์‚ฌํ•ญ์ด๋ฉฐ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋„คํŠธ์›Œํฌ๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
      • REJECTED_NETWORK_1 ๋ฐ REJECTED_NETWORK_2: ๊ฑฐ๋ถ€ํ•˜๋ ค๋Š” ๋„คํŠธ์›Œํฌ์˜ ์ด๋ฆ„
      • FINGERPRINT: 1๋‹จ๊ณ„์—์„œ ์ฐพ์€ ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ตœ์‹  ์ง€๋ฌธ
  • ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์—ฐ๊ฒฐ ํ™˜๊ฒฝ์„ค์ •์„ ACCEPT_MANUAL์—์„œ ACCEPT_AUTOMATIC์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ๋‹ค์Œ ์š”์ฒญ์„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.

    consumerAcceptLists ๋˜๋Š” consumerRejectLists ํ•„๋“œ์—์„œ ์†Œ๋น„์ž๋ฅผ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ ์—ฐ๊ฒฐ ํ™˜๊ฒฝ์„ค์ •์„ ACCEPT_AUTOMATIC์œผ๋กœ ๋ณ€๊ฒฝํ•  ๋•Œ ๊ฐ’์„ ๋นˆ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

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

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
    

    JSON ์š”์ฒญ ๋ณธ๋ฌธ:

    {
      "connectionPreference": "ACCEPT_AUTOMATIC",
      "consumerAcceptLists": [ ],
      "consumerRejectLists": [ ],
      "fingerprint" : "FINGERPRINT"
    }
    

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

    • PROJECT_ID: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ํ”„๋กœ์ ํŠธ

    • REGION: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ๋ฆฌ์ „

    • ATTACHMENT_NAME: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ด๋ฆ„

    • FINGERPRINT: 1๋‹จ๊ณ„์—์„œ ์ฐพ์€ ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ตœ์‹  ์ง€๋ฌธ

์—ฐ๊ฒฐ ์กฐ์ • ๊ตฌ์„ฑ

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

์ฝ˜์†”

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

    Private Service Connect๋กœ ์ด๋™

  2. ๊ฒŒ์‹œ๋œ ์„œ๋น„์Šค ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์—…๋ฐ์ดํŠธํ•  ์„œ๋น„์Šค๋ฅผ ํด๋ฆญํ•œ ๋‹ค์Œ ์„œ๋น„์Šค ์„ธ๋ถ€์ •๋ณด ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ์—ฐ๊ฒฐ ์กฐ์ • ์‚ฌ์šฉ ์„ค์ • ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์„ ํƒ ํ•ด์ œํ•œ ๋‹ค์Œ ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

  • ์—ฐ๊ฒฐ ์กฐ์ •์„ ์‚ฌ์šฉ ์„ค์ •ํ•˜๋ ค๋ฉด service-attachments update ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute service-attachments update ATTACHMENT_NAME \
        --region=REGION \
        --reconcile-connections
    

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

    • ATTACHMENT_NAME: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ด๋ฆ„
    • REGION: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ๋ฆฌ์ „
  • ์—ฐ๊ฒฐ ์กฐ์ •์„ ์‚ฌ์šฉ ์ค‘์ง€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

    gcloud compute service-attachments update ATTACHMENT_NAME \
        --region=REGION \
        --no-reconcile-connections
    

API

  1. ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ fingerprint๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด serviceAttachments.get ๋ฉ”์„œ๋“œ์— ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

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

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
    

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

    • PROJECT_ID: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ํ”„๋กœ์ ํŠธ
    • REGION: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ๋ฆฌ์ „
    • ATTACHMENT_NAME: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ด๋ฆ„

    ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉํ•  fingerprint ๊ฐ’์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  2. serviceAttachments.patch ๋ฉ”์„œ๋“œ์— ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

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

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
    

    JSON ์š”์ฒญ ๋ณธ๋ฌธ:

    {
      "reconcileConnections": RECONCILIATION,
      "fingerprint": "FINGERPRINT"
    }
    

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

    • PROJECT_ID: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ํ”„๋กœ์ ํŠธ
    • REGION: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ๋ฆฌ์ „
    • ATTACHMENT_NAME: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ด๋ฆ„
    • RECONCILIATION: ์—ฐ๊ฒฐ ์กฐ์ •์„ ์‚ฌ์šฉ ์„ค์ •ํ• ์ง€ ์—ฌ๋ถ€. ์˜ต์…˜์€ true ๋˜๋Š” false์ž…๋‹ˆ๋‹ค.
    • FINGERPRINT: ์ด์ „ ๋‹จ๊ณ„์—์„œ ์ฐพ์€ ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ตœ์‹  ์ง€๋ฌธ

๊ฒŒ์‹œ๋œ ์„œ๋น„์Šค์—์„œ ์„œ๋ธŒ๋„ท ์ถ”๊ฐ€ ๋˜๋Š” ์‚ญ์ œ

๊ฒŒ์‹œ๋œ ์„œ๋น„์Šค๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ Private Service Connect ์„œ๋ธŒ๋„ท์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๊ธฐ์กด ์„œ๋น„์Šค์— ๋” ๋งŽ์€ IP ์ฃผ์†Œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ์†Œ๋ฅผ ๋” ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ ์ค‘ ํ•˜๋‚˜๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฒŒ์‹œ๋œ ์„œ๋น„์Šค๋ฅผ ์ˆ˜์ •ํ•˜์—ฌ Private Service Connect ์„œ๋ธŒ๋„ท์„ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Private Service Connect์— ๋Œ€ํ•ด SNAT๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋ธŒ๋„ท์˜ IP ์ฃผ์†Œ๊ฐ€ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์œผ๋ฉด ์„œ๋ธŒ๋„ท์„ ์‚ญ์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์„œ๋ธŒ๋„ท ๊ตฌ์„ฑ์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒฝ์šฐ ์ƒˆ ์„œ๋ธŒ๋„ท์˜ ์š”์ฒญ์ด ๋ฐฑ์—”๋“œ VM์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฐฉํ™”๋ฒฝ ๊ทœ์น™์„ ์—…๋ฐ์ดํŠธํ•ฉ๋‹ˆ๋‹ค.

์ฝ˜์†”

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

    Private Service Connect๋กœ ์ด๋™

  2. ๊ฒŒ์‹œ๋œ ์„œ๋น„์Šค ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์—…๋ฐ์ดํŠธํ•  ์„œ๋น„์Šค๋ฅผ ํด๋ฆญํ•œ ๋‹ค์Œ ์„œ๋น„์Šค ์„ธ๋ถ€์ •๋ณด ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ์ด ์„œ๋น„์Šค์— ์‚ฌ์šฉ๋˜๋Š” ์„œ๋ธŒ๋„ท์„ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

    ์ƒˆ ์„œ๋ธŒ๋„ท์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„œ๋ธŒ๋„ท์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    1. ์ƒˆ ์„œ๋ธŒ๋„ท ์˜ˆ์•ฝ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
    2. ์„œ๋ธŒ๋„ท์˜ ์ด๋ฆ„๊ณผ ์„ค๋ช…(์„ ํƒ์‚ฌํ•ญ)์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    3. ์„œ๋ธŒ๋„ท์˜ ๋ฆฌ์ „์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.
    4. ์„œ๋ธŒ๋„ท์— ์‚ฌ์šฉํ•  IP ๋ฒ”์œ„๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์ถ”๊ฐ€๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  5. ์ €์žฅ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

gcloud

์ด ์„œ๋น„์Šค ์—ฐ๊ฒฐ์— ์‚ฌ์šฉ๋˜๋Š” Private Service Connect ์„œ๋ธŒ๋„ท์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด service-attachments update ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud compute service-attachments update ATTACHMENT_NAME \
    --region=REGION \
    --nat-subnets=PSC_SUBNET_LIST

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

  • ATTACHMENT_NAME: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ด๋ฆ„

  • REGION: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์ด ์žˆ๋Š” ๋ฆฌ์ „

  • PSC_SUBNET_LIST: ์ด ์„œ๋น„์Šค ์—ฐ๊ฒฐ์—์„œ ์‚ฌ์šฉํ•  ํ•˜๋‚˜ ์ด์ƒ์˜ ์„œ๋ธŒ๋„ท์˜ ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„๋œ ๋ชฉ๋ก์ž…๋‹ˆ๋‹ค.

API

  1. ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ fingerprint๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด serviceAttachments.get ๋ฉ”์„œ๋“œ์— ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

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

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
    

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

    • PROJECT_ID: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ํ”„๋กœ์ ํŠธ
    • REGION: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ๋ฆฌ์ „
    • ATTACHMENT_NAME: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ด๋ฆ„

    ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉํ•  fingerprint ๊ฐ’์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  2. ์ด ์„œ๋น„์Šค ์—ฐ๊ฒฐ์— ์‚ฌ์šฉ๋˜๋Š” Private Service Connect ์„œ๋ธŒ๋„ท์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๋ฉด serviceAttachments.patch ๋ฉ”์„œ๋“œ์— ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

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

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
    

    JSON ์š”์ฒญ ๋ณธ๋ฌธ:

    {
      "natSubnets": [
      "PSC_SUBNET1_URI",
      "PSC_SUBNET2_URI"
      ],
      "fingerprint": "FINGERPRINT"
    }
    

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

    • PROJECT_ID: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ํ”„๋กœ์ ํŠธ

    • REGION: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ๋ฆฌ์ „

    • ATTACHMENT_NAME: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ด๋ฆ„

    • PSC_SUBNET1_URI ๋ฐ PSC_SUBNET2_URI: ์ด ์„œ๋น„์Šค ์—ฐ๊ฒฐ๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์„œ๋ธŒ๋„ท์˜ URI. ํ•˜๋‚˜ ์ด์ƒ์˜ ์„œ๋ธŒ๋„ท์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • FINGERPRINT: ์ด์ „ ๋‹จ๊ณ„์—์„œ ์ฐพ์€ ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ตœ์‹  ์ง€๋ฌธ

๊ฒŒ์‹œ๋œ ์„œ๋น„์Šค์˜ ์ „ํŒŒ๋œ ์—ฐ๊ฒฐ ํ•œ๋„ ์—…๋ฐ์ดํŠธ

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

์ฝ˜์†”

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

    Private Service Connect๋กœ ์ด๋™

  2. ๊ฒŒ์‹œ๋œ ์„œ๋น„์Šค ํƒญ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์—…๋ฐ์ดํŠธํ•  ์„œ๋น„์Šค๋ฅผ ํด๋ฆญํ•œ ๋‹ค์Œ ์„œ๋น„์Šค ์„ธ๋ถ€์ •๋ณด ์ˆ˜์ •์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  4. ๊ณ ๊ธ‰ ๊ตฌ์„ฑ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  5. ์ƒˆ NCC ์ „ํŒŒ๋œ ์—ฐ๊ฒฐ ํ•œ๋„๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.

gcloud

service-attachments update ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

gcloud compute service-attachments update ATTACHMENT_NAME \
    --region=REGION \
    --propagated-connection-limit=LIMIT

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

  • ATTACHMENT_NAME: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ด๋ฆ„

  • REGION: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์ด ์žˆ๋Š” ๋ฆฌ์ „

  • LIMIT: ์ „ํŒŒ๋œ ์—ฐ๊ฒฐ ํ•œ๋„์˜ ์ƒˆ ๊ฐ’

API

  1. ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ fingerprint๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด serviceAttachments.get ๋ฉ”์„œ๋“œ์— ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

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

    GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
    

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

    • PROJECT_ID: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ํ”„๋กœ์ ํŠธ
    • REGION: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ๋ฆฌ์ „
    • ATTACHMENT_NAME: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ด๋ฆ„

    ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ ์‚ฌ์šฉํ•  fingerprint ๊ฐ’์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  2. serviceAttachments.patch ๋ฉ”์„œ๋“œ์— ์š”์ฒญ์„ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

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

    PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/serviceAttachments/ATTACHMENT_NAME
    

    JSON ์š”์ฒญ ๋ณธ๋ฌธ:

    {
      "propagatedConnectionLimit": LIMIT,
      "fingerprint": "FINGERPRINT"
    }
    

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

    • PROJECT_ID: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ํ”„๋กœ์ ํŠธ

    • REGION: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ๋ฆฌ์ „

    • ATTACHMENT_NAME: ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ด๋ฆ„

    • LIMIT: ์ „ํŒŒ๋œ ์—ฐ๊ฒฐ ํ•œ๋„์˜ ์ƒˆ ๊ฐ’

    • FINGERPRINT: ์ด์ „ ๋‹จ๊ณ„์—์„œ ์ฐพ์€ ์„œ๋น„์Šค ์—ฐ๊ฒฐ์˜ ์ตœ์‹  ์ง€๋ฌธ