Entrada para balanceamento de carga HTTP(S) interno

Nesta página, você vê como o Ingress do balanceamento de carga interno HTTP(S) funciona no Google Kubernetes Engine (GKE). Você também aprende a configurá-lo e usá-lo.

No GKE, o balanceador de carga interno HTTP(S) é regional, baseado em proxy e de camada 7. Com ele, é possível executar e escalonar serviços para aceitar um endereço IP de balanceamento de carga interno. Os objetos do Ingress do GKE são compatíveis com o balanceador de carga interno HTTP(S) de forma nativa por meio da criação desses objetos nos clusters do GKE.

Para informações gerais sobre como usar o Ingress do balanceamento de carga no GKE, consulte Balanceamento de carga HTTP(S) com o Ingress.

Vantagens de uso do Ingress do balanceador de carga interno HTTP(S)

Ao usar o Ingress do GKE no balanceamento de carga interno HTTP(S), você garante as vantagens a seguir:

  • Um controlador de Ingress altamente disponível e gerenciado pelo GKE.
  • Balanceamento de carga para comunicação interna entre serviços.
  • Balanceamento de carga nativo de contêiner com grupos de endpoint de rede (NEG, na sigla em inglês).
  • Roteamento de aplicativos com suporte a HTTP e HTTPS.
  • Verificações de integridade de alta fidelidade do Compute Engine para garantir serviços resilientes.
  • Proxies baseados no Envoy que são implantados sob demanda para atender às necessidades da capacidade de tráfego.

Suporte para recursos do Google Cloud

O Ingress do balanceamento de carga interno HTTP(S) é compatível com vários outros recursos.

Ambiente de rede obrigatório

O balanceador de carga HTTP(S) interno fornece um pool de proxies para sua rede. Os proxies avaliam para onde cada solicitação HTTP(S) precisa ir com base em fatores como o mapa de URL, a afinidade da sessão do BackendService e o modo de balanceamento de cada NEG de back-end.

O balanceador de carga HTTP(S) interno de uma região usa a sub-rede somente proxy dessa região na rede VPC para atribuir endereços IP internos a cada proxy criado pelo Google Cloud.

Por padrão, o endereço IP atribuído à regra de encaminhamento de um balanceador de carga vem do intervalo de sub-rede do nó atribuído pelo GKE em vez da sub-rede somente proxy. Também é possível especificar manualmente um endereço IP para a regra de encaminhamento de qualquer sub-rede ao criar a regra.

Veja no diagrama a seguir uma visão geral do fluxo de tráfego do balanceador de carga interno HTTP(S).

Diagrama do Ingress do balanceamento de carga interno HTTP(S)

Veja como funciona o balanceador de carga HTTP(S) interno:

  1. Um cliente estabelece uma conexão com o endereço IP e a porta da regra de encaminhamento do balanceador de carga.
  2. Um proxy recebe e encerra a conexão de rede do cliente.
  3. O proxy estabelece uma conexão com o endpoint apropriado (pod) em um NEG, conforme determinado pelos serviços de back-end e o mapa de URL do balanceador de carga.

Cada proxy detecta o endereço IP e a porta especificados pela regra de encaminhamento do balanceador de carga correspondente. O endereço IP de origem de cada pacote enviado de um proxy para um endpoint é o endereço IP interno atribuído a esse proxy a partir da sub-rede somente proxy.

O controlador do Ingress do GKE gerencia a implantação de regras de firewall para que você não precise implementá-las manualmente.

HTTPS (TLS) entre o balanceador de carga e o aplicativo

Um balanceador de carga HTTP(S) interno atua como um proxy entre seus clientes e o aplicativo. Os clientes podem usar HTTP ou HTTPS para a comunicação com o proxy do balanceador de carga. A conexão entre o proxy do balanceador de carga e seu aplicativo usa HTTP por padrão. No entanto, se o aplicativo for executado em um pod do GKE e puder receber solicitações HTTPS, será possível configurar o balanceador de carga para usar HTTPS quando encaminhar solicitações para o aplicativo.

Para configurar o protocolo usado entre o balanceador de carga e o aplicativo, use a anotação cloud.google.com/app-protocols no manifesto de serviço.

O manifesto do serviço a seguir especifica duas portas. A anotação especifica que um balanceador de carga HTTP(S) interno deve usar HTTP quando segmentar a porta 80 do Serviço e usar HTTPS quando segmentar a porta 443 do Serviço.

Use o campo name da porta na anotação. Não use um campo diferente, como targetPort.

apiVersion: v1
kind: Service
metadata:
  name: my-service
  annotations:
    cloud.google.com/app-protocols: '{"my-https-port":"HTTPS","my-http-port":"HTTP"}'
spec:
  type: NodePort
  selector:
    app: metrics
    department: sales
  ports:
  - name: my-https-port
    port: 443
    targetPort: 8443
  - name: my-http-port
    port: 80
    targetPort: 50001

A seguir