이 페이지에서는 조직의 데이터 네트워크 세그먼트에서 외부 네트워킹 요구사항을 지원하기 위해 추가 서브넷을 만드는 방법을 설명합니다. 이그레스 네트워크 주소 변환 (NAT) 및 외부 부하 분산기와 같은 외부 서비스가 조직 외부의 외부 네트워크에 연결하기 위한 네트워킹 요구사항을 지원할 수 있는 충분한 수의 IP 주소를 갖도록 서브넷을 추가해야 합니다.
이 페이지에는 순서대로 완료하지 않아도 되는 몇 가지 작업이 설명되어 있습니다.
- 외부 서비스를 위한 영역 브랜치 서브넷 만들기: 이 작업은 영역의 기존 외부 IP 주소를 서비스에 추가로 구성하거나 할당하는 데 유용합니다.
- 개별 서비스의 리프 서브넷 만들기: 이 작업은 아직 사용할 IP 주소가 없는 새 서비스가 있는 경우에 유용합니다.
- 글로벌 IP 주소 범위에서 영역 서브넷 할당: 이 작업은 영역에 더 이상 충분한 외부 IP 주소 공간이 없는 경우에 유용합니다.
- 영역 할당 없이 루트 전역 서브넷 나누기: 이 작업은 영역에 할당하기 전에 전역 API 서버의 외부 IP 주소를 추가로 정리하는 데 유용합니다.
- 새 네트워크 루트 범위 전역 서브넷 추가: 이 작업은 데이터 네트워크 세그먼트에 더 이상 영역에 할당할 충분한 전역 외부 IP 주소 공간이 없는 경우에 유용합니다.
이 페이지의 작업을 완료하기 전에 서브넷과 그 개념을 간략하게 살펴보려면 서브넷 및 IP 주소를 참고하세요.
이 페이지는 플랫폼 관리자 그룹의 네트워크 관리자와 애플리케이션 운영자 그룹의 애플리케이션 개발자를 대상으로 합니다. 이들은 조직의 네트워크 트래픽을 관리하는 역할을 합니다. 자세한 내용은 GDC 오프라인 문서 대상을 참고하세요.
시작하기 전에
서브넷을 만드는 데 필요한 권한을 얻으려면 조직 IAM 관리자에게 서브넷 조직 관리자 (subnet-org-admin
) IAM 역할을 부여해 달라고 요청하세요. 이 역할은 네임스페이스에 바인딩되지 않습니다.
외부 서비스의 영역별 브랜치 서브넷 만들기
영역의 기존 영역 루트 서브넷에서 영역 외부 서브넷을 만들어 영역 데이터 네트워크 세그먼트의 IP 주소를 추가로 세분화할 수 있습니다. platform
네임스페이스에서 이 서브넷 유형을 만들어야 합니다. 상위 영역 루트 서브넷에 사용 가능한 IP 주소가 충분하지 않으면 먼저 전역 IP 주소 범위에서 다른 영역 서브넷을 할당한 다음 이 절차로 돌아갑니다.
터미널 창에서 영역 관리 API 서버에 새 외부 서브넷을 만듭니다.
kubectl -kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: ipam.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/network-segment: data name: SUBNET_NAME namespace: platform spec: ipv4Request: prefixLength: CIDR_PREFIX_LENGTH networkSpec: enableGateway: true enableVLANID: false parentReference: name: PARENT_SUBNET_NAME namespace: platform type: Branch EOF
다음을 바꿉니다.
MANAGEMENT_API_SERVER_KUBECONFIG
: 관리 API 서버의 kubeconfig 파일 경로입니다. 자세한 내용은 영역 관리 API 서버 리소스를 참고하세요.SUBNET_NAME
: 새 네트워크 서브넷의 이름입니다.CIDR_PREFIX_LENGTH
: 동적으로 할당된 새 서브넷의 CIDR 프리픽스 길이입니다(예:20
). CIDR을 정적으로 설정하려면prefixLength
필드를cidr
필드로 바꾼 다음 CIDR 블록(예:10.0.10.0/27
)을 설정합니다.PARENT_SUBNET_NAME
: 상위 서브넷의 이름입니다(예:data-external-zone0-cidr
). 상위 서브넷은 일반적으로 데이터 네트워크 세그먼트의 영역 루트 서브넷입니다.
자세한 내용은
Subnet
리소스의 API 참조 문서를 참고하세요.영역 서브넷을 계속 세분화하거나 리프 서브넷을 만들어 외부 서비스에 직접 개별 IP 주소를 할당할 수 있습니다.
개별 서비스의 리프 서브넷 만들기
서비스에 단일 IP 주소를 할당하려면 리프 서브넷을 만들어야 합니다.
이 리프 서브넷에는 type: Leaf
필드 값이 있어야 하며 외부 부하 분산기 또는 이그레스 NAT와 같은 외부 서비스와 동일한 프로젝트 네임스페이스에 있어야 합니다.
단일 IP 주소를 할당하기 위한 것이므로 리프 서브넷은 32
의 prefixLength
값으로 구성해야 합니다. parentReference
값은 워크로드용 영역 브랜치 서브넷 만들기에서 만든 상위 영역 서브넷과 같이 이전에 할당된 서브넷을 참조합니다.
터미널 창에서 관리 API 서버에 리프 서브넷을 만듭니다.
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: ipam.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/allocation-preference: default ipam.gdc.goog/network-segment: data name: SUBNET_NAME namespace: PROJECT_NAMESPACE spec: ipv4Request: prefixLength: 32 parentReference: name: PARENT_SUBNET namespace: platform type: Leaf EOF
다음을 바꿉니다.
MANAGEMENT_API_SERVER_KUBECONFIG
: 관리 API 서버의 kubeconfig 파일 경로입니다. 자세한 내용은 영역 관리 API 서버 리소스를 참고하세요.SUBNET_NAME
: 리프 서브넷의 이름입니다.PROJECT_NAMESPACE
: 서비스가 있는 프로젝트에 해당하는 프로젝트 네임스페이스입니다.PARENT_SUBNET
: 이 리프 서브넷이 IP 주소를 가져올 상위 서브넷의 이름입니다.
이제 외부 서비스에서 사용할 수 있는 개별 IP 주소가 제공됩니다. 서비스의 IP 주소를 구성하는 방법에 대한 자세한 내용은 외부 부하 분산기 구성과 같은 해당 서비스 문서를 참고하세요.
전역 IP 주소 범위에서 영역 서브넷 할당
기존 영역 루트 서브넷 IP 주소 범위에서 외부 서비스에 충분한 IP 주소를 제공하지 않는 경우 전역 IP 주소 루트 범위에서 추가 IP 주소를 할당할 수 있습니다.
platform
네임스페이스의 데이터 네트워크 세그먼트에 대해 다음 단계를 완료합니다.
터미널 창에서 모든 데이터 네트워크 세그먼트의 루트 서브넷을 설명하고 사용 가능한 CIDR을 확인합니다.
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \ --label ipam.gdc.goog/network-segment=data,ipam.gdc.goog/usage=network-root-range
GLOBAL_API_SERVER_KUBECONFIG
를 전역 API 서버의 kubeconfig 파일 경로로 바꿉니다. 자세한 내용은 글로벌 API 서버 리소스를 참고하세요. 라벨은 상수이며 동일하게 유지되어야 합니다.출력은 다음과 비슷합니다.
Name: data-external-root-cidr Namespace: platform Labels: ipam.gdc.goog/allocation-preference=default ipam.gdc.goog/subnet-group=data-external-root-group ipam.gdc.goog/usage=network-root-range ipam.gdc.goog/network-segment=data Annotations: <none> API Version: ipam.global.gdc.goog/v1 Kind: Subnet Metadata: Creation Timestamp: 2025-06-18T23:05:38Z Finalizers: global-subnet-finalizer Generation: 1 Resource Version: 439434 UID: 5ed1c51a-b5ee-473e-a185-8e065a87ae8f Spec: ipv4Request: Cidr: 10.252.0.0/14 Propagation Strategy: None Type: Root Status: Children Refs: Name: data-external-zone1-root-cidr Namespace: platform Type: SingleSubnet Conditions: Last Transition Time: 2025-06-18T23:05:38Z Message: IP allocation finished successfully Observed Generation: 1 Reason: AllocationSucceeded Status: True Type: Ready ipv4Allocation: Available CIDRs: 10.254.0.0/15 10.253.0.0/16 Cidr: 10.252.0.0/14 Events: <none>
다음 단계에서 참조할 수 있는 CIDR로
Status.ipv4Allocation.Available CIDRs
값을 기록해 둡니다. 이전 출력에서는 CIDR 범위10.254.0.0/15
및10.253.0.0/16
를 사용할 수 있습니다. 루트 서브넷의 수에 따라 출력에 여러 서브넷이 있을 수 있으므로 사용 가능한 모든 CIDR을 기록하고 사용 가능한 CIDR이 어느 서브넷에서 왔는지 기록합니다.이전 단계에서 확인한 사용 가능한 가장 큰 CIDR을 영역에 할당해야 하는 CIDR의 크기와 비교합니다. 사용 가능한 가장 큰 CIDR이 새 서브넷을 할당하기에 충분히 크지 않은 경우 계속하기 전에 새 네트워크 루트 범위 전역 서브넷을 추가하세요. 새 서브넷의 CIDR을 가져올 상위 서브넷을 기록해 둡니다.
예를 들어
/13
CIDR이 필요하지만 사용 가능한 CIDR에는/15
및/16
만 포함된 경우 새 네트워크 루트 범위 전역 서브넷을 만들어야 합니다./15
서브넷이 필요한 경우 기존/15
CIDR에서 새 영역 서브넷을 할당할 수 있습니다.전역 API 서버에서 새 서브넷을 만듭니다.
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/network-segment: data ipam.gdc.goog/usage: zone-network-root-range name: SUBNET_NAME namespace: platform spec: ipv4Request: prefixLength: CIDR_PREFIX_LENGTH zone: ZONE_NAME propagationStrategy: SingleZone type: Branch parentReference: name: PARENT_SUBNET_NAME namespace: ORG_NAME EOF
다음을 바꿉니다.
GLOBAL_API_SERVER_KUBECONFIG
: 전역 API 서버의 kubeconfig 파일 경로입니다. 자세한 내용은 전역 API 서버 리소스를 참고하세요.SUBNET_NAME
: 새 서브넷의 이름입니다.CIDR_PREFIX_LENGTH
: 동적으로 할당된 새 서브넷의 CIDR 프리픽스 길이입니다(예:20
). CIDR을 정적으로 설정하려면prefixLength
필드를cidr
필드로 바꾼 다음 CIDR 블록(예:10.0.10.0/27
)을 설정합니다.ZONE_NAME
: 서브넷을 할당할 영역(예:zone1
)PARENT_SUBNET_NAME
: 상위 서브넷의 이름(예:data-external-root-cidr
) 또는 새로 만든 네트워크 루트 범위 전역 서브넷입니다.ORG_NAME
: 조직 이름
자세한 내용은 전역
Subnet
리소스의 API 참조 문서를 확인하세요.상태
Ready
유형이true
인지 확인하여 서브넷이 준비되어 있고 전역 API 서버에서 사용할 수 있는지 확인합니다.kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG get subnet --namespace platform \ SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
출력은 다음과 비슷합니다.
status: conditions: - lastTransitionTime: "2025-06-06T07:28:48Z" message: IP allocation finished successfully observedGeneration: 1 reason: AllocationSucceeded status: "True" type: Ready
영역 서브넷이 영역 관리 API 서버에 생성되고 상태
Ready
유형이true
인지 확인합니다.kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get subnet --namespace platform \ SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
MANAGEMENT_API_SERVER_KUBECONFIG
를 관리 API 서버의 kubeconfig 파일 경로로 바꿉니다. 자세한 내용은 영역 관리 API 서버 리소스를 참고하세요.출력은 다음과 비슷합니다.
status: conditions: - lastTransitionTime: "2025-06-06T07:29:34Z" message: IP allocation finished successfully observedGeneration: 1 reason: AllocationSucceeded status: "True" type: Ready
이 새로운 영역 서브넷에서 영역 하위 서브넷을 추가로 만들거나 외부 서비스에 직접 개별 IP 주소를 할당할 수 있습니다.
영역 할당 없이 루트 전역 서브넷 나누기
영역 외부 서비스에 IP 주소를 할당하지 않고 전역 루트 서브넷에서 전역적으로 액세스 가능한 IP 주소 범위를 계속 구성하려면 전역 서브넷을 만들고 Subnet
커스텀 리소스에서 전파 전략을 정의하지 마세요.
platform
네임스페이스에서 다음 단계를 완료하여 전역 범위 내에서만 전역 루트 서브넷을 나눕니다.
터미널 창에서 모든 데이터 네트워크 세그먼트의 루트 서브넷을 설명하고 사용 가능한 CIDR을 확인합니다.
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \ --label ipam.gdc.goog/network-segment=data,ipam.gdc.goog/usage=network-root-range
GLOBAL_API_SERVER_KUBECONFIG
를 전역 API 서버의 kubeconfig 파일 경로로 바꿉니다. 자세한 내용은 글로벌 API 서버 리소스를 참고하세요. 라벨은 상수이며 동일하게 유지되어야 합니다.출력은 다음과 비슷합니다.
Name: data-external-root-cidr Namespace: platform Labels: ipam.gdc.goog/allocation-preference=default ipam.gdc.goog/subnet-group=data-external-root-group ipam.gdc.goog/usage=network-root-range ipam.gdc.goog/network-segment=data Annotations: <none> API Version: ipam.global.gdc.goog/v1 Kind: Subnet Metadata: Creation Timestamp: 2025-06-18T23:05:38Z Finalizers: global-subnet-finalizer Generation: 1 Resource Version: 439434 UID: 5ed1c51a-b5ee-473e-a185-8e065a87ae8f Spec: ipv4Request: Cidr: 10.252.0.0/14 Propagation Strategy: None Type: Root Status: Children Refs: Name: data-external-zone1-root-cidr Namespace: platform Type: SingleSubnet Conditions: Last Transition Time: 2025-06-18T23:05:38Z Message: IP allocation finished successfully Observed Generation: 1 Reason: AllocationSucceeded Status: True Type: Ready ipv4Allocation: Available CIDRs: 10.254.0.0/15 10.253.0.0/16 Cidr: 10.252.0.0/14 Events: <none>
다음 단계에서 참조할 수 있는 CIDR로
Status.ipv4Allocation.Available CIDRs
값을 기록해 둡니다. 이전 출력에서는 CIDR 범위10.254.0.0/15
및10.253.0.0/16
를 사용할 수 있습니다. 루트 서브넷의 수에 따라 출력에 여러 서브넷이 있을 수 있으므로 사용 가능한 모든 CIDR을 기록하고 사용 가능한 CIDR이 어느 서브넷에서 왔는지 기록합니다.이전 단계에서 기록한 사용 가능한 가장 큰 CIDR을 새 전역 서브넷에 할당해야 하는 CIDR의 크기와 비교합니다. 사용 가능한 가장 큰 CIDR이 새 서브넷을 할당하기에 충분하지 않은 경우 계속하기 전에 새 네트워크 루트 범위 전역 서브넷을 추가하세요. 새 서브넷의 CIDR을 가져올 상위 서브넷을 기록해 둡니다.
예를 들어
/13
CIDR이 필요하지만 사용 가능한 CIDR에는/15
및/16
만 포함된 경우 새 네트워크 루트 범위 전역 서브넷을 만들어야 합니다./15
서브넷이 필요한 경우 기존/15
CIDR에서 새 전역 서브넷을 할당할 수 있습니다.전역 API 서버에서 새 서브넷을 만듭니다.
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/network-segment: data ipam.gdc.goog/usage: zone-network-root-range name: SUBNET_NAME namespace: platform spec: ipv4Request: prefixLength: CIDR_PREFIX_LENGTH propagationStrategy: None type: Branch parentReference: name: PARENT_SUBNET_NAME namespace: ORG_NAME EOF
다음을 바꿉니다.
GLOBAL_API_SERVER_KUBECONFIG
: 전역 API 서버의 kubeconfig 파일 경로입니다. 자세한 내용은 전역 API 서버 리소스를 참고하세요.SUBNET_NAME
: 새 서브넷의 이름입니다.CIDR_PREFIX_LENGTH
: 동적으로 할당된 새 서브넷의 CIDR 프리픽스 길이입니다(예:20
). CIDR을 정적으로 설정하려면prefixLength
필드를cidr
필드로 바꾼 다음 CIDR 블록(예:10.0.10.0/27
)을 설정합니다.PARENT_SUBNET_NAME
: 상위 서브넷의 이름(예:data-external-root-cidr
) 또는 새로 만든 네트워크 루트 범위 전역 서브넷입니다.ORG_NAME
: 조직 이름
자세한 내용은 전역
Subnet
리소스의 API 참조 문서를 확인하세요.상태
Ready
유형이true
인지 확인하여 서브넷이 준비되어 있고 전역 API 서버에서 사용할 수 있는지 확인합니다.kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG get subnet --namespace platform \ SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
출력은 다음과 비슷합니다.
status: conditions: - lastTransitionTime: "2025-06-06T07:28:48Z" message: IP allocation finished successfully observedGeneration: 1 reason: AllocationSucceeded status: "True" type: Ready
데이터 네트워크 세그먼트에서 조직의 새 전역 서브넷을 사용할 수 있습니다. 이 새로운 전역 상위 서브넷에서 특정 영역의 서브넷을 만들 수 있습니다.
새 네트워크 루트 범위 전역 서브넷 추가
ipam.gdc.goog/usage: network-root-range
라벨이 지정된 전역 서브넷은 네트워크의 모든 영역에 대한 CIDR을 호스팅합니다. CIDR이 소진된 경우 전역 API 서버에서 새 네트워크 루트 범위 서브넷을 만들어야 합니다. 필요한 경우 여러 루트 전역 서브넷을 만들 수 있습니다.
새 네트워크 루트 범위 서브넷을 만들려면 다음 단계를 완료하세요.
터미널 창에서
platform
네임스페이스의 데이터 네트워크 세그먼트에 대한 새 네트워크 루트 범위 전역 서브넷을 만듭니다.kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/network-segment: data ipam.gdc.goog/usage: network-root-range name: SUBNET_NAME namespace: platform spec: ipv4Request: cidr: NEW_CIDR type: Root EOF
다음을 바꿉니다.
GLOBAL_API_SERVER_KUBECONFIG
: 전역 API 서버의 kubeconfig 파일 경로입니다. 자세한 내용은 전역 API 서버 리소스를 참고하세요.SUBNET_NAME
: 새 서브넷의 이름입니다.NEW_CIDR
: 서브넷의 새 CIDR입니다. 이 CIDR은 동일한 전역 API 서버에서ipam.gdc.goog/usage: network-root-range
라벨이 있는 모든 기존 서브넷의 CIDR과 겹칠 수 없습니다.
이 새로운 전역 루트 범위 서브넷은 전역 API 서버 내에서 세분화하거나 특정 영역에 할당할 수 있습니다.