Ingress per bilanciatori del carico delle applicazioni interni


Questa pagina spiega come funziona Ingress per gli Application Load Balancer interni in Google Kubernetes Engine (GKE). Puoi anche scoprire come configurare e utilizzare Ingress per gli Application Load Balancer interni.

In GKE, l'Application Load Balancer interno è un bilanciatore del carico di livello 7 a livello di regione e basato su proxy che consente di eseguire e scalare i servizi dietro un indirizzo IP di bilanciamento del carico interno. Gli oggetti GKE Ingress supportano il bilanciatore del carico delle applicazioni interno in modo nativo attraverso la creazione di oggetti Ingress sui cluster GKE.

Per informazioni generali sull'utilizzo di Ingress per il bilanciamento del carico in GKE, consulta Bilanciamento del carico HTTP(S) con Ingress.

Vantaggi dell'utilizzo di Ingress per gli Application Load Balancer interni

L'utilizzo di GKE Ingress per bilanciatori del carico delle applicazioni interni offre i seguenti vantaggi:

  • Un controller Ingress ad alta disponibilità gestito da GKE.
  • Bilanciamento del carico per la comunicazione interna tra servizi.
  • Bilanciamento del carico nativo del container con gruppi di endpoint di rete (NEG).
  • Routing delle applicazioni con supporto HTTP e HTTPS.
  • Controlli di integrità di Compute Engine ad alta precisione per servizi resilienti.
  • Proxy basati su Envoy di cui viene eseguito il deployment on demand per soddisfare le esigenze di capacità di traffico.

Supporto per le funzionalità di Google Cloud

Il traffico in entrata per gli Application Load Balancer interni supporta una varietà di funzionalità aggiuntive.

Ambiente di rete richiesto per gli Application Load Balancer interni

L'Application Load Balancer interno fornisce un pool di proxy per la tua rete. I proxy valutano la posizione di ogni richiesta HTTP(S) in base a fattori quali la mappa URL, l'affinità sessione di BackendService e la modalità di bilanciamento di ciascun NEG di backend.

L'Application Load Balancer interno di una regione utilizza la subnet solo proxy per quella regione nella tua rete VPC per assegnare indirizzi IP interni a ciascun proxy creato da Google Cloud.

Per impostazione predefinita, l'indirizzo IP assegnato alla regola di forwarding di un bilanciatore del carico proviene dall'intervallo di subnet del nodo assegnato da GKE, anziché dalla subnet solo proxy. Puoi anche specificare manualmente un indirizzo IP per la regola di forwarding da qualsiasi subnet quando la crei.

Il seguente diagramma fornisce una panoramica del flusso di traffico per un Application Load Balancer interno, come descritto nel paragrafo precedente.

immagine

Ecco come funziona l'Application Load Balancer interno:

  1. Un client stabilisce una connessione all'indirizzo IP e alla porta della regola di forwarding del bilanciatore del carico.
  2. Un proxy riceve e termina la connessione di rete del client.
  3. Il proxy stabilisce una connessione all'endpoint (pod) appropriato in un NEG, come determinato dalla mappa URL del bilanciatore del carico e dai servizi di backend.

Ogni proxy rimane in ascolto sull'indirizzo IP e sulla porta specificati dalla regola di forwarding del bilanciatore del carico corrispondente. L'indirizzo IP di origine di ogni pacchetto inviato da un proxy a un endpoint è l'indirizzo IP interno assegnato a quel proxy dalla subnet solo proxy.

HTTPS (TLS) tra il bilanciatore del carico e la tua applicazione

Un bilanciatore del carico delle applicazioni interno agisce da proxy tra i client e la tua applicazione. I client possono utilizzare HTTP o HTTPS per comunicare con il proxy del bilanciatore del carico. La connessione dal proxy del bilanciatore del carico all'applicazione utilizza HTTP per impostazione predefinita. Tuttavia, se l'applicazione viene eseguita in un pod GKE e può ricevere richieste HTTPS, puoi configurare il bilanciatore del carico in modo che utilizzi HTTPS quando inoltra le richieste alla tua applicazione.

Per configurare il protocollo utilizzato tra il bilanciatore del carico e l'applicazione, utilizza l'annotazione cloud.google.com/app-protocols nel manifest del servizio.

Il seguente manifest del servizio specifica due porte. L'annotazione specifica che un bilanciatore del carico delle applicazioni interno deve utilizzare HTTP quando ha come target la porta 80 del servizio e utilizzare HTTPS quando ha come target la porta 443 del servizio.

Devi utilizzare il campo name della porta nell'annotazione. Non utilizzare un altro campo, ad esempio 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

Passaggi successivi