이 페이지에서는 조직의 내부 가상 프라이빗 클라우드 (VPC) 또는 기본 VPC에서 내부 네트워킹 요구사항을 지원하기 위해 추가 서브넷을 만드는 방법을 설명합니다. 가상 머신 (VM) 및 컨테이너와 같은 내부 워크로드가 조직 내 네트워킹 요구사항을 지원할 수 있는 충분한 수의 IP 주소를 갖도록 하려면 VPC 서브넷을 만들어야 합니다.
이 페이지에는 순서대로 완료하지 않아도 되는 몇 가지 작업이 설명되어 있습니다.
- 워크로드의 영역 브랜치 서브넷 만들기: 이 작업은 영역의 기존 내부 IP 주소를 워크로드에 추가로 구성하거나 할당하는 데 유용합니다.
- 개별 워크로드의 리프 서브넷 만들기: 이 작업은 아직 사용할 IP 주소가 없는 새 워크로드가 있는 경우에 유용합니다.
- 전역 IP 주소 범위에서 영역 서브넷 할당: 이 작업은 영역에 더 이상 충분한 내부 IP 주소 공간이 없는 경우에 유용합니다.
- 영역 할당 없이 루트 전역 서브넷 나누기: 이 작업은 영역에 할당하기 전에 전역 API 서버의 내부 IP 주소를 추가로 정리하는 데 유용합니다.
- 새 네트워크 루트 범위 전역 서브넷 추가: 이 작업은 기본 VPC에 더 이상 영역에 할당할 충분한 전역 내부 IP 주소 공간이 없는 경우에 유용합니다.
이 페이지의 작업을 완료하기 전에 서브넷 및 관련 개념을 개략적으로 살펴보려면 서브넷 및 IP 주소를 참고하세요.
이 페이지는 플랫폼 관리자 그룹의 네트워크 관리자와 애플리케이션 운영자 그룹의 애플리케이션 개발자를 대상으로 합니다. 이들은 조직의 네트워크 트래픽을 관리하는 역할을 합니다. 자세한 내용은 GDC 오프라인 문서 대상을 참고하세요.
시작하기 전에
서브넷을 만드는 데 필요한 권한을 얻으려면 조직 IAM 관리자에게 서브넷 조직 관리자 (subnet-org-admin
) IAM 역할을 부여해 달라고 요청하세요. 이 역할은 네임스페이스에 바인딩되지 않습니다.
워크로드용 영역 분기 서브넷 만들기
영역의 기존 영역 루트 서브넷에서 영역 내부 서브넷을 만들어 영역 기본 VPC의 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/vpc: default-vpc 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
: 상위 서브넷의 이름입니다(예:default-vpc-zone0-cidr
). 상위 서브넷은 일반적으로 기본 VPC의 영역 루트 서브넷입니다.
자세한 내용은
Subnet
리소스의 API 참조 문서를 참고하세요.영역 서브넷을 계속 세분화하거나 리프 서브넷을 만들어 내부 워크로드에 직접 개별 IP 주소를 할당할 수 있습니다.
개별 워크로드의 리프 서브넷 만들기
워크로드에 단일 IP 주소를 할당하려면 리프 서브넷을 만들어야 합니다.
이 리프 서브넷의 필드 값은 type: Leaf
이어야 하며 VM 또는 컨테이너와 같은 워크로드 리소스와 동일한 프로젝트 네임스페이스에 있어야 합니다.
단일 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/vpc: default-vpc 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 주소를 가져올 상위 서브넷의 이름입니다.
이제 VM 및 컨테이너와 같은 내부 워크로드에서 개별 IP 주소를 사용할 수 있습니다. 워크로드의 IP 주소를 구성하는 방법에 대한 자세한 내용은 가상 머신 워크로드 배포 또는 컨테이너 워크로드 배포를 참고하세요.
전역 IP 주소 범위에서 영역 서브넷 할당
기존 영역 루트 서브넷 IP 주소 범위에서 워크로드에 충분한 IP 주소를 제공하지 않는 경우 전역 IP 주소 루트 범위에서 추가 IP 주소를 할당할 수 있습니다.
platform
네임스페이스의 기본 VPC 네트워크에 대해 다음 단계를 완료합니다.
터미널 창에서 기본 VPC의 모든 루트 서브넷을 설명하고 사용 가능한 CIDR을 확인합니다.
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \ --label ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage=network-root-range
GLOBAL_API_SERVER_KUBECONFIG
를 전역 API 서버의 kubeconfig 파일 경로로 바꿉니다. 자세한 내용은 글로벌 API 서버 리소스를 참고하세요. 라벨은 상수이며 동일하게 유지되어야 합니다.출력은 다음과 비슷합니다.
Name: default-vpc-root-cidr Namespace: platform Labels: ipam.gdc.goog/allocation-preference=default ipam.gdc.goog/subnet-group=default-vpc-root-group ipam.gdc.goog/usage=network-root-range ipam.gdc.goog/vpc=default-vpc 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: default-vpc-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/vpc: default-vpc 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
: 상위 서브넷의 이름(예:default-vpc-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 주소를 할당할 수 있습니다.
영역 할당 없이 루트 전역 서브넷 나누기
워크로드에서 사용할 영역에 할당하지 않고 전역 서브넷을 추가로 나누려면 전역 서브넷을 만들고 Subnet
커스텀 리소스에서 전파 전략을 정의하지 마세요. 이 방법은 영역에 IP 주소를 할당하지 않고 전역 루트 서브넷에서 전역적으로 액세스 가능한 IP 주소 범위를 계속 구성하려는 경우에 유용합니다.
platform
네임스페이스에서 다음 단계를 완료하여 전역 범위 내에서만 전역 루트 서브넷을 나눕니다.
터미널 창에서 기본 VPC의 모든 루트 서브넷을 설명하고 사용 가능한 CIDR을 확인합니다.
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \ --label ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage=network-root-range
GLOBAL_API_SERVER_KUBECONFIG
를 전역 API 서버의 kubeconfig 파일 경로로 바꿉니다. 자세한 내용은 글로벌 API 서버 리소스를 참고하세요. 라벨은 상수이며 동일하게 유지되어야 합니다.출력은 다음과 비슷합니다.
Name: default-vpc-root-cidr Namespace: platform Labels: ipam.gdc.goog/allocation-preference=default ipam.gdc.goog/subnet-group=default-vpc-root-group ipam.gdc.goog/usage=network-root-range ipam.gdc.goog/vpc=default-vpc 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: default-vpc-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/vpc: default-vpc 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
: 상위 서브넷의 이름(예:default-vpc-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
기본 VPC에서 조직의 새 전역 서브넷을 사용할 수 있습니다. 이 새로운 전역 상위 서브넷에서 특정 영역의 서브넷을 만들 수 있습니다.
새 네트워크 루트 범위 전역 서브넷 추가
ipam.gdc.goog/usage: network-root-range
라벨이 지정된 전역 서브넷은 네트워크의 모든 영역에 대한 CIDR을 호스팅합니다. CIDR이 소진된 경우 전역 API 서버에서 새 네트워크 루트 범위 서브넷을 만들어야 합니다. 필요한 경우 여러 루트 전역 서브넷을 만들 수 있습니다.
새 네트워크 루트 범위 서브넷을 만들려면 다음 단계를 완료하세요.
터미널 창에서
platform
네임스페이스의 기본 VPC에 대한 새 네트워크 루트 범위 전역 서브넷을 만듭니다.kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: default-vpc 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 서버 내에서 세분화하거나 특정 영역에 할당할 수 있습니다.