Menyediakan alamat IP untuk workload

Halaman ini menjelaskan cara membuat subnet tambahan di Virtual Private Cloud (VPC) internal, atau VPC Default, organisasi Anda untuk mendukung persyaratan jaringan internal Anda. Anda harus membuat subnet VPC untuk memastikan bahwa workload internal Anda, seperti mesin virtual (VM) dan container, memiliki alamat IP yang cukup untuk mendukung persyaratan jaringan internal organisasi Anda.

Ada beberapa tugas yang diuraikan di halaman ini, yang tidak dimaksudkan untuk diselesaikan secara berurutan:

Untuk ringkasan subnet dan konsepnya sebelum Anda menyelesaikan tugas di halaman ini, lihat Subnet dan alamat IP.

Halaman ini ditujukan bagi administrator jaringan dalam grup administrator platform dan developer aplikasi dalam grup operator aplikasi, yang bertanggung jawab mengelola traffic jaringan untuk organisasi mereka. Untuk mengetahui informasi selengkapnya, lihat dokumentasi Audiens untuk GDC yang terisolasi dari internet.

Sebelum memulai

Untuk mendapatkan izin yang diperlukan guna membuat subnet, minta Admin IAM Organisasi Anda untuk memberi Anda peran IAM Subnet Organization Admin (subnet-org-admin). Peran ini tidak terikat ke namespace.

Membuat subnet cabang zonal untuk beban kerja

Anda dapat membuat subnet internal zonal dari subnet root zonal yang ada di zona untuk membagi lebih lanjut alamat IP di VPC Default zonal Anda. Anda harus membuat jenis subnet ini di namespace platform. Jika subnet root zona induk tidak memiliki cukup alamat IP yang tersedia, Anda harus mengalokasikan subnet zona lain dari rentang alamat IP global sebelum melanjutkan.

  • Di jendela terminal, buat subnet zonal baru di server management 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
    

    Ganti kode berikut:

    • MANAGEMENT_API_SERVER_KUBECONFIG: jalur ke file kubeconfig server API pengelolaan Anda. Untuk mengetahui informasi selengkapnya, lihat Resource server API pengelolaan zona.

    • SUBNET_NAME: nama subnet jaringan baru Anda.

    • CIDR_PREFIX_LENGTH: panjang awalan untuk subnet baru Anda, seperti 27. Kolom ini mengalokasikan rentang alamat IP berikutnya yang tersedia dengan ukuran tersebut secara dinamis dari subnet induk. Gunakan kolom prefixLength jika Anda hanya ingin mengetahui ukuran subnet, bukan rentang alamat IP tertentu.

      Untuk menetapkan rentang IP tertentu, ikuti langkah-langkah berikut:

      1. Hapus baris prefixLength: CIDR_PREFIX_LENGTH.
      2. Tambahkan baris cidr: "YOUR_CIDR_BLOCK" di tempatnya, seperti cidr: "10.0.10.0/27".

      Gunakan kolom cidr jika Anda mengikuti rencana IP yang ketat dan perlu menetapkan rentang alamat IP yang presisi dan dapat diprediksi. Rentang ini harus berupa subnet yang valid dan tersedia dalam subnet induk.

    • PARENT_SUBNET_NAME: nama subnet induk, seperti default-vpc-zone0-cidr. Subnet induk biasanya merupakan subnet root zonal di VPC Default.

    Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API untuk resource Subnet.

    Anda dapat terus membagi subnet zonal atau membuat subnet leaf untuk mengalokasikan alamat IP individual langsung ke beban kerja internal.

Membuat subnet leaf untuk workload individual

Anda harus membuat subnet leaf untuk mengalokasikan satu alamat IP untuk workload Anda. Subnet leaf ini harus memiliki nilai kolom type: Leaf dan harus berada di namespace project yang sama dengan resource beban kerja Anda, seperti VM atau container.

Subnet leaf Anda harus dikonfigurasi dengan nilai prefixLength 32, karena dimaksudkan untuk mengalokasikan satu alamat IP. Nilai parentReference mereferensikan subnet yang dialokasikan sebelumnya, seperti subnet zonal induk yang Anda buat di Buat subnet cabang zonal untuk workload.

  • Di jendela terminal, buat subnet leaf di server API pengelolaan:

    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: PROJECT_NAMESPACE
    spec:
      ipv4Request:
        prefixLength: 32
      parentReference:
        name: PARENT_SUBNET
        namespace: PARENT_NAMESPACE
      type: Leaf
    EOF
    

    Ganti kode berikut:

    • MANAGEMENT_API_SERVER_KUBECONFIG: jalur ke file kubeconfig server API pengelolaan Anda. Untuk mengetahui informasi selengkapnya, lihat Resource server API pengelolaan zona.
    • SUBNET_NAME: nama untuk subnet leaf.
    • PROJECT_NAMESPACE: namespace project yang sesuai dengan project tempat workload Anda berada.
    • PARENT_SUBNET: nama subnet induk tempat subnet leaf ini akan mendapatkan alamat IP-nya.
    • PARENT_NAMESPACE: salah satu dari PROJECT_NAMESPACE atau namespace platform.

Alamat IP individual Anda kini dapat digunakan oleh workload internal Anda, seperti VM dan container. Untuk mengetahui informasi selengkapnya tentang cara mengonfigurasi alamat IP untuk workload Anda, lihat Membuat VM dengan alamat IP statis atau dinamis atau Mengonfigurasi load balancer internal untuk workload container.

Mengalokasikan subnet zona dari rentang alamat IP global

Jika zona Anda tidak menyediakan alamat IP yang cukup untuk workload dari rentang alamat IP subnet root zonal yang ada, Anda dapat mengalokasikan alamat IP tambahan dari rentang root alamat IP global.

Selesaikan langkah-langkah berikut untuk jaringan VPC Default di namespace platform:

  1. Di jendela terminal, jelaskan semua subnet root VPC Default dan periksa CIDR yang tersedia:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \
        -l ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage=network-root-range
    

    Ganti GLOBAL_API_SERVER_KUBECONFIG dengan jalur ke file kubeconfig server API global. Untuk mengetahui informasi selengkapnya, lihat Resource server API global. Label bersifat konstan dan harus tetap sama.

    Outputnya mirip dengan hal berikut ini:

    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>
    

    Perhatikan nilai Status.ipv4Allocation.Available CIDRs. Berikut adalah CIDR yang tersedia yang dirujuk oleh langkah berikutnya. Dalam output sebelumnya, rentang CIDR 10.254.0.0/15 dan 10.253.0.0/16 tersedia. Output Anda mungkin menampilkan beberapa subnet. Catat semua CIDR yang tersedia dan subnet sumbernya.

  2. Bandingkan CIDR terbesar yang tersedia dari langkah sebelumnya dengan ukuran CIDR yang diperlukan untuk zona Anda. Jika CIDR terbesar yang tersedia tidak cukup besar untuk mengalokasikan subnet baru, tambahkan subnet global rentang root jaringan baru sebelum Anda melanjutkan. Perhatikan subnet induk tempat Anda memutuskan untuk mendapatkan CIDR untuk subnet baru Anda.

    Misalnya, jika Anda memerlukan CIDR /13, tetapi CIDR yang tersedia hanya mencakup /15 dan /16, Anda harus menambahkan subnet global rentang root jaringan baru. Jika memerlukan subnet /15, Anda dapat mengalokasikan subnet zona baru dari CIDR /15 yang ada.

  3. Buat subnet baru di server API global:

    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
    

    Ganti kode berikut:

    • GLOBAL_API_SERVER_KUBECONFIG: jalur ke file kubeconfig server API global. Untuk mengetahui informasi selengkapnya, lihat Resource server API global.
    • SUBNET_NAME: nama subnet baru.
    • CIDR_PREFIX_LENGTH: panjang awalan CIDR dari subnet baru yang dialokasikan secara dinamis, seperti 20. Untuk menetapkan CIDR secara statis, ganti kolom prefixLength dengan kolom cidr, lalu tetapkan blok CIDR, seperti 10.0.10.0/27.
    • ZONE_NAME: zona tempat mengalokasikan subnet, seperti zone1.
    • PARENT_SUBNET_NAME: nama subnet induk, seperti default-vpc-root-cidr, atau subnet global rentang root jaringan baru yang Anda buat.
    • ORG_NAME: nama organisasi.

    Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API untuk resource Subnet.

  4. Verifikasi bahwa subnet siap dan tersedia di server API global dengan memeriksa bahwa jenis status Ready-nya adalah true:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG get subnet --namespace platform \
        SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
    

    Outputnya mirip dengan hal berikut ini:

    status:
      conditions:
      - lastTransitionTime: "2025-06-06T07:28:48Z"
        message: IP allocation finished successfully
        observedGeneration: 1
        reason: AllocationSucceeded
        status: "True"
        type: Ready
    
  5. Verifikasi bahwa subnet zonal dibuat di server API pengelolaan zonal, dan jenis status Ready-nya adalah true:

    kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get subnet --namespace platform \
        SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
    

    Ganti MANAGEMENT_API_SERVER_KUBECONFIG dengan jalur ke file kubeconfig server API pengelolaan Anda. Untuk mengetahui informasi selengkapnya, lihat Resource server API pengelolaan zona.

    Outputnya mirip dengan hal berikut ini:

    status:
      conditions:
      - lastTransitionTime: "2025-06-06T07:29:34Z"
        message: IP allocation finished successfully
        observedGeneration: 1
        reason: AllocationSucceeded
        status: "True"
        type: Ready
    

    Dari subnet zonal baru ini, Anda dapat membuat lebih banyak subnet turunan zonal atau mengalokasikan alamat IP individual langsung ke beban kerja internal.

Membagi subnet global root tanpa alokasi zona

Untuk membagi lebih lanjut subnet global tanpa mengalokasikannya ke zona, buat subnet global dan hilangkan strategi propagasi di resource kustom Subnet. Pendekatan ini berguna jika Anda ingin terus mengatur rentang alamat IP yang dapat diakses secara global dari subnet root global tanpa mengalokasikan alamat IP ke zona.

Selesaikan langkah-langkah berikut di namespace platform untuk membagi subnet root global dalam cakupan global saja:

  1. Di jendela terminal, jelaskan semua subnet root VPC Default dan periksa CIDR yang tersedia:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \
        -l ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage=network-root-range
    

    Ganti GLOBAL_API_SERVER_KUBECONFIG dengan jalur ke file kubeconfig server API global. Untuk mengetahui informasi selengkapnya, lihat Resource server API global. Label bersifat konstan dan harus tetap sama.

    Outputnya mirip dengan hal berikut ini:

    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>
    

    Perhatikan nilai Status.ipv4Allocation.Available CIDRs. Berikut adalah CIDR yang tersedia yang dirujuk oleh langkah berikutnya. Dalam output sebelumnya, rentang CIDR 10.254.0.0/15 dan 10.253.0.0/16 tersedia. Mungkin ada beberapa subnet dalam output Anda, bergantung pada jumlah subnet root yang Anda miliki. Jadi, catat semua CIDR yang tersedia, dan catat dari subnet mana CIDR yang tersedia berasal.

  2. Bandingkan CIDR terbesar yang tersedia dari langkah sebelumnya dengan ukuran CIDR yang diperlukan untuk subnet global baru Anda. Jika CIDR terbesar yang tersedia tidak cukup besar untuk mengalokasikan subnet baru Anda, tambahkan subnet global rentang root jaringan baru sebelum Anda melanjutkan. Perhatikan subnet induk tempat Anda memutuskan untuk mendapatkan CIDR untuk subnet baru Anda.

    Misalnya, jika Anda memerlukan CIDR /13, tetapi CIDR yang tersedia hanya mencakup /15 dan /16, Anda harus membuat subnet global rentang root jaringan baru. Jika memerlukan subnet /15, Anda dapat mengalokasikan subnet global baru dari CIDR /15 yang ada.

  3. Buat subnet baru di server API global:

    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
    

    Ganti kode berikut:

    • GLOBAL_API_SERVER_KUBECONFIG: jalur ke file kubeconfig server API global. Untuk mengetahui informasi selengkapnya, lihat Resource server API global.
    • SUBNET_NAME: nama subnet baru.
    • CIDR_PREFIX_LENGTH: panjang awalan CIDR dari subnet baru yang dialokasikan secara dinamis, seperti 20. Untuk menetapkan CIDR secara statis, ganti kolom prefixLength dengan kolom cidr, lalu tetapkan blok CIDR, seperti 10.0.10.0/27.
    • PARENT_SUBNET_NAME: nama subnet induk, seperti default-vpc-root-cidr, atau subnet global rentang root jaringan baru yang Anda buat.
    • ORG_NAME: nama organisasi.

    Untuk mengetahui informasi selengkapnya, lihat dokumentasi referensi API untuk resource Subnet global.

  4. Verifikasi bahwa subnet siap dan tersedia di server API global dengan memeriksa bahwa jenis status Ready-nya adalah true:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG get subnet --namespace platform \
        SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'
    

    Outputnya mirip dengan hal berikut ini:

    status:
      conditions:
      - lastTransitionTime: "2025-06-06T07:28:48Z"
        message: IP allocation finished successfully
        observedGeneration: 1
        reason: AllocationSucceeded
        status: "True"
        type: Ready
    

Subnet global baru untuk organisasi Anda di VPC Default sudah tersedia. Anda dapat membuat subnet untuk zona tertentu dari subnet induk global baru ini.

Menambahkan subnet global rentang root jaringan baru

Subnet global dengan label ipam.gdc.goog/usage: network-root-range menghosting CIDR untuk semua zona jaringan. Jika CIDR habis, Anda harus membuat subnet rentang root jaringan baru di server API global. Anda dapat membuat beberapa subnet global root, jika diperlukan.

Untuk membuat subnet rentang root jaringan baru, selesaikan langkah-langkah berikut:

  • Di jendela terminal, buat subnet global rentang root jaringan baru untuk VPC Default di namespace platform:

    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
    

    Ganti kode berikut:

    • GLOBAL_API_SERVER_KUBECONFIG: jalur ke file kubeconfig server API global. Untuk mengetahui informasi selengkapnya, lihat Resource server API global.
    • SUBNET_NAME: nama subnet baru.
    • NEW_CIDR: CIDR baru untuk subnet. CIDR ini tidak boleh tumpang-tindih dengan CIDR apa pun di semua subnet yang ada dengan label ipam.gdc.goog/usage: network-root-range di server API global yang sama.

Subnet rentang root global baru ini dapat dibagi dalam server API global atau dialokasikan ke zona tertentu.

Langkah berikutnya