๊ฒ์๋ ์๋น์ค ๊ด๋ฆฌ
์ด ํ์ด์ง์์๋ ๊ฒ์๋ ์๋น์ค์ ๋ํ ์ก์ธ์ค ์์ฒญ์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ, ๊ฒ์๋ ์๋น์ค์ ์ฐ๊ฒฐ ํ๊ฒฝ์ค์ ์ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ, ์ฐ๊ฒฐ ์กฐ์ ์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค.
๊ฐ ์๋น์ค ์ฐ๊ฒฐ์๋ ์ฐ๊ฒฐ ์์ฒญ์ด ์๋์ผ๋ก ํ์ฉ๋๋์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ ์ฐ๊ฒฐ ํ๊ฒฝ์ค์ ์ด ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ๋ค์ ์ธ ๊ฐ์ง ์ต์ ์ด ์์ต๋๋ค.
- ๋ชจ๋ ์ฐ๊ฒฐ์ ์๋์ผ๋ก ํ์ฉ. ์๋น์ค ์ฐ๊ฒฐ์ ๋ชจ๋ ์๋น์์ ๋ชจ๋ ์ธ๋ฐ์ด๋ ์ฐ๊ฒฐ ์์ฒญ์ ์๋์ผ๋ก ํ์ฉํฉ๋๋ค. ์๋ ํ์ฉ์ ์์ ์ฐ๊ฒฐ์ ์ฐจ๋จํ๋ ์กฐ์ง ์ ์ฑ ์ผ๋ก ์ฌ์ ์๋ ์ ์์ต๋๋ค.
- ์ ํํ ๋คํธ์ํฌ์ ๋ํ ์ฐ๊ฒฐ ํ์ฉ. ์๋น์ค ์ฐ๊ฒฐ์ ์๋น์ VPC ๋คํธ์ํฌ๊ฐ ์๋น์ค ์ฐ๊ฒฐ์ ์๋น์ ํ์ฉ ๋ชฉ๋ก์ ์๋ ๊ฒฝ์ฐ์๋ง ์ธ๋ฐ์ด๋ ์ฐ๊ฒฐ ์์ฒญ์ ์๋ฝํฉ๋๋ค.
- ์ ํํ ํ๋ก์ ํธ์ ๋ํ ์ฐ๊ฒฐ ์๋ฝ. ์๋น์ค ์ฐ๊ฒฐ์ ์๋น์ ํ๋ก์ ํธ๊ฐ ์๋น์ค ์ฐ๊ฒฐ์ ์๋น์ ํ์ฉ ๋ชฉ๋ก์ ์๋ ๊ฒฝ์ฐ์๋ง ์ธ๋ฐ์ด๋ ์ฐ๊ฒฐ ์์ฒญ์ ์๋ฝํฉ๋๋ค.
์ ํํ ํ๋ก์ ํธ ๋๋ ๋คํธ์ํฌ์ ๋ํ ์ฐ๊ฒฐ์ ์๋ฝํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๋ค๋ฅธ ์๋จ์ ํตํด ์๋น์ ์ก์ธ์ค๋ฅผ ์ ์ดํ๊ณ ์๋น์ค์ ๋ํ ๊ถํ ์ก์ธ์ค๋ฅผ ์ฌ์ฉ ์ค์ ํ๋ ค๋ฉด ๋ชจ๋ ์ฐ๊ฒฐ์ ์๋์ผ๋ก ์๋ฝํ๋ ๊ฒ์ด ์ ํฉํ ์ ์์ต๋๋ค.
์๋น์ค ๊ฒ์์ ๋ํ ์์ธํ ๋ด์ฉ์ ์๋น์ค ๊ฒ์๋ฅผ ์ฐธ๊ณ ํ์ธ์.
์ญํ
๋ค์ IAM ์ญํ ์ ์ด ๊ฐ์ด๋์ ์์ ์ ์ํํ๋ ๋ฐ ํ์ํ ๊ถํ์ ์ ๊ณตํฉ๋๋ค.
- Compute ๋คํธ์ํฌ ๊ด๋ฆฌ์(
roles/compute.networkAdmin
)
๊ฒ์๋ ์๋น์ค์ ๋ํ ์ก์ธ์ค ์์ฒญ ๊ด๋ฆฌ
๋ช ์์ ์น์ธ์ผ๋ก ์๋น์ค๋ฅผ ๊ฒ์ํ ๊ฒฝ์ฐ ์๋น์ ํ๋ก์ ํธ๋ VPC ๋คํธ์ํฌ์ ์ฐ๊ฒฐ ์์ฒญ์ ํ์ฉํ๊ฑฐ๋ ๊ฑฐ๋ถํ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ ๋๋ ๋คํธ์ํฌ๋ฅผ ํ์ฉ ๋ชฉ๋ก๊ณผ ๊ฑฐ๋ถ ๋ชฉ๋ก์ ๋ชจ๋ ์ถ๊ฐํ๋ฉด ํด๋น ํ๋ก์ ํธ๋ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ ์์ฒญ์ด ๊ฑฐ๋ถ๋ฉ๋๋ค.
์๋น์ค์์ ์๋น์ ์๋ํฌ์ธํธ ์ฐ๊ฒฐ์ด ํ์ฉ๋๋ฉด ์๋น์ค ์ฐ๊ฒฐ์ด ์ญ์ ๋ ๋๊น์ง ์๋ํฌ์ธํธ๋ฅผ ์๋น์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ์ด๋ ์๋น์๊ฐ ๋ช ์์ ์ผ๋ก ํ์ฉ๋๊ฑฐ๋ ์ฐ๊ฒฐ ํ๊ฒฝ ์ค์ ์ด ์ฐ๊ฒฐ์ ์๋์ผ๋ก ์๋ฝํ๋๋ก ์ค์ ๋์์ ๋ ์๋น์ ์๋ํฌ์ธํธ๊ฐ ์ฐ๊ฒฐ๋์๋์ง ์ฌ๋ถ์ ๊ด๊ณ์์ด ์ ์ฉ๋ฉ๋๋ค.
ํ์ฉ ๋ชฉ๋ก์์ ํ๋ก์ ํธ ๋๋ ๋คํธ์ํฌ๋ฅผ ์ญ์ ํ ๊ฒฝ์ฐ ์๋ํฌ์ธํธ๊ฐ ์ฐ๊ฒฐ๋๊ธฐ ์ ์ ํด๋น ํ๋ก์ ํธ์์ ์ ์๋น์ ์๋ํฌ์ธํธ๋ฅผ ์๋ฝํด์ผ ํฉ๋๋ค. ํ์ง๋ง ํด๋น ํ๋ก์ ํธ ๋๋ ๋คํธ์ํฌ์์ ์ด์ ์ ํ์ฉ๋ ๋ชจ๋ ์๋น์ ์๋ํฌ์ธํธ๋ ๊ณ์ ์๋น์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
ํ๋ก์ ํธ ๋๋ ๋คํธ์ํฌ๋ฅผ ๊ฑฐ๋ถ ๋ชฉ๋ก์ ์ถ๊ฐํ๋ฉด ํด๋น ํ๋ก์ ํธ ๋๋ ๋คํธ์ํฌ์ ์๋ ์ ์๋น์ ์๋ํฌ์ธํธ์ ์ฐ๊ฒฐ์ด ์๋น์ค ์ฐ๊ฒฐ์์ ๊ฑฐ๋ถ๋ฉ๋๋ค. ํ์ง๋ง ํด๋น ํ๋ก์ ํธ ๋๋ ๋คํธ์ํฌ์์ ์ด์ ์ ํ์ฉ๋ ๋ชจ๋ ์๋น์ ์๋ํฌ์ธํธ๋ ๊ณ์ํด์ ์๋น์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ Private Service Connect ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๊ฒ์๋ ์๋น์ค ํญ์ ํด๋ฆญํฉ๋๋ค.
๊ด๋ฆฌํ ์๋น์ค๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ฐ๊ฒฐ๋ ํ๋ก์ ํธ ์น์ ์ ์ด ์๋น์ค์ ์ฐ๊ฒฐ์ ์๋ํ ํ๋ก์ ํธ๊ฐ ๋์ด๋ฉ๋๋ค. ํ๋ ์ด์์ ํ๋ก์ ํธ ์์ ์๋ ์ฒดํฌ๋ฐ์ค๋ฅผ ์ ํํ๊ณ ํ๋ก์ ํธ ์๋ฝ ๋๋ ํ๋ก์ ํธ ๊ฑฐ๋ถ๋ฅผ ํด๋ฆญํฉ๋๋ค.
gcloud
์์ ํ๋ ค๋ ์๋น์ค ์ฐ๊ฒฐ์ ์ค๋ช ํ๋ ค๋ฉด
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
์๋น์ ํ๋ก์ ํธ ๋๋ ๋คํธ์ํฌ๋ฅผ ํ์ฉํ๊ฑฐ๋ ๊ฑฐ๋ถํ๋ ค๋ฉด
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
์์ ํ๋ ค๋ ์๋น์ค ์ฐ๊ฒฐ์ ์ค๋ช ํ๋ ค๋ฉด
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
๊ฐ์ ํ์ธํฉ๋๋ค.์๋น์ ํ๋ก์ ํธ ๋๋ ๋คํธ์ํฌ๋ฅผ ํ์ฉํ๊ฑฐ๋ ๊ฑฐ๋ถํ๋ ค๋ฉด
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
: ๊ฑฐ๋ถํ๋ ค๋ ๋คํธ์ํฌ์ ์ด๋ฆ
๊ฒ์๋ ์๋น์ค์ ์ฐ๊ฒฐ ํ๊ฒฝ์ค์ ๋ณ๊ฒฝ
๊ฒ์๋ ์๋น์ค์ ์๋ ๋ฐ ๋ช ์์ ์ธ ํ๋ก์ ํธ ํ์ฉ ๊ฐ์ ์ ํํ ์ ์์ต๋๋ค.
์๋ ์๋ฝ์์ ๋ช ์์ ์๋ฝ์ผ๋ก ๋ณ๊ฒฝํด๋ ๋ณ๊ฒฝ ์ ์ ์๋น์ค์ ์ฐ๊ฒฐ๋ ์๋น์ ์๋ํฌ์ธํธ๋ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค. ๊ธฐ์กด ์๋น์ ์๋ํฌ์ธํธ๋ ์๋น์ค ์ฐ๊ฒฐ์ด ์ญ์ ๋ ๋๊น์ง ๊ฒ์๋ ์๋น์ค์ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค. ์ ์๋น์ ์๋ํฌ์ธํธ๋ ์๋น์ค์ ์ฐ๊ฒฐํ๊ธฐ ์ ์ ์๋ฝ๋์ด์ผ ํฉ๋๋ค. ์์ธํ ๋ด์ฉ์ ๊ฒ์๋ ์๋น์ค์ ๋ํ ์ก์ธ์ค ์์ฒญ ๊ด๋ฆฌ๋ฅผ ์ฐธ์กฐํ์ธ์.
์ฝ์
Google Cloud ์ฝ์์์ Private Service Connect ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๊ฒ์๋ ์๋น์ค ํญ์ ํด๋ฆญํฉ๋๋ค.
์ ๋ฐ์ดํธํ ์๋น์ค๋ฅผ ํด๋ฆญํ ๋ค์ ์๋น์ค ์ธ๋ถ์ ๋ณด ์์ ์ ํด๋ฆญํฉ๋๋ค.
์ํ๋ ์ฐ๊ฒฐ ํ๊ฒฝ์ค์ ์ ์ ํํฉ๋๋ค.
- ์ ํํ ํ๋ก์ ํธ์ ์ฐ๊ฒฐ ํ์ฉ
- ์ ํํ ๋คํธ์ํฌ์ ๋ํ ์ฐ๊ฒฐ ํ์ฉ
- ๋ชจ๋ ์ฐ๊ฒฐ์ ์๋์ผ๋ก ํ์ฉ
์ ํ์ฌํญ: ์ ํํ ํ๋ก์ ํธ์ ์ฐ๊ฒฐ ํ์ฉ์ผ๋ก ์ ํํ๋ ๊ฒฝ์ฐ ํ์ฉํ ํ๋ก์ ํธ์ ์ธ๋ถ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ฑฐ๋ ๋์ค์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
- ํ์ฉ๋๋ ํ๋ก์ ํธ ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ํ๋ก์ ํธ ๋ฐ ์ฐ๊ฒฐ ํ๋๋ฅผ ์ ๋ ฅํฉ๋๋ค.
์ ํ์ฌํญ: ์ ํํ ๋คํธ์ํฌ์ ์ฐ๊ฒฐ ํ์ฉ์ผ๋ก ์ ํํ๋ ๊ฒฝ์ฐ ํ์ฉํ ๋คํธ์ํฌ์ ์ธ๋ถ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ฑฐ๋ ๋์ค์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
- ํ์ฉ๋ ๋คํธ์ํฌ ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
- ํ๋ก์ ํธ, ๋คํธ์ํฌ ๋ฐ ์ฐ๊ฒฐ ํ๋๋ฅผ ์ ๋ ฅํฉ๋๋ค.
์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
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
์๋น์ค ์ฐ๊ฒฐ์
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
๊ฐ์ ํ์ธํฉ๋๋ค.์๋น์ค ์ฐ๊ฒฐ์ ์ฐ๊ฒฐ ํ๊ฒฝ์ค์ ์ ๋ณ๊ฒฝํ๋ ค๋ฉด
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๋จ๊ณ์์ ์ฐพ์ ์๋น์ค ์ฐ๊ฒฐ์ ์ต์ ์ง๋ฌธ
์ฐ๊ฒฐ ์กฐ์ ๊ตฌ์ฑ
๊ธฐ์กด ์๋น์ค ์ฐ๊ฒฐ์ ๋ํ ์ฐ๊ฒฐ ์กฐ์ ์ ์ฌ์ฉ ์ค์ ํ๊ฑฐ๋ ์ค์งํ ์ ์์ต๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ Private Service Connect ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๊ฒ์๋ ์๋น์ค ํญ์ ํด๋ฆญํฉ๋๋ค.
์ ๋ฐ์ดํธํ ์๋น์ค๋ฅผ ํด๋ฆญํ ๋ค์ ์๋น์ค ์ธ๋ถ์ ๋ณด ์์ ์ ํด๋ฆญํฉ๋๋ค.
์ฐ๊ฒฐ ์กฐ์ ์ฌ์ฉ ์ค์ ์ฒดํฌ๋ฐ์ค๋ฅผ ์ ํํ๊ฑฐ๋ ์ ํ ํด์ ํ ๋ค์ ์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
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
์๋น์ค ์ฐ๊ฒฐ์
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
๊ฐ์ ํ์ธํฉ๋๋ค.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 ์๋ธ๋ท์ ๋ง๋ค๊ณ ์๋น์ค ์ฐ๊ฒฐ์ ์์ ํ์ฌ ์ ์๋ธ๋ท์ ์ถ๊ฐํฉ๋๋ค.
์๋ธ๋ท์ ์์ ํ์ฌ IPv4 ๋ฒ์๋ฅผ ํ์ฅํฉ๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก ๊ฒ์๋ ์๋น์ค๋ฅผ ์์ ํ์ฌ Private Service Connect ์๋ธ๋ท์ ์ญ์ ํ ์ ์์ต๋๋ค. ํ์ง๋ง Private Service Connect์ ๋ํด SNAT๋ฅผ ์ํํ๊ธฐ ์ํด ์๋ธ๋ท์ IP ์ฃผ์๊ฐ ์ฌ์ฉ๋๊ณ ์์ผ๋ฉด ์๋ธ๋ท์ ์ญ์ ํ ์ ์์ต๋๋ค.
์๋ธ๋ท ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ๋ ๊ฒฝ์ฐ ์ ์๋ธ๋ท์ ์์ฒญ์ด ๋ฐฑ์๋ VM์ ๋๋ฌํ ์ ์๋๋ก ๋ฐฉํ๋ฒฝ ๊ท์น์ ์ ๋ฐ์ดํธํฉ๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ Private Service Connect ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๊ฒ์๋ ์๋น์ค ํญ์ ํด๋ฆญํฉ๋๋ค.
์ ๋ฐ์ดํธํ ์๋น์ค๋ฅผ ํด๋ฆญํ ๋ค์ ์๋น์ค ์ธ๋ถ์ ๋ณด ์์ ์ ํด๋ฆญํฉ๋๋ค.
์ด ์๋น์ค์ ์ฌ์ฉ๋๋ ์๋ธ๋ท์ ์์ ํฉ๋๋ค.
์ ์๋ธ๋ท์ ์ถ๊ฐํ๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์๋ธ๋ท์ ๋ง๋ญ๋๋ค.
- ์ ์๋ธ๋ท ์์ฝ์ ํด๋ฆญํฉ๋๋ค.
- ์๋ธ๋ท์ ์ด๋ฆ๊ณผ ์ค๋ช (์ ํ์ฌํญ)์ ์ ๋ ฅํฉ๋๋ค.
- ์๋ธ๋ท์ ๋ฆฌ์ ์ ์ ํํฉ๋๋ค.
- ์๋ธ๋ท์ ์ฌ์ฉํ IP ๋ฒ์๋ฅผ ์ ๋ ฅํ๊ณ ์ถ๊ฐ๋ฅผ ํด๋ฆญํฉ๋๋ค.
์ ์ฅ์ ํด๋ฆญํฉ๋๋ค.
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
์๋น์ค ์ฐ๊ฒฐ์
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
๊ฐ์ ํ์ธํฉ๋๋ค.์ด ์๋น์ค ์ฐ๊ฒฐ์ ์ฌ์ฉ๋๋ 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 ๋ ๋๊ธฐ ์ค์ธ ์ ํ๋ ์ฐ๊ฒฐ์ ๋ง๋ค ์ ์๋์ง ์๋์ผ๋ก ํ์ธํฉ๋๋ค. ํ๋๋ฅผ ์ค์ด๋ฉด ๊ธฐ์กด์ ์ ํ๋ ์ฐ๊ฒฐ์ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ ํ๋์ ๋๋ฌํ๋ฉด ์ญ์ ๋๊ฑฐ๋ ๊ฑฐ๋ถ๋ ์ ํ๋ ์ฐ๊ฒฐ์ ๋ค์ ์ค์ ํ๋ ค๋ ์๋๊ฐ ์ฐจ๋จ๋ ์ ์์ต๋๋ค.
์ฝ์
Google Cloud ์ฝ์์์ Private Service Connect ํ์ด์ง๋ก ์ด๋ํฉ๋๋ค.
๊ฒ์๋ ์๋น์ค ํญ์ ํด๋ฆญํฉ๋๋ค.
์ ๋ฐ์ดํธํ ์๋น์ค๋ฅผ ํด๋ฆญํ ๋ค์ ์๋น์ค ์ธ๋ถ์ ๋ณด ์์ ์ ํด๋ฆญํฉ๋๋ค.
๊ณ ๊ธ ๊ตฌ์ฑ์ ํด๋ฆญํฉ๋๋ค.
์ NCC ์ ํ๋ ์ฐ๊ฒฐ ํ๋๋ฅผ ์ ๋ ฅํฉ๋๋ค.
gcloud
service-attachments update
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํฉ๋๋ค.
gcloud compute service-attachments update ATTACHMENT_NAME \ --region=REGION \ --propagated-connection-limit=LIMIT
๋ค์์ ๋ฐ๊ฟ๋๋ค.
ATTACHMENT_NAME
: ์๋น์ค ์ฐ๊ฒฐ์ ์ด๋ฆREGION
: ์๋น์ค ์ฐ๊ฒฐ์ด ์๋ ๋ฆฌ์ LIMIT
: ์ ํ๋ ์ฐ๊ฒฐ ํ๋์ ์ ๊ฐ
API
์๋น์ค ์ฐ๊ฒฐ์
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
๊ฐ์ ํ์ธํฉ๋๋ค.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
: ์ด์ ๋จ๊ณ์์ ์ฐพ์ ์๋น์ค ์ฐ๊ฒฐ์ ์ต์ ์ง๋ฌธ