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 (VM) e contentores, têm um número suficiente de endereços IP para suportar os respetivos requisitos de rede na 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 que lhe conceda 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 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 CIDR da sub-rede recém-criada 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-zone0-cidr. Normalmente, a sub-rede principal é uma sub-rede raiz zonal na VPC predefinida.

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

    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 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, uma vez que se destina a atribuir um único endereço IP. O valor parentReference 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 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/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
    

    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 se encontram as cargas de trabalho.
    • PARENT_SUBNET: o nome da sub-rede principal a partir da qual esta sub-rede folha vai obter o respetivo endereço IP.

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 Implemente cargas de trabalho de máquinas virtuais ou Implemente 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 \
        --label 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 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>
    

    Tome nota dos valores Status.ipv4Allocation.Available CIDRs como os CIDRs disponíveis, que serão referenciados no passo seguinte. 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 elevado que anotou no passo anterior com o tamanho do CIDR que tem de atribuir à 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 o novo intervalo global da raiz da rede da sub-rede que criou.
    • ORG_NAME: o nome da organização.

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

  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 para as suas cargas de trabalho usarem, crie uma sub-rede global e não defina uma 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 \
        --label 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 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>
    

    Tome nota dos valores Status.ipv4Allocation.Available CIDRs como os CIDRs disponíveis, que serão referenciados no passo seguinte. 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 elevado que anotou no passo anterior com o tamanho do CIDR que precisa de atribuir à 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 uma nova sub-rede global de intervalo de raiz de rede. 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 o novo intervalo global da raiz da rede da sub-rede que criou.
    • ORG_NAME: o nome da organização.

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

  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 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?