Criar uma sub-rede global para balanceamento de carga externo

Nesta página, mostramos como criar uma sub-rede global no Google Distributed Cloud (GDC) isolado por ar e usar essa sub-rede para um balanceador de carga externo (ELB).

Com as sub-redes globais, é possível configurar sub-redes que usam operações de balanceamento de carga externo em várias zonas da sua organização do GDC. O balanceamento de carga traz os benefícios de melhor desempenho, confiabilidade e disponibilidade de aplicativos e serviços ao distribuir o tráfego de rede em vários servidores. Para mais informações sobre sub-redes globais para balanceamento de carga, consulte Sobre sub-redes para balanceamento de carga.

Esta página é destinada a desenvolvedores do grupo de operadores de aplicativos que querem gerenciar o balanceamento de carga da organização. Para mais informações, consulte a documentação sobre públicos-alvo para GDC air-gapped.

Antes de começar

Para criar uma sub-rede global e configurá-la para ELBs, você precisa ter o seguinte:

  • Ser proprietário do projeto em que você está configurando o balanceador de carga. Para mais informações, consulte Criar um projeto.
  • Os papéis necessários de identidade e acesso:

    • Peça ao administrador do IAM da organização para conceder a você o papel de administrador do balanceador de carga (load-balancer-admin).
    • Peça ao administrador do IAM da organização para conceder a você o papel de administrador do balanceador de carga global (global-load-balancer-admin).
    • Peça ao administrador do IAM da organização para conceder a você o papel de administrador da organização de sub-rede (subnet-org-admin).
    • Peça ao administrador do IAM da organização para conceder a você o papel de administrador do projeto de sub-rede (subnet-project-admin).

    Para mais informações, consulte Descrições de papéis predefinidos.

Criar uma sub-rede global principal

A sub-rede global principal criada nesta seção serve como o pool de endereços IP de onde os endereços IP do ELB são originados. A sub-rede precisa incluir o rótulo ipam.gdc.goog/network-segment: data. É possível especificar o pai da sub-rede usando o campo spec.parentReference.name. Você tem duas opções para configurar o CIDR dessa sub-rede principal:

Para mais informações sobre a diferença entre configurações de CIDR estáticas e dinâmicas, consulte Configuração de CIDR estática e dinâmica.

Criar uma sub-rede usando uma configuração CIDR estática

Use uma configuração CIDR estática quando precisar de controle preciso sobre seu espaço de endereços IP. Essa sub-rede tem o tipo Branch. Para mais informações sobre os tipos de sub-rede raiz, ramificação e folha, consulte Hierarquia de sub-rede.

Para criar uma sub-rede global principal com uma configuração CIDR estática, adicione o bloco CIDR escolhido ao campo spec.ipv4Request.cidr:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
apiVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
  labels:
    ipam.gdc.goog/network-segment: data
  name: ELB_PARENT_SUBNET_NAME
  namespace: platform
spec:
  ipv4Request:
    cidr: STATIC_CIDR
  parentReference:
    name: PARENT_NAME
    namespace: platform
  propagationStrategy: None
  type: Branch
EOF

Substitua:

  • GLOBAL_API_SERVER: o caminho kubeconfig do servidor da API de gerenciamento global. Para mais informações, consulte Servidores de API globais e zonais. Se você ainda não gerou um arquivo kubeconfig para o servidor da API, consulte Fazer login para mais detalhes.
  • ELB_PARENT_SUBNET_NAME: o nome escolhido para sua sub-rede global principal do ELB.
  • STATIC_CIDR: o bloco CIDR específico que você quer alocar para essa sub-rede principal, como 10.0.10.0/27.
  • PARENT_NAME: o nome da sub-rede principal atual em que esta nova sub-rede será criada.

Para configurar essa sub-rede para trabalhar com ELBs, crie uma sub-rede folha para o ELB.

Criar uma sub-rede usando uma configuração CIDR dinâmica

A configuração dinâmica de CIDR aloca automaticamente um bloco CIDR disponível de um tamanho especificado da sub-rede principal. Isso simplifica o gerenciamento de endereços IP, principalmente em ambientes maiores. Essa sub-rede tem o tipo Branch. Para mais informações sobre os tipos de sub-rede raiz, ramificação e folha, consulte Hierarquia de sub-rede. Para criar uma sub-rede global principal com um CIDR dinâmico, configure o campo spec.ipv4Request.prefixLength com o tamanho de prefixo escolhido:

kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
piVersion: ipam.global.gdc.goog/v1
kind: Subnet
metadata:
  labels:
  ipam.gdc.goog/network-segment: data
  name: ELB_PARENT_SUBNET_NAME
  namespace: platform
spec:
  ipv4Request:
    prefixLength: PREFIX_LENGTH
  parentReference:
    name: PARENT_NAME
    namespace: platform
  propagationStrategy: None
  type: Branch
EOF

Substitua:

  • ELB_PARENT_SUBNET_NAME: o nome escolhido para a sub-rede principal do ELB, como lb-global-lancer-elb-subnet.
  • STATIC_CIDR: o bloco CIDR específico que você quer usar, como 10.0.10.0/27. Essa variável só é aplicável à configuração estática de CIDR.
  • PARENT_NAME: o nome da sub-rede principal atual de onde essa nova sub-rede é criada, como default-vpc-workload-cidr.
  • PREFIX_LENGTH: o comprimento do prefixo escolhido para o CIDR alocado dinamicamente, como 27. Essa variável só é aplicável à configuração dinâmica de CIDR.

Para configurar essa sub-rede para trabalhar com ELBs, crie uma sub-rede folha para o ELB.

Criar uma sub-rede leaf para o ELB

Depois de configurar a sub-rede global principal, crie uma sub-rede folha para alocar um único endereço IP para o serviço ELB global. Essa sub-rede folha precisa ter um valor de campo type de Leaf e estar no mesmo namespace de projeto que os recursos do balanceador de carga, como ForwardingRule, BackendService e Backend.

Para criar a sub-rede folha e vinculá-la ao ELB, siga estas etapas:

  1. Crie uma sub-rede folha com um valor prefixLength de 32, já que ela foi projetada para alocar um único endereço IP. O valor parentReference faz referência à sub-rede global principal criada anteriormente:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: ipam.global.gdc.goog/v1
    kind: Subnet
    metadata:
      labels:
        ipam.gdc.goog/allocation-preference: default
        ipam.gdc.goog/network-segment: data
      name: ELB_IP_SUBNET_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      ipv4Request:
        prefixLength: 32
      parentReference:
        name: PARENT_REF
        namespace: platform
      type: Leaf
    EOF
    

    Substitua:

    • ELB_IP_SUBNET_NAME: o nome escolhido para a sub-rede folha, como lb-project-elb-ip.
    • PROJECT_NAMESPACE: o namespace do Kubernetes correspondente ao seu projeto em que os objetos do ELB estão localizados, por exemplo, lb-project.
    • PARENT_REF: o nome da sub-rede principal de que esta sub-rede folha extrai o endereço IP, como a sub-rede global principal criada anteriormente.
  2. Conecte a sub-rede folha recém-criada, que contém o endereço IP alocado, ao recurso ForwardingRuleExternal do ELB. No recurso ForwardingRuleExternal, atualize o campo spec.cidrRef.name para referenciar o nome da sub-rede folha criada na etapa anterior:

    kubectl --kubeconfig GLOBAL_API_SERVER apply -f - <<EOF
    apiVersion: networking.global.gdc.goog/v1
    kind: ForwardingRuleExternal
    metadata:
      name: FRI_NAME
      namespace: PROJECT_NAMESPACE
    spec:
      ports:
        - port: PORT
          protocol: PROTOCOL
      backendServiceRef:
        name: BES_NAME
      cidrRef:
        name: LEAF_SUBNET_NAME
    EOF
    

    Substitua:

    • FRI_NAME: o nome escolhido para o objeto ForwardingRuleExternal, como nginx-elb-static-fr.
    • PORT: o número da porta em que o ELB detecta o tráfego de entrada, como 80.
    • PROTOCOL: o protocolo de rede usado pelo ELB, como TCP ou UDP.
    • BES_NAME: o nome do BackendService associado a esse recurso ForwardingRuleExternal, como nginx-bes.
    • LEAF_SUBNET_NAME: o nome da sub-rede folha criada na etapa anterior, como lb-project-elb-ip.