Crie uma sub-rede global para o balanceamento de carga externo

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

As sub-redes globais permitem-lhe configurar sub-redes que podem usar operações de equilíbrio de carga externas em várias zonas na sua organização do GDC. O balanceamento de carga oferece as vantagens de um desempenho, uma fiabilidade e uma disponibilidade melhorados das aplicações e dos serviços através da distribuição do tráfego de rede por vários servidores. Para mais informações sobre as sub-redes globais para o equilíbrio de carga, consulte o artigo Acerca das sub-redes para o equilíbrio de carga.

Esta página destina-se a programadores no grupo de operadores de aplicações que querem gerir o equilíbrio de carga para a respetiva organização. Para mais informações, consulte a documentação sobre públicos-alvo para o GDC com isolamento de ar.

Antes de começar

Para criar uma sub-rede global e configurá-la para ELBs, tem de ter o seguinte:

  • Ser proprietário do projeto para o qual está a configurar o equilibrador de carga. Para mais informações, consulte Crie um projeto.
  • As funções de identidade e acesso necessárias:

    • Peça ao administrador de IAM da organização para lhe conceder a função de administrador do Load Balancer (load-balancer-admin).
    • Peça ao administrador de IAM da organização para lhe conceder a função de administrador do Global Load Balancer (global-load-balancer-admin).
    • Peça ao administrador de IAM da organização para lhe conceder a função de administrador da organização de sub-redes (subnet-org-admin).
    • Peça ao administrador de IAM da organização para lhe conceder a função de administrador do projeto de sub-rede (subnet-project-admin).

    Para mais informações, consulte as descrições de funções predefinidas.

Crie uma sub-rede global principal

A sub-rede global principal que cria nesta secção serve como o conjunto de endereços IP a partir do qual os seus endereços IP do ELB são provenientes. A sub-rede tem de incluir a etiqueta ipam.gdc.goog/network-segment: data. Pode especificar o elemento principal da sub-rede usando o campo spec.parentReference.name. Tem duas opções para configurar o CIDR para esta sub-rede principal:

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

Crie uma sub-rede com uma configuração CIDR estática

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

Para criar uma sub-rede principal global 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 o seguinte:

  • GLOBAL_API_SERVER: o caminho kubeconfig do servidor de gestão global. Para mais informações, consulte os servidores da API globais e zonais. Se ainda não gerou um ficheiro kubeconfig para o servidor da API, consulte Iniciar sessão para ver detalhes.
  • ELB_PARENT_SUBNET_NAME: o nome escolhido para a sub-rede principal global do ELB.
  • STATIC_CIDR: o bloco CIDR específico que quer atribuir a esta sub-rede principal, como 10.0.10.0/27.
  • PARENT_NAME: o nome da sub-rede principal existente a partir da qual esta nova sub-rede é criada.

Para configurar esta sub-rede de modo a funcionar com ELBs, tem de criar uma sub-rede folha para o ELB.

Crie uma sub-rede com uma configuração CIDR dinâmica

A configuração dinâmica de CIDR atribui automaticamente um bloco de CIDR disponível de um tamanho especificado da sub-rede principal. Isto simplifica a gestão de endereços IP, especialmente em ambientes maiores. Esta sub-rede tem um tipo de Branch. Para mais informações sobre os tipos de sub-redes raiz, ramificação e folha, consulte o artigo Hierarquia de sub-redes. Para criar uma sub-rede principal global com um CIDR dinâmico, configure o campo spec.ipv4Request.prefixLength com o comprimento do 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 o seguinte:

  • 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 quer usar, como 10.0.10.0/27. Esta variável só é aplicável à configuração CIDR estática.
  • PARENT_NAME: o nome da sub-rede principal existente a partir da qual esta nova sub-rede é criada, como default-vpc-workload-cidr.
  • PREFIX_LENGTH: o comprimento do prefixo escolhido para o CIDR alocado dinamicamente, como 27. Esta variável só é aplicável à configuração CIDR dinâmica.

Para configurar esta sub-rede de modo a funcionar com ELBs, tem de criar uma sub-rede folha para o ELB.

Crie uma sub-rede folha para o ELB

Depois de configurar a sub-rede principal global, tem de criar uma sub-rede secundária para atribuir um único endereço IP ao serviço ELB global. Esta sub-rede folha tem de ter um valor do campo type de Leaf e tem de residir no mesmo espaço de nomes do projeto que os recursos do equilibrador de carga, como ForwardingRule, BackendService e Backend.

Para criar a sub-rede folha e associá-la ao ELB, siga estes passos:

  1. Crie uma sub-rede folha com um valor prefixLength de 32, uma vez que se destina a atribuir 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 o seguinte:

    • ELB_IP_SUBNET_NAME: o nome escolhido para a sub-rede de folha, como lb-project-elb-ip.
    • PROJECT_NAMESPACE: o espaço de nomes do Kubernetes correspondente ao seu projeto onde os objetos ELB estão localizados, por exemplo, lb-project.
    • PARENT_REF: o nome da sub-rede principal a partir da qual esta sub-rede folha obtém o respetivo endereço IP, como a sub-rede global principal que criou anteriormente.
  2. Associe a sub-rede folha recém-criada, que contém o endereço IP atribuído, ao recurso ForwardingRuleExternal do seu ELB. No recurso ForwardingRuleExternal, atualize o campo spec.cidrRef.name para referenciar o nome da sub-rede folha que criou no passo 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 o seguinte:

    • FRI_NAME: o nome escolhido para o objeto ForwardingRuleExternal, como nginx-elb-static-fr.
    • PORT: o número da porta na qual o ELB escuta o tráfego recebido, como 80.
    • PROTOCOL: o protocolo de rede que o ELB usa, como TCP ou UDP.
    • BES_NAME: o nome do BackendService associado a este recurso ForwardingRuleExternal, como nginx-bes.
    • LEAF_SUBNET_NAME: o nome da sub-rede folha que criou no passo anterior, como lb-project-elb-ip.