Use os seus próprios endereços IP com sub-redes externas

Esta página descreve como criar sub-redes adicionais no segmento de rede de dados da sua organização para suportar os requisitos de rede externos. Tem de adicionar sub-redes para garantir que os seus serviços externos, como a tradução de endereços de rede (NAT) de saída e os equilibradores de carga externos, têm um número suficiente de endereços IP para suportar os respetivos requisitos de rede para a ligação a redes externas fora 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 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 filial zonal para serviços externos

Pode criar uma sub-rede externa zonal a partir da sub-rede raiz zonal existente da zona para subdividir ainda mais os endereços IP no seu segmento de rede de dados 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, atribua outra sub-rede zonal a partir do intervalo de endereços IP global primeiro e, em seguida, regresse a este procedimento.

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

    kubectl -kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f - <<EOF
    apiVersion: ipam.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/network-segment: data
      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 data-external-zone0-cidr. Normalmente, a sub-rede principal é uma sub-rede raiz zonal no segmento de rede de dados.

    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 um serviço externo.

Crie uma sub-rede folha para um serviço individual

Tem de criar uma sub-rede folha para atribuir um único endereço IP ao seu serviço. 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 seu serviço externo, como um balanceador de carga externo ou um NAT de saída.

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/network-segment: data
      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 os seus serviços estão localizados.
    • 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 pelo seu serviço externo. Para mais informações sobre como configurar o endereço IP do seu serviço, consulte a documentação do serviço correspondente, como Configurar equilibradores de carga externos.

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 os seus serviços externos 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 o segmento de rede de dados no espaço de nomes platform

  1. Numa janela de terminal, descreva todas as sub-redes raiz do segmento de rede de dados e verifique os respetivos CIDRs disponíveis:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \
        --label ipam.gdc.goog/network-segment=data,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:         data-external-root-cidr
    Namespace:    platform
    Labels:       ipam.gdc.goog/allocation-preference=default
                  ipam.gdc.goog/subnet-group=data-external-root-group
                  ipam.gdc.goog/usage=network-root-range
                  ipam.gdc.goog/network-segment=data
    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:       data-external-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 criar 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/network-segment: data
        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 data-external-root-cidr, ou o novo intervalo raiz da rede da sub-rede global 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 um serviço externo.

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

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 aos seus serviços externos zonais, crie uma sub-rede global e não defina uma estratégia de propagação no recurso personalizado Subnet.

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 do segmento de rede de dados e verifique os respetivos CIDRs disponíveis:

    kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \
        --label ipam.gdc.goog/network-segment=data,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:         data-external-root-cidr
    Namespace:    platform
    Labels:       ipam.gdc.goog/allocation-preference=default
                  ipam.gdc.goog/subnet-group=data-external-root-group
                  ipam.gdc.goog/usage=network-root-range
                  ipam.gdc.goog/network-segment=data
    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:       data-external-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/network-segment: data
        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 data-external-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 no segmento de rede de dados 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 o segmento de rede de dados 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/network-segment: data
        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?