Utilizzo di un proxy con GKE su AWS

Questo argomento mostra come instradare il traffico dal servizio di gestione GKE su AWS e da Connect tramite un proxy HTTP/HTTPS.

GKE su AWS richiede l'accesso a internet per i seguenti motivi:

  • Il servizio di gestione registra i cluster utente con Connect.
  • I cluster utente eseguono l'agente Connect.
  • Tutti i nodi del servizio di gestione e del cluster utente scaricano le immagini da Container Registry.

Puoi instradare questo traffico tramite un proxy HTTP o HTTPS. A partire da GKE su AWS 1.8, puoi configurare le singole impostazioni del proxy per il servizio di gestione e per ciascuno dei tuoi cluster. Per ulteriori informazioni su come modificare le impostazioni del proxy, vedi Modifica delle impostazioni del proxy di un cluster.

Dichiara le impostazioni del proxy in un file JSON a cui viene fatto riferimento in anthos-gke.yaml.

Prerequisiti

Prima di configurare GKE su AWS per utilizzare un proxy, devi attivare gli endpoint VPC AWS, definire un gruppo di sicurezza per il proxy e consentire le connessioni in uscita a determinati servizi Google Cloud .

Per utilizzare un proxy HTTP, i cluster utente devono eseguire Kubernetes 1.17 o versioni successive.

Abilitare 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 a internet pubblico.

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

Servizio Tipo di endpoint Gruppi di sicurezza
Scalabilità automatica Interfaccia Gestione, control plane, node pool
EC2 Interfaccia Gestione, control plane, node pool
Bilanciamento del carico Interfaccia Gestione, control plane, node pool
Key Management Service Interfaccia Gestione, control plane, node pool
S3 Gateway Gestione, control plane, node pool
Security Token Service (STS) Interfaccia Gestione, control plane, node pool

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

Definisci un gruppo di sicurezza

I componenti di GKE su AWS devono essere in grado di connettersi al server proxy. 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 dai gruppi di sicurezza di gestione, control plane e pool di nodi all'indirizzo e alla porta del proxy. Salva l'ID di questo gruppo di sicurezza (ad esempio, sg-12345678).

Tipo Protocollo Dal porto Aggiungi porta Indirizzo
In uscita TCP Porta proxy Porta proxy Gruppo di sicurezza proxy

Consenti le connessioni in uscita ai servizi Google Cloud

Per consentire a GKE su AWS di connettersi ai servizi Google Cloud , il server proxy deve consentire il traffico verso i seguenti domini:

  • gkeconnect.googleapis.com
  • gkehub.googleapis.com
  • oauth2.googleapis.com
  • storage.googleapis.com
  • www.googleapis.com
  • gcr.io
  • k8s.gcr.io
  • EC2-REGION.ec2.archive.ubuntu.com

Sostituisci EC2-REGION con la regione AWS EC2 in cui viene eseguita l'installazione di GKE su AWS. Ad esempio, us-west-1.ec2.archive.ubuntu.com/.

Se utilizzi Cloud Service Mesh con Prometheus e Kiali, consenti l'accesso in uscita dai seguenti domini:

  • docker.io
  • quay.io

Creazione del file JSON di configurazione del proxy

Il file JSON di configurazione del proxy contiene un oggetto con tre coppie chiave/valore, con i nomi delle chiavi httpProxy, httpsProxy e noProxy. I nomi utente e le password vengono criptati con la tua chiave KMS di AWS prima di essere applicati al server.

{
  "httpProxy": "HTTP_PROXY",
  "httpsProxy": "HTTPS_PROXY",
  "noProxy": "NO_PROXY"
}

Sostituisci quanto segue:

  • HTTP_PROXY con l'indirizzo del server proxy per instradare le richieste HTTP.
  • HTTPS_PROXY con il server proxy per instradare le richieste HTTPS.
  • NO_PROXY con un elenco facoltativo di IP, intervalli CIDR e domini in cui non viene utilizzato il proxy.

Per ulteriori informazioni, consulta Riferimento alla configurazione. Ad esempio, la seguente configurazione utilizza un proxy all'indirizzo 10.0.0.254 ed esclude una serie di siti.

{
  "httpProxy": "http://user:password@10.0.0.254:80",
  "httpsProxy": "http://user:password@10.0.0.254:443",
  "noProxy": "localhost,127.0.0.1,169.254.169.254,10.0.0.0/16,example.com"
}

Aggiunta del proxy ad anthos-gke.yaml

Configura AWSManagementService seguendo questi passaggi:

  1. Passa alla directory con la configurazione di GKE su AWS. Hai creato questa directory durante l'installazione del servizio di gestione.

    cd anthos-aws

  2. Apri anthos-gke.yaml in un editor di testo. Aggiungi un valore per spec.proxy come nell'esempio seguente.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSManagementService
    metadata:
      name: management
    spec:
      version: aws-1.14.1-gke.0
      proxy: PROXY_JSON_FILE
      securityGroupIDs:
      - SECURITY_GROUP_ID
      ...
    

    Sostituisci quanto segue:

    • PROXY_JSON_FILE con il percorso relativo della configurazione JSON del proxy.
    • SECURITY_GROUP_ID con l'ID di un gruppo di sicurezza con accesso al server proxy.

    Salva il file.

  3. Esegui anthos-gke aws management init per generare un file anthos-gke.status.yaml con una configurazione aggiuntiva. Il comando init convalida anche l'oggetto AWSManagementService nel file anthos-gke.yaml.

    anthos-gke aws management init
    
  4. Esegui anthos-gke aws management apply per aggiornare il servizio di gestione su AWS.

    anthos-gke aws management apply
    
  5. A questo punto, crea un cluster di utenti. Includi il gruppo di sicurezza del proxy in AWSCluster e AWSNodePool di spec.controlPlane.securityGroupIDs e spec.securityGroupIDs, rispettivamente. Il cluster ha quindi accesso al proxy.

Riferimento alla configurazione

Campo Descrizione Esempio 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"
httpsProxy Un URL proxy per il traffico HTTPS criptato. Se non viene fornito httpsProxy, verrà utilizzato l'URL httpProxy. "http://user:password@10.101.16.31:80" No
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 es. ".google.com") indicano che è necessario un sottodominio. Un singolo asterisco * indica che non deve essere eseguito alcun proxy. "1.2.3.4,10.0.0.0/16,example.com,.site.com" No

Passaggi successivi

Per ulteriori informazioni sul completamento di un'installazione di GKE su AWS, consulta quanto segue:

Per informazioni sulla modifica delle impostazioni proxy del cluster, vedi: