워크로드용 IP 주소 프로비저닝

이 페이지에서는 조직의 내부 가상 프라이빗 클라우드 (VPC) 또는 기본 VPC에서 내부 네트워킹 요구사항을 지원하기 위해 추가 서브넷을 만드는 방법을 설명합니다. 가상 머신 (VM) 및 컨테이너와 같은 내부 워크로드가 조직 내 네트워킹 요구사항을 지원할 수 있는 충분한 수의 IP 주소를 갖도록 하려면 VPC 서브넷을 만들어야 합니다.

이 페이지에는 순서대로 완료하지 않아도 되는 몇 가지 작업이 설명되어 있습니다.

이 페이지의 작업을 완료하기 전에 서브넷 및 관련 개념을 개략적으로 살펴보려면 서브넷 및 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 주소를 할당하기 위한 것이므로 리프 서브넷은 32prefixLength 값으로 구성해야 합니다. 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 네트워크에 대해 다음 단계를 완료합니다.

  1. 터미널 창에서 기본 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/1510.253.0.0/16를 사용할 수 있습니다. 루트 서브넷의 수에 따라 출력에 여러 서브넷이 있을 수 있으므로 사용 가능한 모든 CIDR을 기록하고 사용 가능한 CIDR이 어느 서브넷에서 왔는지 기록합니다.

  2. 이전 단계에서 확인한 사용 가능한 가장 큰 CIDR을 영역에 할당해야 하는 CIDR의 크기와 비교합니다. 사용 가능한 가장 큰 CIDR이 새 서브넷을 할당하기에 충분히 크지 않은 경우 계속하기 전에 새 네트워크 루트 범위 전역 서브넷을 추가하세요. 새 서브넷의 CIDR을 가져올 상위 서브넷을 기록해 둡니다.

    예를 들어 /13 CIDR이 필요하지만 사용 가능한 CIDR에는 /15/16만 포함된 경우 새 네트워크 루트 범위 전역 서브넷을 추가해야 합니다. /15 서브넷이 필요한 경우 기존 /15 CIDR에서 새 영역 서브넷을 할당할 수 있습니다.

  3. 전역 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 참조 문서를 확인하세요.

  4. 상태 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
    
  5. 영역 서브넷이 영역 관리 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 네임스페이스에서 다음 단계를 완료하여 전역 범위 내에서만 전역 루트 서브넷을 나눕니다.

  1. 터미널 창에서 기본 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/1510.253.0.0/16를 사용할 수 있습니다. 루트 서브넷의 수에 따라 출력에 여러 서브넷이 있을 수 있으므로 사용 가능한 모든 CIDR을 기록하고 사용 가능한 CIDR이 어느 서브넷에서 왔는지 기록합니다.

  2. 이전 단계에서 기록한 사용 가능한 가장 큰 CIDR을 새 전역 서브넷에 할당해야 하는 CIDR의 크기와 비교합니다. 사용 가능한 가장 큰 CIDR이 새 서브넷을 할당하기에 충분하지 않은 경우 계속하기 전에 새 네트워크 루트 범위 전역 서브넷을 추가하세요. 새 서브넷의 CIDR을 가져올 상위 서브넷을 기록해 둡니다.

    예를 들어 /13 CIDR이 필요하지만 사용 가능한 CIDR에는 /15/16만 포함된 경우 새 네트워크 루트 범위 전역 서브넷을 만들어야 합니다. /15 서브넷이 필요한 경우 기존 /15 CIDR에서 새 전역 서브넷을 할당할 수 있습니다.

  3. 전역 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 참조 문서를 확인하세요.

  4. 상태 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 서버 내에서 세분화하거나 특정 영역에 할당할 수 있습니다.

다음 단계