Provisionar endereços IP para cargas de trabalho

Crie mais sub-redes na nuvem privada virtual (VPC) interna ou na VPC padrão da sua organização para oferecer suporte aos requisitos de rede interna. Por exemplo, adicione sub-redes VPC para garantir que suas cargas de trabalho internas, como máquinas virtuais (VMs) e contêineres, tenham endereços IP suficientes.

Há várias tarefas descritas nesta página que não precisam ser concluídas em ordem:

Para uma visão geral das sub-redes e dos conceitos delas antes de concluir as tarefas em esta página, consulte Sub-redes e endereços IP.

Este documento é destinado a administradores de plataforma e operadores de aplicativos responsáveis por gerenciar o tráfego de rede da organização. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.

Antes de começar

Para receber a permissão necessária para criar sub-redes, peça ao administrador do IAM da organização para conceder a você o papel do IAM de administrador da organização de sub-redes (subnet-org-admin). Esse papel não está vinculado a um namespace.

Criar uma sub-rede de ramificação zonal para cargas de trabalho

Para subdividir ainda mais os endereços IP na VPC padrão zonal, é possível criar uma sub-rede interna zonal da sub-rede raiz zonal da zona. É necessário criar esse tipo de sub-rede no namespace platform.

Se a sub-rede raiz zonal mãe não tiver endereços IP suficientes disponíveis, aloque outra sub-rede zonal do intervalo de endereços IP global antes de continuar.

  • Em uma janela de terminal, crie a nova sub-rede zonal no servidor da API de gerenciamento:

    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
    

    Substitua:

    • MANAGEMENT_API_SERVER_KUBECONFIG: o caminho para o arquivo kubeconfig do servidor da API de gerenciamento. Para mais informações, consulte Recursos do servidor da API de gerenciamento zonal.

    • SUBNET_NAME: o nome da nova sub-rede de rede.

    • CIDR_PREFIX_LENGTH: o comprimento do prefixo da nova sub-rede, como 27. Esse campo aloca dinamicamente o próximo intervalo de endereços IP disponível desse tamanho da sub-rede mãe. Use o campo prefixLength quando você se importa apenas com o tamanho da sub-rede, não com o intervalo de endereços IP específico.

      Para atribuir um intervalo de endereços IP específico, siga estas etapas:

      1. Remova a linha prefixLength: CIDR_PREFIX_LENGTH.
      2. Adicione uma linha cidr: "YOUR_CIDR_BLOCK" no lugar dela, como cidr: "10.0.10.0/27".

      Use o campo cidr quando estiver seguindo um plano de IP rigoroso e precisar atribuir um intervalo de endereços IP preciso e previsível. Esse intervalo precisa ser uma sub-rede válida e disponível na sub-rede mãe.

    • PARENT_SUBNET_NAME: o nome da sub-rede mãe, como default-vpc-zone0-cidr. A sub-rede mãe geralmente é uma sub-rede raiz zonal na VPC padrão.

    Para mais informações, consulte a documentação de referência da API para o Subnet recurso.

    É possível continuar subdividindo as sub-redes zonais ou criar uma sub-rede folha para alocar um endereço IP individual diretamente a uma carga de trabalho interna.

Criar uma sub-rede folha para uma carga de trabalho individual

Para alocar um único endereço IP para sua carga de trabalho, é necessário criar uma sub-rede folha. Essa sub-rede folha precisa ter o valor do campo type: Leaf e residir no mesmo namespace do projeto que o recurso de carga de trabalho, como uma VM ou um contêiner.

A sub-rede folha precisa ser configurada com um valor prefixLength de 32, porque ela foi projetada para alocar um único endereço IP. O parentReference valor faz referência a uma sub-rede alocada anteriormente, como a sub-rede zonal mãe criada em Criar uma sub-rede de ramificação zonal para cargas de trabalho.

  • Em uma janela de terminal, crie a sub-rede folha no servidor da API de gerenciamento:

    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
    

    Substitua:

    • MANAGEMENT_API_SERVER_KUBECONFIG: o caminho para o arquivo kubeconfig do servidor da API de gerenciamento. Para mais informações, consulte Recursos do servidor da API de gerenciamento zonal.
    • SUBNET_NAME: o nome da sub-rede folha.
    • PROJECT_NAMESPACE: o namespace do projeto correspondente ao projeto em que as cargas de trabalho estão localizadas.
    • PARENT_SUBNET: o nome da sub-rede mãe da qual essa sub-rede folha vai originar o endereço IP.
    • PARENT_NAMESPACE: o namespace PROJECT_NAMESPACE ou platform.

O endereço IP individual agora está disponível para uso pelas cargas de trabalho internas, como VMs e contêineres. Para mais informações sobre como configurar o endereço IP para cargas de trabalho, consulte Criar uma VM com um endereço IP estático ou dinâmico ou Configurar um balanceador de carga interno para cargas de trabalho de contêiner.

Alocar uma sub-rede zonal do intervalo de endereços IP global

Se a zona não fornecer endereços IP suficientes para as cargas de trabalho do intervalo de endereços IP da sub-rede raiz zonal atual, será possível alocar mais endereços IP do intervalo raiz de endereços IP global.

Para alocar uma sub-rede zonal do intervalo de endereços IP global, conclua as etapas a seguir para a rede VPC padrão no namespace platform:

  1. Em uma janela de terminal, descreva todas as sub-redes raiz da VPC padrão e verifique os blocos CIDR disponíveis:

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

    Substitua GLOBAL_API_SERVER_KUBECONFIG pelo caminho para o arquivo kubeconfig do servidor da API global. Para mais informações, consulte Recursos do servidor da API global. Os rótulos são constantes e precisam permanecer os mesmos.

    O resultado será assim:

    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>
    

    Observe os valores Status.ipv4Allocation.Available CIDRs. Esses valores são os blocos CIDR disponíveis a que a próxima etapa faz referência. Na saída anterior, os intervalos CIDR 10.254.0.0/15 e 10.253.0.0/16 estão disponíveis. Sua saída pode mostrar várias sub-redes. Anote todos os blocos CIDR disponíveis e as sub-redes de origem.

  2. Compare o maior bloco CIDR disponível da etapa anterior com o tamanho do bloco CIDR necessário para sua zona. Se o maior bloco CIDR disponível não for grande o suficiente para alocar a nova sub-rede, adicione uma nova sub-rede global de intervalo raiz de rede antes de continuar. Anote a sub-rede mãe da qual você decide receber o bloco CIDR para a nova sub-rede.

    Por exemplo, se você precisar de um bloco CIDR /13, mas os CIDRs disponíveis só incluírem /15 e /16, será necessário adicionar uma nova sub-rede global de intervalo raiz de rede. Se você precisar de uma sub-rede /15, poderá alocar uma nova sub-rede zonal do bloco CIDR /15 atual.

  3. Crie a nova sub-rede no servidor da 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
    

    Substitua:

    • GLOBAL_API_SERVER_KUBECONFIG: o caminho para o arquivo kubeconfig do servidor da API global. Para mais informações, consulte Recursos do servidor da API global.
    • SUBNET_NAME: o nome da nova sub-rede.
    • CIDR_PREFIX_LENGTH: o comprimento do prefixo CIDR da nova sub-rede que é alocada dinamicamente, como 20. Para definir o CIDR de forma estática, substitua o campo prefixLength pelo campo cidr, e defina o bloco CIDR, como 10.0.10.0/27.
    • ZONE_NAME: a zona para a qual alocar a sub-rede, como zone1.
    • PARENT_SUBNET_NAME: o nome da sub-rede mãe, como default-vpc-root-cidr, ou a nova sub-rede global de intervalo raiz de rede criada.
    • ORG_NAME: o nome da organização.

    Para mais informações, consulte a documentação de referência da API para o Subnet recurso.

  4. Verifique se a sub-rede está pronta e disponível no servidor da API global, verificando se o tipo de status Ready é true:

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

    O resultado será assim:

    status:
      conditions:
      - lastTransitionTime: "2025-06-06T07:28:48Z"
        message: IP allocation finished successfully
        observedGeneration: 1
        reason: AllocationSucceeded
        status: "True"
        type: Ready
    
  5. Verifique se a sub-rede zonal foi criada no servidor da API de gerenciamento zonal e se o tipo de status Ready é true:

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

    Substitua MANAGEMENT_API_SERVER_KUBECONFIG pelo caminho para o arquivo kubeconfig do servidor da API de gerenciamento. Para mais informações, consulte Recursos do servidor da API de gerenciamento zonal.

    O resultado será assim:

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

    Dessa nova sub-rede zonal, é possível criar mais sub-redes filhas zonais ou alocar um endereço IP individual diretamente a uma carga de trabalho interna.

Dividir a sub-rede global raiz sem alocação de zona

Para dividir ainda mais uma sub-rede global sem alocá-la a uma zona, crie uma sub-rede global e omita a estratégia de propagação no recurso personalizado Subnet. Essa abordagem é útil se você quiser continuar organizando o intervalo de endereços IP acessível globalmente da sub-rede raiz global sem alocar os endereços IP a uma zona.

Para dividir a sub-rede raiz global no escopo global, conclua as etapas a seguir no namespace platform:

  1. Em uma janela de terminal, descreva todas as sub-redes raiz da VPC padrão e verifique os blocos CIDR disponíveis:

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

    Substitua GLOBAL_API_SERVER_KUBECONFIG pelo caminho para o arquivo kubeconfig do servidor da API global. Para mais informações, consulte Recursos do servidor da API global. Os rótulos são constantes e precisam permanecer os mesmos.

    O resultado será assim:

    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>
    

    Observe os valores Status.ipv4Allocation.Available CIDRs. Esses valores são os blocos CIDR disponíveis a que a próxima etapa faz referência. Na saída anterior, os intervalos CIDR 10.254.0.0/15 e 10.253.0.0/16 estão disponíveis. Pode haver várias sub-redes na saída, dependendo do número de sub-redes raiz que você tem. Portanto, anote todos os blocos CIDR disponíveis e de qual sub-rede o bloco CIDR disponível é.

  2. Compare o maior bloco CIDR disponível da etapa anterior com o tamanho do bloco CIDR necessário para a nova sub-rede global. Se o maior bloco CIDR disponível não for grande o suficiente para alocar a nova sub-rede, adicione uma nova sub-rede global de intervalo raiz de rede antes de continuar. Anote a sub-rede mãe da qual você decide receber o bloco CIDR para a nova sub-rede.

    Por exemplo, se você precisar de um bloco CIDR /13, mas os CIDRs disponíveis só incluírem /15 e /16, será necessário criar uma nova sub-rede global de intervalo raiz de rede. Se você precisar de uma sub-rede /15, poderá alocar a nova sub-rede global do bloco CIDR /15 atual.

  3. Crie a nova sub-rede no servidor da 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
    

    Substitua:

    • GLOBAL_API_SERVER_KUBECONFIG: o caminho para o arquivo kubeconfig do servidor da API global. Para mais informações, consulte Recursos do servidor da API global.
    • SUBNET_NAME: o nome da nova sub-rede.
    • CIDR_PREFIX_LENGTH: o comprimento do prefixo CIDR da nova sub-rede que é alocada dinamicamente, como 20. Para definir o CIDR de forma estática, substitua o campo prefixLength pelo campo cidr, e defina o bloco CIDR, como 10.0.10.0/27.
    • PARENT_SUBNET_NAME: o nome da sub-rede mãe, como default-vpc-root-cidr, ou a nova sub-rede global de intervalo raiz de rede criada.
    • ORG_NAME: o nome da organização.

    Para mais informações, consulte a documentação de referência da API para o recurso global Subnet.

  4. Verifique se a sub-rede está pronta e disponível no servidor da API global, verificando se o tipo de status Ready é true:

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

    O resultado será assim:

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

A nova sub-rede global da sua organização na VPC padrão está disponível. É possível criar uma sub-rede para uma zona específica dessa nova sub-rede mãe global.

Adicionar uma nova sub-rede global de intervalo raiz de rede

As sub-redes globais com o rótulo ipam.gdc.goog/usage: network-root-range hospedam o CIDR para todas as zonas da rede. Se o CIDR estiver esgotado, será necessário criar uma nova sub-rede de intervalo raiz de rede no servidor da API global. É possível criar várias sub-redes globais raiz, se necessário.

Para criar uma nova sub-rede de intervalo raiz de rede, siga estas etapas:

  • Em uma janela de terminal, crie a nova sub-rede global de intervalo raiz de rede para a VPC padrão no 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
    

    Substitua:

    • GLOBAL_API_SERVER_KUBECONFIG: o caminho para o arquivo kubeconfig do servidor da API global. Para mais informações, consulte Recursos do servidor da API global.
    • SUBNET_NAME: o nome da nova sub-rede.
    • NEW_CIDR: o novo CIDR da sub-rede. Esse CIDR não pode se sobrepor a nenhum CIDR em todas as sub-redes atuais com o ipam.gdc.goog/usage: network-root-range rótulo no mesmo servidor da API global.

Essa nova sub-rede de intervalo raiz global pode ser subdividida no servidor da API global ou alocada a uma zona específica.

A seguir