Aprovisione moradas IP para cargas de trabalho

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

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 nesta página, consulte o artigo Sub-redes e endereços IP.

Esta página destina-se aos administradores de rede no grupo de administradores da plataforma e aos programadores de aplicações no grupo de operadores de aplicações, que são responsáveis pela gestão do tráfego de rede da respetiva organização. Para mais informações, consulte a documentação sobre públicos-alvo para GDC com isolamento de ar.

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 conceder a função de IAM de administrador da organização de sub-redes (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

Pode criar uma sub-rede interna zonal a partir da sub-rede raiz zonal existente da zona para subdividir ainda mais os endereços IP na sua VPC predefinida zonal. 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 suficientes disponíveis, tem de atribuir outra sub-rede zonal a partir do intervalo de endereços IP global antes de continuar.

  • Numa janela de 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 sua nova sub-rede.

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

      Em alternativa, para atribuir um intervalo de IPs específico, siga estes passos:

      1. Remova a linha prefixLength: CIDR_PREFIX_LENGTH.
      2. Adicione uma linha cidr: "YOUR_CIDR_BLOCK" no lugar do texto, 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 recurso Subnet.

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

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

Tem de criar uma sub-rede folha para atribuir um único endereço IP à sua carga de trabalho. Esta sub-rede folha tem de ter o valor do campo type: Leaf e tem de 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 folha tem de ser configurada com um valor prefixLength de 32, porque destina-se a atribuir um único endereço IP. O 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.parentReference

  • Numa janela do terminal, crie a sub-rede 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 folha.
    • PROJECT_NAMESPACE: o espaço de nomes do projeto correspondente ao seu projeto onde as cargas de trabalho estão localizadas.
    • PARENT_SUBNET: o nome da sub-rede principal a partir da qual esta sub-rede secundária vai obter o respetivo endereço IP.
    • PARENT_NAMESPACE: PROJECT_NAMESPACE ou o espaço de nomes da plataforma.

O seu endereço IP individual está agora disponível para utilização pelas suas cargas de trabalho internas, como VMs e contentores. Para mais informações sobre como configurar o endereço IP para as suas 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 global

Se a sua zona não fornecer endereços IP suficientes para as suas 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 global.

Conclua os passos seguintes para a rede VPC predefinida no espaço de nomes platform:

  1. Numa janela de terminal, descreva todas as sub-redes de raiz da VPC predefinida e verifique os respetivos CIDRs 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 de 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 iguais.

    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 Status.ipv4Allocation.Available CIDRs. Estes são os CIDRs disponíveis a que o passo seguinte 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. O resultado pode mostrar várias sub-redes. Tome nota de todos os CIDRs disponíveis e das respetivas sub-redes de origem.

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

    Por exemplo, se precisar de um /13CIDR, mas os CIDRs disponíveis apenas incluírem /15 e /16, tem de adicionar uma nova sub-rede global de intervalo de raiz de rede. Se precisar de uma sub-rede /15, pode atribuir uma nova sub-rede zonal a partir do 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 os 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, 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 do intervalo de raiz da 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 Subnet.

  4. Verifique 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. Verifique 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 secundárias zonais 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 seu intervalo de endereços IP acessível globalmente a partir da sub-rede raiz global sem atribuir os endereços IP a uma zona.

Conclua os passos seguintes no espaço de nomes platform para dividir a sua sub-rede raiz global apenas no âmbito global:

  1. Numa janela de terminal, descreva todas as sub-redes raiz da VPC predefinida e verifique os respetivos CIDRs 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 de 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 iguais.

    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 Status.ipv4Allocation.Available CIDRs. Estes são os CIDRs disponíveis a que o passo seguinte 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 sua saída, consoante o número de sub-redes raiz que tiver. Por isso, tome nota de todos os CIDRs disponíveis e de qual sub-rede o CIDR disponível é proveniente.

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

    Por exemplo, se precisar de um /13CIDR, mas os CIDRs disponíveis apenas incluírem /15 e /16, tem de criar um novo intervalo de raiz de rede de sub-rede global. Se precisar de uma /15 sub-rede, pode atribuir a nova sub-rede global a partir do /15 CIDR 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 os 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, 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 do intervalo de raiz da 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. Verifique 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 para a 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 um novo intervalo de raiz da rede, uma sub-rede global

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

Para criar uma nova sub-rede de intervalo de raiz da rede, conclua o seguinte:

  • Numa janela de terminal, crie a nova sub-rede global do intervalo de raiz da 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 os recursos do servidor da API global.
    • SUBNET_NAME: o nome da nova sub-rede.
    • NEW_CIDR: o novo CIDR para a sub-rede. Este CIDR não pode sobrepor-se a nenhum CIDR em todas as sub-redes existentes com a etiqueta ipam.gdc.goog/usage: network-root-range no mesmo servidor da API global.

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

O que se segue?