Aprovisione endereços IP para cargas de trabalho

Crie sub-redes adicionais na nuvem virtual privada (VPC) interna ou na VPC predefinida da sua organização para suportar os requisitos de rede internos. Por exemplo, adicione sub-redes de VPC para garantir que as cargas de trabalho internas, como máquinas virtuais (VMs) e contentores, têm endereços IP suficientes.

Existem várias tarefas descritas nesta página que não se destinam a ser concluídas por ordem:

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

Este documento destina-se a administradores de plataformas e operadores de aplicações responsáveis pela gestão do tráfego de rede da respetiva organização. Para mais informações, consulte Públicos-alvo para a documentação isolada do GDC.

Antes de começar

Para receber a autorização de que precisa para criar sub-redes, peça ao administrador de IAM da organização para lhe atribuir a função de IAM de administrador de sub-redes da organização (subnet-org-admin). Esta função não está associada a um espaço de nomes.

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

Para subdividir ainda mais os endereços IP na sua VPC predefinida zonal, pode criar uma sub-rede interna zonal a partir da sub-rede raiz zonal existente da zona. Tem de criar este tipo de sub-rede no espaço de nomes platform.

Se a sub-rede raiz zonal principal não tiver endereços IP disponíveis suficientes, atribua outra sub-rede zonal a partir do intervalo de endereços IP globais antes de continuar.

  • Numa janela do terminal, crie a nova sub-rede zonal no servidor da API de gestão:

    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 o seguinte:

    • MANAGEMENT_API_SERVER_KUBECONFIG: o caminho para o ficheiro kubeconfig do servidor da API de gestão. Para mais informações, consulte o artigo Recursos do servidor da API de gestão zonal.

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

    • CIDR_PREFIX_LENGTH: o comprimento do prefixo da nova sub-rede, como 27. Este campo atribui dinamicamente o próximo intervalo de endereços IP disponível desse tamanho a partir da sub-rede principal. Use o campo prefixLength quando só se preocupar com o tamanho da sub-rede e não com o respetivo intervalo de endereços IP específico.

      Para atribuir um intervalo de endereços IP específico, siga estes passos:

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

      Use o campo cidr quando estiver a seguir um plano de IP rigoroso e precisar de atribuir um intervalo de endereços IP preciso e previsível. Este intervalo tem de ser uma sub-rede válida e disponível na sub-rede principal.

    • PARENT_SUBNET_NAME: o nome da sub-rede principal, como default-vpc-zone0-cidr. Normalmente, a sub-rede principal é uma sub-rede raiz zonal na VPC predefinida.

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

    Pode continuar a subdividir as sub-redes zonais ou criar uma sub-rede de folha para atribuir um endereço IP individual diretamente a uma carga de trabalho interna.

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

Para atribuir um único endereço IP à sua carga de trabalho, tem de criar uma sub-rede de folha. Esta sub-rede de folha tem de ter o valor do campo type: Leaf e residir no mesmo espaço de nomes do projeto que o recurso da carga de trabalho, como uma VM ou um contentor.

A sub-rede de folha tem de estar configurada com um valor prefixLength de 32, porque se destina a atribuir um único endereço IP. O parentReference valor faz referência a uma sub-rede atribuída anteriormente, como a sub-rede zonal principal que criou em Crie uma sub-rede de ramificação zonal para cargas de trabalho.

  • Numa janela do terminal, crie a sub-rede de folha no servidor da API de gestão:

    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 o seguinte:

    • MANAGEMENT_API_SERVER_KUBECONFIG: o caminho para o ficheiro kubeconfig do servidor da API de gestão. Para mais informações, consulte o artigo Recursos do servidor da API de gestão zonal.
    • SUBNET_NAME: o nome da sub-rede de folha.
    • PROJECT_NAMESPACE: o espaço de nomes do projeto correspondente ao projeto onde as cargas de trabalho estão localizadas.
    • PARENT_SUBNET: o nome da sub-rede principal a partir da qual esta sub-rede de folha vai obter o respetivo endereço IP.
    • PARENT_NAMESPACE: o espaço de nomes PROJECT_NAMESPACE ou platform.

O endereço IP individual está agora disponível para ser usado pelas cargas de trabalho internas, como VMs e contentores. Para mais informações sobre como configurar o endereço IP das cargas de trabalho, consulte os artigos Crie uma VM com um endereço IP estático ou dinâmico ou Configure um balanceador de carga interno para cargas de trabalho de contentores.

Atribua uma sub-rede zonal a partir do intervalo de endereços IP globais

Se a sua zona não fornecer endereços IP suficientes para as cargas de trabalho a partir do intervalo de endereços IP da sub-rede raiz zonal existente, pode atribuir endereços IP adicionais a partir do intervalo raiz de endereços IP globais.

Para atribuir uma sub-rede zonal a partir do intervalo de endereços IP globais, conclua os seguintes passos para a rede VPC predefinida no espaço de nomes platform:

  1. Numa janela do terminal, descreva todas as sub-redes raiz da VPC predefinida e verifique os respetivos 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 ficheiro kubeconfig do servidor da API global. Para mais informações, consulte o artigo Recursos do servidor da API global. As etiquetas são constantes e têm de permanecer as mesmas.

    O resultado é semelhante ao seguinte:

    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>
    

    Tenha em atenção os valores de Status.ipv4Allocation.Available CIDRs. Estes valores são os blocos CIDR disponíveis aos quais o passo seguinte faz referência. No resultado anterior, os intervalos CIDR 10.254.0.0/15 e 10.253.0.0/16 estão disponíveis. O resultado pode mostrar várias sub-redes. Tenha em atenção todos os blocos CIDR disponíveis e as respetivas sub-redes de origem.

  2. Compare o maior bloco CIDR disponível do passo anterior com o tamanho do bloco CIDR necessário para a sua zona. Se o maior bloco CIDR disponível não for grande o suficiente para atribuir a nova sub-rede, adicione uma nova sub-rede global de intervalo raiz de rede antes de continuar. Tenha em atenção a sub-rede principal a partir da qual decide obter o bloco CIDR para a nova sub-rede.

    Por exemplo, se precisar de um bloco CIDR /13, mas os CIDRs disponíveis incluírem apenas /15 e /16, tem de adicionar uma nova sub-rede global de intervalo raiz de rede. Se precisar de uma sub-rede /15, pode atribuir uma nova sub-rede zonal a partir do bloco CIDR /15 existente.

  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 o seguinte:

    • GLOBAL_API_SERVER_KUBECONFIG: o caminho para o ficheiro 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 é atribuído dinamicamente, como 20. Para definir o CIDR estaticamente, substitua o campo prefixLength pelo campo cidr, e, em seguida, defina o bloco CIDR, como 10.0.10.0/27.
    • ZONE_NAME: a zona para a qual atribuir a sub-rede, como zone1.
    • PARENT_SUBNET_NAME: o nome da sub-rede principal, como default-vpc-root-cidr, ou a nova sub-rede global de intervalo raiz de rede que criou.
    • 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. Valide se a sub-rede está pronta e disponível no servidor da API global verificando se o respetivo tipo de estado Ready é true:

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

    O resultado é semelhante ao seguinte:

    status:
      conditions:
      - lastTransitionTime: "2025-06-06T07:28:48Z"
        message: IP allocation finished successfully
        observedGeneration: 1
        reason: AllocationSucceeded
        status: "True"
        type: Ready
    
  5. Valide se a sub-rede zonal foi criada no servidor da API de gestão zonal e se o respetivo tipo de estado 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 ficheiro kubeconfig do servidor da API de gestão. Para mais informações, consulte o artigo Recursos do servidor da API de gestão zonal.

    O resultado é semelhante ao seguinte:

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

    A partir desta nova sub-rede zonal, pode criar mais sub-redes zonais secundárias ou atribuir um endereço IP individual diretamente a uma carga de trabalho interna.

Divida a sub-rede global raiz sem atribuição de zona

Para dividir ainda mais uma sub-rede global sem a atribuir a uma zona, crie uma sub-rede global e omita a estratégia de propagação no recurso personalizado Subnet. Esta abordagem é útil se quiser continuar a organizar o intervalo de endereços IP acessível globalmente a partir da sub-rede raiz global sem atribuir os endereços IP a uma zona.

Para dividir a sub-rede raiz global no âmbito global, conclua os seguintes passos no espaço de nomes platform:

  1. Numa janela do terminal, descreva todas as sub-redes raiz da VPC predefinida e verifique os respetivos 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 ficheiro kubeconfig do servidor da API global. Para mais informações, consulte o artigo Recursos do servidor da API global. As etiquetas são constantes e têm de permanecer as mesmas.

    O resultado é semelhante ao seguinte:

    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>
    

    Tenha em atenção os valores de Status.ipv4Allocation.Available CIDRs. Estes valores são os blocos CIDR disponíveis aos quais o passo seguinte faz referência. No resultado 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 no resultado, consoante o número de sub-redes raiz que tem. Por isso, tenha em atenção todos os blocos CIDR disponíveis e a sub-rede de origem do bloco CIDR disponível.

  2. Compare o maior bloco CIDR disponível do passo 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 atribuir a nova sub-rede, adicione uma nova sub-rede global de intervalo raiz de rede antes de continuar. Tenha em atenção a sub-rede principal a partir da qual decide obter o bloco CIDR para a nova sub-rede.

    Por exemplo, se precisar de um bloco CIDR /13, mas os CIDRs disponíveis incluírem apenas /15 e /16, tem de criar uma nova sub-rede global de intervalo raiz de rede. Se precisar de uma sub-rede /15, pode atribuir a nova sub-rede global a partir do bloco CIDR /15 existente.

  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 o seguinte:

    • GLOBAL_API_SERVER_KUBECONFIG: o caminho para o ficheiro 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 é atribuído dinamicamente, como 20. Para definir o CIDR estaticamente, substitua o campo prefixLength pelo campo cidr, e, em seguida, defina o bloco CIDR, como 10.0.10.0/27.
    • PARENT_SUBNET_NAME: o nome da sub-rede principal, como default-vpc-root-cidr, ou a nova sub-rede global de intervalo raiz de rede que criou.
    • 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. Valide se a sub-rede está pronta e disponível no servidor da API global verificando se o respetivo tipo de estado Ready é true:

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

    O resultado é semelhante ao seguinte:

    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 predefinida está disponível. Pode criar uma sub-rede para uma zona específica a partir desta nova sub-rede principal global.

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

As sub-redes globais com a etiqueta ipam.gdc.goog/usage: network-root-range alojam o CIDR de todas as zonas da rede. Se o CIDR estiver esgotado, tem de criar uma nova sub-rede de intervalo raiz de rede no servidor da API global. Se necessário, pode criar várias sub-redes globais raiz.

Para criar uma nova sub-rede de intervalo raiz de rede, conclua os seguintes passos:

  • Numa janela do terminal, crie a nova sub-rede global de intervalo raiz de rede para a VPC predefinida no espaço de nomes 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 o seguinte:

    • GLOBAL_API_SERVER_KUBECONFIG: o caminho para o ficheiro 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. Este CIDR não pode sobrepor-se a nenhum CIDR em todas as sub-redes existentes com a ipam.gdc.goog/usage: network-root-range etiqueta no mesmo servidor da API global.

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

O que se segue?