Questo documento mostra come instradare il traffico da GKE su AWS tramite un proxy HTTP/HTTPS. Specifichi 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 tramite Google Cloud Connect
- Per eseguire l'agente Connect
- Per scaricare le immagini da Container Registry
Limitazioni
- I campi
httpProxyehttpsProxynon supportano gli URL che iniziano conhttps://. Devi utilizzarehttp://. Le richieste alla porta 443 utilizzano HTTPS. - Devi impostare i valori per
httpProxy,httpsProxyenoProxy. - Potresti dover aggiungere altri domini, indirizzi IP o CIDR al campo
noProxy. Ti consigliamo di aggiungere l'intervallo IP VPC. A partire dalla versione 1.22 di Google Kubernetes Engine, GKE su AWS aggiunge automaticamente il CIDR dell'indirizzo del pod e il CIDR dell'indirizzo del servizio.
Prerequisiti
Questa sezione descrive i prerequisiti da applicare prima di utilizzare un proxy.
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 cui GKE su AWS richiede endpoint VPC, insieme 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 | Control plane |
| 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 AWS . Le opzioni che imposti durante la creazione degli endpoint VPC dipendono dalla configurazione 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 server proxy.
Il gruppo di sicurezza deve consentire l'accesso in uscita dai gruppi di sicurezza del control plane e del node pool all'indirizzo e alla porta del proxy. Salva l'ID di questo gruppo di sicurezza, ad esempio sg-12345678.
| Tipo | Protocollo | Porta di origine | Porta di destinazione | Indirizzo |
|---|---|---|---|---|
| In uscita | TCP | Porta proxy | Porta proxy | Gruppo di sicurezza proxy |
Lista consentita del proxy
Affinché GKE su AWS possa connettersi 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 si trova il cluster GKE su AWS. Specifica us-west1 o un'altra
regione supportata.
Aggiornare i ruoli IAM AWS
Affinché GKE su AWS possa leggere la configurazione del proxy da AWS Secrets Manager,
devi aggiungere secretsmanager:GetSecretValue al ruolo del
control plane
e al ruolo del node pool del cluster.
Per aggiungere questa autorizzazione, aggiungila al criterio del control plane e del pool di nodi. Per saperne di più, consulta Modificare i criteri IAM.
Creare un file di configurazione del proxy
La configurazione del proxy viene archiviata 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 tabella seguente 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" |
Sì |
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"
|
Sì |
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 è richiesto un sottodominio. Un singolo asterisco * ignora tutta la configurazione del proxy. | "1.2.3.4,10.0.0.0/16,example.com,.site.com" |
Sì |
Per creare il file di configurazione, crea un file JSON che contenga i valori per le chiavi
httpProxy,noProxyehttpsProxyfacoltative.{ "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 proxyNO_PROXY_ADDRESSES: elenco separato da virgole di blocchi CIDR e URL, ad esempio10.0.0.0/16,http://example.com
Salva il file da utilizzare nella sezione seguente.
Crea un secret con questi dati JSON come secret in AWS Secrets Manager utilizzando lo strumento a riga di comando
aws.aws secretsmanager create-secret \ --name SECRET_NAME \ --secret-string file://PROXY_CONFIGURATION_FILESostituisci quanto segue:
SECRET_NAME: il nome del nuovo secretPROXY_CONFIGURATION_FILE: il percorso del file di configurazione del proxy.
L'output include l'Amazon Resource Name (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 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 clusterPROXY_SECRET_ARN: l'ARN del secret che contiene le impostazioni del proxy, ad esempioarn:aws::secretsmanager:us-east-2:111122223333:secret:example/ExampleSecret-jiObOVPROXY_SECRET_VERSION: l'ID versione dei secret, ad esempioEXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE
Aggiornare la configurazione del proxy
Puoi aggiornare la configurazione del proxy per un control plane del cluster o un node pool. Per aggiornare l'ARN della configurazione del proxy, devi prima aggiornare il ruolo IAM AWS del control plane o del pool di nodi.
Aggiornare i ruoli IAM AWS
Prima di modificare l'ARN in cui è archiviata la configurazione del proxy, devi
verificare che il ruolo del control plane
del cluster
e il ruolo del node pool
abbiano accesso in lettura all'ARN del secret. Se l'istruzione IAM con l'autorizzazione secretsmanager:GetSecretValue è limitata a ARN di risorse specifiche, aggiungi il nuovo ARN del secret a questo elenco prima di aggiornare la configurazione del proxy.
Aggiornare 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 clusterGOOGLE_CLOUD_LOCATION: la regione Google Cloud supportata che gestisce il clusterPROXY_SECRET_ARN: l'ARN del secret che contiene le impostazioni del proxyPROXY_SECRET_VERSION: l'ID versione dei secret, ad esempioEXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE
Aggiornare 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 nodiCLUSTER_NAME: il nome del clusterGOOGLE_CLOUD_LOCATION: la regione Google Cloud supportata che gestisce il clusterPROXY_SECRET_ARN: l'ARN del secret che contiene le impostazioni del proxyPROXY_SECRET_VERSION: l'ID versione dei secret, ad esempioEXAMPLE1-90ab-cdef-fedc-ba987EXAMPLE
Rimuovere la configurazione del proxy
Puoi rimuovere la configurazione del proxy dal control plane del cluster o dai node pool. Queste operazioni sono indipendenti. La rimozione della configurazione dal control plane non la rimuove dai node pool del cluster.
Rimuovere la configurazione del proxy del control plane
Per rimuovere la configurazione del proxy del control plane 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 clusterGOOGLE_CLOUD_LOCATION: laregione supportata che gestisce il cluster, ad esempious-west1Google Cloud
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 nodiCLUSTER_NAME: il nome del clusterGOOGLE_CLOUD_LOCATION: laregione supportata che gestisce il cluster, ad esempious-west1Google Cloud
Passaggi successivi
- Leggi ulteriori informazioni su come creare un cluster.