Utilizzo di un proxy HTTP

Questo documento illustra come instradare il traffico da GKE su AWS tramite un proxy HTTP/HTTPS. Specifica la configurazione del proxy quando crei un cluster.

Panoramica

GKE su AWS può instradare il traffico internet in uscita tramite un proxy per i seguenti motivi:

  • Per registrare i cluster Google Cloud tramite Connect
  • Per eseguire l'agente Connect
  • Per scaricare le immagini da Container Registry

Limitazioni

  • I campi httpProxy e httpsProxy non supportano gli URL che iniziano con https://. Devi utilizzare http://. Le richieste alla porta 443 utilizzano HTTPS.
  • Devi impostare i valori per httpProxy, httpsProxy e noProxy.
  • Potresti dover aggiungere altri domini, IP o CIDR al campo noProxy. Ti consigliamo di aggiungere l'intervallo IP della VPC. A partire dalla versione 1.22 di Google Kubernetes Engine, GKE su AWS aggiunge automaticamente l'indirizzo CIDR del pod e l'indirizzo CIDR del servizio.

Prerequisiti

Questa sezione descrive i prerequisiti da applicare prima di utilizzare un proxy.

Abilita gli endpoint VPC

Prima di configurare un proxy, devi creare endpoint VPC per l'installazione di GKE su AWS.

Gli endpoint VPC consentono alle risorse nelle subnet private di accedere ai servizi AWS senza accesso alla rete internet pubblica.

La tabella seguente elenca i servizi AWS per i quali GKE su AWS richiede endpoint VPC, oltre al tipo di endpoint e ai gruppi di sicurezza che richiedono l'accesso all'endpoint.

Servizio Tipo di endpoint Gruppi di sicurezza
Scalabilità automatica Interfaccia Control plane, node pool
EC2 Interfaccia Control plane, node pool
EFS Interfaccia Piano di controllo
Bilanciamento del carico Interfaccia Control plane, node pool
Key Management Service Interfaccia Control plane, node pool
S3 Gateway Control plane, node pool
Secrets Manager Interfaccia Control plane, node pool
Security Token Service (STS) Interfaccia Control plane, node pool

Puoi creare endpoint dalla console VPC di AWS. Le opzioni impostate durante la creazione degli endpoint VPC dipendono dalla configurazione del VPC.

Definire un gruppo di sicurezza

GKE su AWS deve essere in grado di connettersi al server proxy per scaricare i componenti software. Crea o individua un gruppo di sicurezza AWS che consenta le connessioni in uscita al tuo server proxy. Il gruppo di sicurezza deve consentire l'accesso in uscita dal piano di controllo e ai gruppi di sicurezza del pool di nodi all'indirizzo e alla porta del proxy. Salva l'ID di questo gruppo di sicurezza, ad esempio sg-12345678.

Tipo Protocollo Dalla porta Per la porta Indirizzo
In uscita TCP Porta proxy Porta proxy Gruppo di sicurezza proxy

Lista consentita proxy

Affinché GKE on AWS si connetta ai servizi Google Cloud, il server proxy deve consentire il traffico verso i seguenti domini.

.gcr.io
cloudresourcemanager.googleapis.com
container.googleapis.com
gkeconnect.googleapis.com
gkehub.googleapis.com
oauth2.googleapis.com
securetoken.googleapis.com
storage.googleapis.com
sts.googleapis.com
www.googleapis.com
servicecontrol.googleapis.com
logging.googleapis.com
monitoring.googleapis.com
opsconfigmonitoring.googleapis.com
GCP_LOCATION-gkemulticloud.googleapis.com

Sostituisci GCP_LOCATION con la Google Cloud regione in cui risiede il tuo cluster GKE Enterprise. Specifica us-west1 o un'altra regione supportata.

Aggiorna i ruoli IAM AWS

Affinché GKE on AWS legga la configurazione del proxy da AWS Secrets Manager, devi aggiungere secretsmanager:GetSecretValue al ruolo del piano di controllo e al ruolo del pool di nodi del tuo cluster.

Per aggiungere questa autorizzazione, aggiungila al criterio del control plane e del pool di nodi. Per maggiori informazioni, consulta Modificare i criteri IAM.

Crea un file di configurazione del proxy

La configurazione proxy viene memorizzata in un secret di AWS Secrets Manager come stringa JSON. Puoi passare questa configurazione allo strumento a riga di comando aws come file. Questa sezione descrive come creare il file.

La seguente tabella descrive i contenuti di questo file.

Campo Descrizione Esempi Obbligatorio
httpProxy Un URL del server proxy. Il valore deve includere un nome host/indirizzo IP e, facoltativamente, una porta, un nome utente e una password. "http://user:password@10.184.37.42:80"
"10.184.37.42"
httpsProxy Un URL proxy per il traffico HTTPS criptato. L'URL httpProxy verrà utilizzato se httpsProxy ha un valore vuoto. "http://10.101.16.31:80"
noProxy Un elenco separato da virgole di URL da escludere dal proxy. Ogni valore può essere un indirizzo IP, un intervallo CIDR, un nome di dominio o il carattere asterisco (*). I domini specificati con un punto iniziale (ad esempio ".google.com") indicano che è necessario un sottodominio. Un asterisco singolo * ignora tutta la configurazione del proxy. "1.2.3.4,10.0.0.0/16,example.com,.site.com"
  1. Per creare il file di configurazione, crea un file JSON contenente i valori per le chiavi httpProxy, noProxy e httpsProxy facoltative.

    {
      "httpProxy": "AUTHENTICATION_URL",
      "httpsProxy": "AUTHENTICATION_URL",
      "noProxy": "NO_PROXY_ADDRESSES"
    }
    

    Sostituisci quanto segue:

    • AUTHENTICATION_URL: URL codificato contenente il nome utente e la password del proxy
    • NO_PROXY_ADDRESSES: elenco separato da virgole di blocchi CIDR e URL, ad esempio 10.0.0.0/16,http://example.com

    Salva il file da utilizzare nella sezione seguente.

  2. Crea un secret con questi dati JSON in AWS Secrets Manager utilizzando lo strumento a riga di comando aws.

    aws secretsmanager create-secret \
    --name SECRET_NAME \
    --secret-string file://PROXY_CONFIGURATION_FILE
    

    Sostituisci quanto segue:

    • SECRET_NAME: il nome del nuovo secret
    • PROXY_CONFIGURATION_FILE: il percorso del file di configurazione del proxy.

    L'output include il nome della risorsa Amazon (ARN) e i contenuti del secret. Ora puoi fare riferimento a questo secret quando crei un cluster.

Creare un cluster che utilizza un proxy

Per configurare GKE su AWS in modo che utilizzi un proxy HTTP per la connettività in uscita, segui questi passaggi:

Segui i passaggi descritti in Creare un cluster e passa i flag proxy-secret-arn e proxy-secret-version-id.

gcloud container aws clusters create CLUSTER_NAME \
  --proxy-secret-arn=PROXY_SECRET_ARN \
  --proxy-secret-version-id=PROXY_SECRET_VERSION \

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster
  • PROXY_SECRET_ARN: l'ARN del secret che contiene le impostazioni del proxy, ad esempio arn:aws::secretsmanager:us-east-2:111122223333:secret:example/ExampleSecret-jiObOV
  • PROXY_SECRET_VERSION: l'ID versione dei secret, ad esempio EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE

Aggiorna la configurazione del proxy

Puoi aggiornare la configurazione del proxy per un piano di controllo del cluster o un pool di nodi. Per aggiornare l'ARN di configurazione del proxy, devi prima aggiornare il ruolo IAM AWS del piano di controllo o del pool di nodi.

Aggiorna i ruoli IAM AWS

Prima di modificare l'ARN in cui è archiviata la configurazione del proxy, devi verificare che il ruolo del piano di controllo e il ruolo del node pool del tuo cluster abbiano accesso in lettura all'ARN della secret. Se l'istruzione IAM con l'autorizzazione secretsmanager:GetSecretValue è limitata ad ARN di risorse specifici, aggiungi il nuovo ARN del secret a quell'elenco prima di aggiornare la configurazione del proxy.

Aggiorna la configurazione del proxy del cluster

Per aggiornare la configurazione del proxy del cluster, utilizza Google Cloud CLI.

gcloud container aws clusters update  CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --proxy-secret-arn=PROXY_SECRET_ARN \
    --proxy-secret-version-id=PROXY_SECRET_VERSION

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster
  • GOOGLE_CLOUD_LOCATION: la regione Google Cloud supportata che gestisce il tuo cluster
  • PROXY_SECRET_ARN: l'ARN del secret che contiene le impostazioni del proxy
  • PROXY_SECRET_VERSION: l'ID versione dei secret, ad esempio EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE

Aggiorna la configurazione del proxy del pool di nodi

Per aggiornare la configurazione del proxy del pool di nodi, utilizza Google Cloud CLI.

gcloud container aws node-pools update NODE_POOL_NAME
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --proxy-secret-arn=PROXY_SECRET_ARN \
    --proxy-secret-version-id=PROXY_SECRET_VERSION

Sostituisci quanto segue:

  • NODE_POOL_NAME: il nome del pool di nodi
  • CLUSTER_NAME: il nome del cluster
  • GOOGLE_CLOUD_LOCATION: la regione Google Cloud supportata che gestisce il tuo cluster
  • PROXY_SECRET_ARN: l'ARN del secret che contiene le impostazioni del proxy
  • PROXY_SECRET_VERSION: l'ID versione dei secret, ad esempio EXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE

Rimuovere la configurazione del proxy

Puoi rimuovere la configurazione del proxy dal piano di controllo o dai pool di nodi del cluster. Queste operazioni sono indipendenti. La rimozione della configurazione dal piano di controllo non la rimuove dai pool di nodi del cluster.

Rimuovi la configurazione del proxy del control plane

Per rimuovere la configurazione del proxy del piano di controllo del cluster, utilizza Google Cloud CLI.

gcloud container aws clusters update  CLUSTER_NAME \
  --location GOOGLE_CLOUD_LOCATION \
  --clear-proxy-config

Sostituisci quanto segue:

  • CLUSTER_NAME: il nome del cluster
  • GOOGLE_CLOUD_LOCATION: la regione Google Cloud supportata che gestisce il tuo cluster, ad esempio us-west1

Rimuovere la configurazione del proxy del pool di nodi

Per rimuovere la configurazione del proxy da un pool di nodi, utilizza Google Cloud CLI.

gcloud container aws node-pools update NODE_POOL_NAME
  --cluster CLUSTER_NAME \
  --location GOOGLE_CLOUD_LOCATION \
  --clear-proxy-config

Sostituisci quanto segue:

  • NODE_POOL_NAME: il nome del pool di nodi
  • CLUSTER_NAME: il nome del cluster
  • GOOGLE_CLOUD_LOCATION: la regione Google Cloud supportata che gestisce il tuo cluster, ad esempio us-west1

Passaggi successivi