Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come configurare i cluster del servizio Azure Kubernetes per l'utilizzo di un proxy HTTP per l'accesso a Internet in uscita.
I cluster del servizio Azure Kubernetes distribuiti in reti virtuali gestite o personalizzate hanno determinate dipendenze in uscita necessarie per funzionare correttamente, creando problemi negli ambienti che richiedono l'indirizzamento dell'accesso a Internet tramite proxy HTTP. Non era possibile per i nodi eseguire il bootstrap della configurazione, delle variabili di ambiente e dei certificati necessari per accedere ai servizi Internet.
Questa funzionalità proxy HTTP aggiunge il supporto del proxy HTTP ai cluster AKS, fornendo un'interfaccia semplice con cui è possibile assicurare il traffico di rete richiesto da AKS in ambienti dipendenti da proxy. Con questa funzionalità, sia i nodi del servizio Azure Kubernetes che i pod sono configurati per l'uso del proxy HTTP. La funzionalità abilita anche l'installazione di un'autorità di certificazione attendibile nei nodi come parte del bootstrap di un cluster. Soluzioni più complesse potrebbero richiedere la creazione di una catena di certificati volta a stabilire comunicazioni sicure nella rete.
Limitazioni e considerazioni
Non sono supportati gli scenari seguenti:
- Diverse configurazioni proxy per pool di nodi
- Autenticazione Utente/Password
- Autorità di certificazione personalizzate (CA) per la comunicazione del server API
- Cluster del servizio Azure Kubernetes con pool di nodi Windows
- Pool di nodi che usano set di disponibilità per macchine virtuali (VMAS)
- Uso di * come carattere jolly collegato a un’estensione di dominio per noProxy
httpProxy, httpsProxy e trustedCa non hanno alcun valore per impostazione predefinita. I pod vengono inseriti con le seguenti variabili di ambiente:
HTTP_PROXYhttp_proxyHTTPS_PROXYhttps_proxyNO_PROXYno_proxy
Per disabilitare l'inserimento delle variabili di ambiente proxy, è necessario annotare il pod con "kubernetes.azure.com/no-http-proxy-vars":"true".
Operazioni preliminari
È possibile utilizzare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Introduzione ad Azure Cloud Shell.
Se preferisci eseguire localmente i comandi di riferimento della CLI, installa l'Azure CLI. Se si esegue in Windows o macOS, è consigliabile eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker. Per altre informazioni, vedere Come eseguire l'interfaccia della riga di comando di Azure in un contenitore Docker.
Se usi un'installazione locale, accedi all'interfaccia della riga di comando di Azure usando il comando az login. Per completare il processo di autenticazione, seguire i passaggi visualizzati nel terminale. Per altre opzioni di accesso, vedere Eseguire l'autenticazione ad Azure con l'interfaccia della riga di comando di Azure.
Quando ti viene richiesto, installa l'estensione Azure CLI al primo utilizzo. Per altre informazioni sulle estensioni, vedere Usare e gestire le estensioni con l'interfaccia della riga di comando di Azure.
Esegui az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, avviare az upgrade.
Creare un file di configurazione con valori proxy HTTP
Creare un file e specificare i valori per httpProxy, httpsProxy e noProxy. Se l'ambiente lo richiede, specificare un valore per trustedCa.
Lo schema per il file di configurazione è simile al seguente:
{
"httpProxy": "string",
"httpsProxy": "string",
"noProxy": [
"string"
],
"trustedCa": "string"
}
Esaminare i requisiti per ogni parametro:
-
httpProxy: URL proxy da usare per la creazione di connessioni HTTP all'esterno del cluster. Lo schema URL deve esserehttp. -
httpsProxy: URL proxy da usare per la creazione di connessioni HTTPS all'esterno del cluster. Se non è specificato,httpProxyè usato sia per connessioni HTTP che HTTPS. -
noProxy: elenco di nomi di dominio di destinazione, domini, indirizzi IP o altri CIDR di rete per escludere i proxy. -
trustedCa: stringa che include il contenuto alternativo del certificato della CAbase64 encoded. Attualmente, solo il formatoPEMè supportato.
Importante
Per garantire la compatibilità con i componenti basati su Go che fanno parte del sistema Kubernetes, il certificato deve supportare Subject Alternative Names(SANs) anziché i certificati Common Name deprecati.
Le applicazioni differiscono su come rispettare le variabili di ambiente http_proxy, https_proxy e no_proxy. Curl e Python non supportano CIDR in no_proxy, mentre Ruby lo supporta.
Input di esempio:
{
"httpProxy": "http://myproxy.server.com:8080/",
"httpsProxy": "https://myproxy.server.com:8080/",
"noProxy": [
"localhost",
"127.0.0.1"
],
"trustedCA": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUgvVENDQmVXZ0F3SUJB...S0tLS0="
}
Creare un cluster con una configurazione proxy HTTP usando l'interfaccia della riga di comando di Azure
È possibile configurare un cluster AKS con una configurazione proxy HTTP durante la creazione del cluster.
Usare il comando
az aks createe passare la configurazione sotto forma di file JSON.az aks create \ --name $clusterName \ --resource-group $resourceGroup \ --http-proxy-config aks-proxy-config.json \ --generate-ssh-keysIl cluster deve inizializzarsi con il proxy HTTP configurato nei nodi.
Verificare che la configurazione del proxy HTTP si trova nei pod e nei nodi controllando che le variabili di ambiente contengano i valori appropriati per
http_proxy,https_proxyeno_proxyusando ilkubectl describe podcomando .kubectl describe {any pod} -n kube-systemPer verificare che le variabili proxy siano impostate nei pod, è possibile controllare le variabili di ambiente presenti nei nodi.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Aggiornare una configurazione proxy HTTP
È possibile aggiornare le configurazioni proxy HTTP nei cluster esistenti, tra cui:
- Aggiornamento di un cluster esistente per abilitare il proxy HTTP e aggiungere una nuova configurazione proxy HTTP.
- Aggiornamento di un cluster esistente per modificare una configurazione proxy HTTP.
Considerazioni sull'aggiornamento del proxy HTTP
Il --http-proxy-config parametro deve essere impostato su un nuovo file JSON con valori aggiornati per httpProxy, httpsProxy, noProxye trustedCa , se necessario. L'aggiornamento inserisce nuove variabili di ambiente nei pod con i nuovi valori httpProxy, httpsProxy o noProxy. Affinché le app rilevino l'aggiornamento, i pod devono essere ruotati, poiché i valori delle variabili di ambiente vengono inseriti da un webhook di ammissione mutevole.
Nota
Se si passa a un nuovo proxy, è necessario che il nuovo proxy sia già esistente affinché l'aggiornamento venga completato correttamente. Al termine dell'aggiornamento, è possibile eliminare il proxy precedente.
Aggiornare un cluster per aggiornare o abilitare il proxy HTTP
Abilitare o aggiornare le configurazioni proxy HTTP in un cluster esistente usando il
az aks updatecomando .Si supponga, ad esempio, di aver creato un nuovo file con la stringa con codifica base64 del nuovo certificato CA denominato aks-proxy-config-2.json. È possibile aggiornare la configurazione del proxy nel cluster con il comando seguente:
az aks update --name $clusterName --resource-group $resourceGroup --http-proxy-config aks-proxy-config-2.json
Attenzione
AKS ricrea automaticamente l'immagine di tutti i pool di nodi nel cluster quando si aggiorna la configurazione del proxy nel cluster utilizzando il comando az aks update. È possibile usare Budget per l’interruzione dei pod (PDB) per proteggere le interruzioni dei pod critici durante la ricreazione dell'immagine.
Verificare che la configurazione del proxy HTTP si trova nei pod e nei nodi controllando che le variabili di ambiente contengano i valori appropriati per
http_proxy,https_proxyeno_proxyusando ilkubectl describe podcomando .kubectl describe {any pod} -n kube-systemPer verificare che le variabili proxy siano impostate nei pod, è possibile controllare le variabili di ambiente presenti nei nodi.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Disabilitare il proxy HTTP in un cluster esistente (anteprima)
Installare l'estensione aks-preview
Installare l'estensione CLI di Azure utilizzando il comando
aks-preview.Importante
Le funzionalità di anteprima di AKS sono disponibili su base self-service, su scelta. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime del servizio Azure Kubernetes sono parzialmente coperte dal supporto clienti con la massima diligenza possibile. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:
az extension add --name aks-previewEseguire l'aggiornamento alla versione più recente dell'estensione usando il comando
az extension update. La disabilitazione del proxy HTTP richiede almeno 18.0.0b13.az extension update --name aks-preview
Registrare il flag di funzionalità DisableHTTPProxyPreview
Registrare il flag della funzionalità
DisableHTTPProxyPreviewusando il comandoaz feature register.az feature register --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewVerificare lo stato della registrazione usando il comando
az feature show. Sono necessari alcuni minuti per visualizzare lo stato Registered.az feature show --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewQuando lo stato riflette Registrato, aggiornare la registrazione del provider di risorse Microsoft.ContainerService usando il comando
az provider register.az provider register --namespace Microsoft.ContainerService
Aggiornare il cluster per disabilitare il proxy HTTP (anteprima)
Aggiorna il tuo cluster per disabilitare il proxy HTTP utilizzando il comando
az aks updatecon il flag--disable-http-proxy.az aks update --name $clusterName --resource-group $resourceGroup --disable-http-proxy
Attenzione
AKS ricrea automaticamente l'immagine di tutti i pool di nodi nel cluster quando si aggiorna la configurazione del proxy nel cluster utilizzando il comando az aks update. È possibile usare Budget per l’interruzione dei pod (PDB) per proteggere le interruzioni dei pod critici durante la ricreazione dell'immagine.
Verificare che il proxy HTTP sia disabilitato convalidando che la configurazione del proxy HTTP non sia impostata nei pod e nei nodi usando il
kubectl describe podcomando .kubectl describe {any pod} -n kube-systemPer verificare che le variabili proxy non siano impostate nei pod, è possibile controllare le variabili di ambiente presenti nei nodi.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Riabilitare il proxy HTTP in un cluster esistente
Quando si crea un cluster, il proxy HTTP è abilitato per impostazione predefinita. Dopo aver disabilitato il proxy HTTP in un cluster, la configurazione del proxy viene salvata nel database, ma le variabili proxy vengono rimosse dai pod e dai nodi.
Per riabilitare il proxy HTTP in un cluster esistente, usare il az aks update comando con il --enable-http-proxy flag .
az aks update --name $clusterName --resource-group $resourceGroup --enable-http-proxy
Attenzione
AKS ricrea automaticamente l'immagine di tutti i pool di nodi nel cluster quando si aggiorna la configurazione del proxy nel cluster utilizzando il comando az aks update. È possibile usare Budget per l’interruzione dei pod (PDB) per proteggere le interruzioni dei pod critici durante la ricreazione dell'immagine.
Importante
Se si dispone di una configurazione proxy HTTP nel cluster prima di disabilitare, la configurazione del proxy HTTP esistente viene applicata automaticamente quando si riabilita il proxy HTTP in tale cluster. È consigliabile verificare la configurazione per assicurarsi che soddisfi i requisiti correnti prima di procedere. Se si vuole modificare la configurazione del proxy HTTP dopo aver riabilitare il proxy HTTP, seguire la procedura per aggiornare la configurazione del proxy HTTP in un cluster esistente.
Configurare una configurazione proxy HTTP usando un modello di Azure Resource Manager (ARM)
È possibile distribuire un cluster del servizio Azure Kubernetes con un proxy HTTP usando un modello di Resource Manager.
Esaminare i requisiti per ogni parametro:
-
httpProxy: URL proxy da usare per la creazione di connessioni HTTP all'esterno del cluster. Lo schema URL deve esserehttp. -
httpsProxy: URL proxy da usare per la creazione di connessioni HTTPS all'esterno del cluster. Se non è specificato,httpProxyè usato sia per connessioni HTTP che HTTPS. -
noProxy: elenco di nomi di dominio di destinazione, domini, indirizzi IP o altri CIDR di rete per escludere i proxy. -
trustedCa: stringa che include il contenuto alternativo del certificato della CAbase64 encoded. Attualmente, solo il formatoPEMè supportato.
Importante
Per garantire la compatibilità con i componenti basati su Go che fanno parte del sistema Kubernetes, il certificato deve supportare
Subject Alternative Names (SANs)anziché i certificati Common Name deprecati.Le applicazioni differiscono su come rispettare le variabili di ambiente
http_proxy,https_proxyeno_proxy. Curl e Python non supportano CIDR inno_proxy, mentre Ruby lo supporta.-
Creare un modello con parametri proxy HTTP. Nel modello, specificare i valori per
httpProxy,httpsProxyenoProxy. Se necessario, specificare un valore pertrustedCa. Lo stesso schema usato per la distribuzione dell'interfaccia della riga di comando esiste nella definizioneMicrosoft.ContainerService/managedClustersin"properties", come illustrato nell'esempio seguente:"properties": { ..., "httpProxyConfig": { "enabled": "true", "httpProxy": "string", "httpsProxy": "string", "noProxy": [ "string" ], "trustedCa": "string" } }Distribuire il modello di ARM con la configurazione del proxy HTTP. Il cluster deve essere inizializzato con il proxy HTTP configurato nei nodi.
Aggiornare una configurazione proxy HTTP
È possibile aggiornare le configurazioni proxy HTTP nei cluster esistenti, tra cui:
- Aggiornamento di un cluster esistente per abilitare il proxy HTTP e aggiungere una nuova configurazione proxy HTTP.
- Aggiornamento di un cluster esistente per modificare una configurazione proxy HTTP.
Considerazioni sull'aggiornamento del proxy HTTP
Il --http-proxy-config parametro deve essere impostato su un nuovo file JSON con valori aggiornati per httpProxy, httpsProxy, noProxye trustedCa , se necessario. L'aggiornamento inserisce nuove variabili di ambiente nei pod con i nuovi valori httpProxy, httpsProxy o noProxy. Affinché le app rilevino l'aggiornamento, i pod devono essere ruotati, poiché i valori delle variabili di ambiente vengono inseriti da un webhook di ammissione mutevole.
Nota
Se si passa a un nuovo proxy, è necessario che il nuovo proxy sia già esistente affinché l'aggiornamento venga completato correttamente. Al termine dell'aggiornamento, è possibile eliminare il proxy precedente.
Eseguire l'aggiornamento di un modello di ARM per configurare il proxy HTTP
Nel modello specificare nuovi valori per
httpProxy,httpsProxyenoProxy. Se necessario, specificare un valore pertrustedCa.Lo stesso schema usato per la distribuzione dell'interfaccia della riga di comando esiste nella definizione
Microsoft.ContainerService/managedClustersin"properties", come illustrato nell'esempio seguente:"properties": { ..., "httpProxyConfig": { "enabled": "true", "httpProxy": "string", "httpsProxy": "string", "noProxy": [ "string" ], "trustedCa": "string" } }Distribuire il modello di ARM con la configurazione del proxy HTTP aggiornata.
Attenzione
AKS ricrea automaticamente l'immagine di tutti i pool di nodi nel cluster quando si aggiorna la configurazione del proxy nel cluster utilizzando il comando az aks update. È possibile usare Budget per l’interruzione dei pod (PDB) per proteggere le interruzioni dei pod critici durante la ricreazione dell'immagine.
Verificare che la configurazione del proxy HTTP si trova nei pod e nei nodi controllando che le variabili di ambiente contengano i valori appropriati per
http_proxy,https_proxyeno_proxyusando ilkubectl describe podcomando .kubectl describe {any pod} -n kube-systemPer verificare che le variabili proxy siano impostate nei pod, è possibile controllare le variabili di ambiente presenti nei nodi.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Disabilitare il proxy HTTP in un cluster esistente usando un modello ARM (Preview)
Installare l'estensione aks-preview
Installare l'estensione CLI di Azure utilizzando il comando
aks-preview.Importante
Le funzionalità di anteprima di AKS sono disponibili su base self-service, su scelta. Le anteprime vengono fornite "così come sono" e "come disponibili" e sono escluse dai contratti di servizio e dalla garanzia limitata. Le anteprime del servizio Azure Kubernetes sono parzialmente coperte dal supporto clienti con la massima diligenza possibile. Di conseguenza, queste funzionalità non sono destinate all'uso in produzione. Per altre informazioni, vedere gli articoli di supporto seguenti:
az extension add --name aks-previewEseguire l'aggiornamento alla versione più recente dell'estensione usando il comando
az extension update. La disabilitazione del proxy HTTP richiede almeno 18.0.0b13.az extension update --name aks-preview
Registrare il flag di funzionalità DisableHTTPProxyPreview
Registrare il flag della funzionalità
DisableHTTPProxyPreviewusando il comandoaz feature register.az feature register --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewVerificare lo stato della registrazione usando il comando
az feature show. Sono necessari alcuni minuti per visualizzare lo stato Registered.az feature show --namespace Microsoft.ContainerService --name DisableHTTPProxyPreviewQuando lo stato riflette Registrato, aggiornare la registrazione del provider di risorse Microsoft.ContainerService usando il comando
az provider register.az provider register --namespace Microsoft.ContainerService
Aggiornare il cluster per disabilitare il proxy HTTP
Aggiorna il modello ARM del cluster per disabilitare il proxy HTTP impostando
enabledsufalse. Lo stesso schema usato per la distribuzione dell'interfaccia della riga di comando esiste nella definizioneMicrosoft.ContainerService/managedClustersin"properties", come illustrato nell'esempio seguente:"properties": { ..., "httpProxyConfig": { "enabled": "false", } }Distribuire il modello ARM con il proxy HTTP disabilitato.
Attenzione
AKS ricrea automaticamente l'immagine di tutti i pool di nodi nel cluster quando si aggiorna la configurazione del proxy nel cluster utilizzando il comando az aks update. È possibile usare Budget per l’interruzione dei pod (PDB) per proteggere le interruzioni dei pod critici durante la ricreazione dell'immagine.
Verificare che il proxy HTTP sia disabilitato convalidando che la configurazione del proxy HTTP non sia impostata nei pod e nei nodi usando il
kubectl describe podcomando .kubectl describe {any pod} -n kube-systemPer verificare che le variabili proxy non siano impostate nei pod, è possibile controllare le variabili di ambiente presenti nei nodi.
kubectl get nodes kubectl node-shell {node name} cat /etc/environment
Riabilitare il proxy HTTP in un cluster esistente
Quando si crea un cluster, il proxy HTTP è abilitato per impostazione predefinita. Dopo aver disabilitato il proxy HTTP in un cluster, non è più possibile aggiungere configurazioni proxy HTTP a tale cluster.
Se si vuole riabilitare il proxy HTTP, seguire la procedura per aggiornare una configurazione proxy HTTP usando un modello ARM.
Proxy HTTP di Istio per servizi esterni aggiuntivi
Se si usa il componente aggiuntivo mesh di servizio basato su Istio per AKS, è necessario creare un Service Entry per consentire alle applicazioni nel mesh di accedere a risorse non cluster o esterne tramite il proxy HTTP.
Ad esempio:
apiVersion: networking.istio.io/v1
kind: ServiceEntry
metadata:
name: proxy
spec:
hosts:
- my-company-proxy.com # ignored
addresses:
- $PROXY_IP/32
ports:
- number: $PROXY_PORT
name: tcp
protocol: TCP
___location: MESH_EXTERNAL
Creare un file e specificare i valori per
PROXY_IPePROXY_PORT.È possibile distribuire la voce del servizio usando il codice seguente:
kubectl apply -f service_proxy.yaml
Configurazione del componente aggiuntivo di Monitoraggio
Il proxy HTTP con componente aggiuntivo monitoraggio supporta le seguenti configurazioni:
- Proxy in uscita senza autenticazione
- Proxy in uscita con certificato attendibile per l'endpoint di Log Analytics
La configurazione seguente non è supportata:
- Metriche personalizzate e funzionalità di avviso consigliate quando si usa un proxy con certificati attendibili
Passaggi successivi
Per ulteriori informazioni sui requisiti di rete dei cluster del servizio Azure Kubernetes, consultare Controllare il traffico in uscita per i nodi del cluster nel servizio Azure Kubernetes.
Azure Kubernetes Service