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.
Gateway in uscita statico in Servizio Azure Kubernetes (AKS) instrada il traffico in uscita dei pod attraverso un pool di nodi del gateway dedicato con indirizzi IP di origine fissi. Questo articolo illustra come abilitare la funzionalità, configurare un gateway, instradare il traffico dei pod e monitorare o rimuovere la configurazione.
Limitazioni e considerazioni
- Il gateway in uscita statico non è supportato nei cluster con la subnet dei pod di Azure CNI.
- Il gateway in uscita statico supporta cluster solo IPv4 e non è supportato nei cluster dual stack.
- I criteri di rete Kubernetes non si applicano al traffico che i pod annotati instradano attraverso il pool di nodi del gateway. Il traffico di altri cluster non è interessato.
- Usare il pool di nodi del gateway solo per il traffico in uscita, non per i carichi di lavoro per utilizzo generico.
- I pool di nodi di Windows non possono essere usati come pool di nodi del gateway.
- Non è possibile annotare
hostNetworki pod per usare il pool di nodi del gateway. - I pod possono usare un pool di nodi del gateway solo se si trovano nello stesso spazio dei nomi della risorsa
StaticGatewayConfiguration.
Prerequisites
- interfaccia della riga di comando di Azure versione 2.75.0 o successiva. Eseguire
az versionper trovare la versione installata. Se è necessario installare o aggiornare, vedere Installare il interfaccia della riga di comando di Azure.
Creare o aggiornare un cluster del servizio Azure Kubernetes con gateway in uscita statico
Prima di poter creare e gestire pool di nodi del gateway, è necessario abilitare la funzionalità Gateway in uscita statico per il cluster del servizio Azure Kubernetes. A tale scopo, è possibile creare un nuovo cluster o aggiornare un cluster esistente usando az aks update.
az aks create --name <cluster-name> --resource-group <resource-group> --enable-static-egress-gateway
Per abilitare il gateway statico in uscita in un cluster esistente, eseguire il comando seguente:
az aks update --name <cluster-name> --resource-group <resource-group> --enable-static-egress-gateway
Creare un pool di nodi del gateway
Dopo aver abilitato la funzionalità, creare un pool di nodi del gateway dedicato. Questo pool di nodi gestisce il traffico in uscita tramite il prefisso IP pubblico specificato.
--gateway-prefix-size è la dimensione del prefisso IP pubblico da applicare ai nodi del pool di nodi del gateway. L'intervallo consentito è 28-31.
| Dimensione del prefisso | Indirizzi IP disponibili | Numero massimo di nodi del gateway |
|---|---|---|
/28 |
16 | 16 |
/29 |
8 | 8 |
/30 |
4 | 4 |
/31 |
2 | 2 |
az aks nodepool add --cluster-name <cluster-name> \
--name <nodepool-name> \
--resource-group <resource-group> \
--mode gateway \
--node-count <number-of-nodes> \
--gateway-prefix-size <prefix-size>
Note
- Il numero di nodi deve rientrare nella capacità consentita dalla dimensione del prefisso selezionata. Ad esempio, un prefisso /30 supporta fino a 4 nodi e almeno 2 nodi sono necessari per la disponibilità elevata. È possibile ridimensionare manualmente il pool di nodi all'interno della capacità del prefisso, ma il ridimensionamento automatico del cluster non è supportato.
- È possibile definire lo SKU della macchina virtuale da usare nel pool di nodi del gateway con il parametro
--vm-size. È necessario comprendere le esigenze specifiche e pianificare di conseguenza per garantire prestazioni e bilanciamento dei costi appropriati.
Ridimensionare il pool di nodi del gateway
Ridimensionare manualmente il pool di nodi del gateway nella capacità del prefisso IP pubblico. I pool di nodi del gateway non supportano il ridimensionamento automatico del cluster.
az aks nodepool scale --cluster-name <cluster-name> \
--name <nodepool-name> \
--resource-group <resource-group> \
--node-count <desired-node-count>
Creare una risorsa StaticGatewayConfiguration
Definire la configurazione del gateway creando una risorsa personalizzata StaticGatewayConfiguration. Questa configurazione specifica il pool di nodi e il prefisso IP pubblico da usare.
| Campo | Obbligatorio | Descrizione |
|---|---|---|
gatewayNodepoolName |
Sì | Nome del pool di nodi del gateway che gestisce il traffico in uscita. |
excludeCidrs |
No | CIDR di destinazione che ignorano il gateway e usano l'interfaccia di rete primaria del pod. |
publicIpPrefixId |
No | ID risorsa di un prefisso IP pubblico esistente. Se omesso, il controller crea un prefisso. |
apiVersion: egressgateway.kubernetes.azure.com/v1alpha1
kind: StaticGatewayConfiguration
metadata:
name: <gateway-config-name>
namespace: <namespace>
spec:
gatewayNodepoolName: <nodepool-name>
excludeCidrs: # Optional
- 10.0.0.0/8
- 172.16.0.0/12
- 169.254.169.254/32
publicIpPrefixId: /subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Network/publicIPPrefixes/<prefix-name> # Optional
Salvare il manifesto come static-gateway-configuration.yamle quindi applicarlo:
kubectl apply -f static-gateway-configuration.yaml
Attendere che il controller venga popolato prima di creare o riavviare .status.egressIpPrefix i carichi di lavoro con annotazioni. Eseguire il comando seguente fino a quando non restituisce il prefisso assegnato:
kubectl get staticgatewayconfiguration <gateway-config-name> \
--namespace <namespace> \
--output jsonpath='{.status.egressIpPrefix}'
Suggerimento
Se si omette publicIpPrefixId, il controller crea un prefisso IP pubblico. Eseguire kubectl describe StaticGatewayConfiguration <gateway-config-name> --namespace <namespace> e archiviare Egress Ip Prefix lo stato. Per usare un prefisso esistente, specificare il relativo ID risorsa in publicIpPrefixId e concedere all'identità del cluster del servizio Azure Kubernetes il ruolo Collaboratore rete.
Configurare il gateway statico in uscita con indirizzi IP privati
Importante
Il supporto ip privato statico è disponibile in anteprima e richiede cluster che eseguono Kubernetes versione 1.34 o successiva.
Se è necessario mantenere il traffico in uscita sugli indirizzi privati, creare un pool di nodi del gateway che usa il VirtualMachines tipo di set di macchine virtuali. Gli indirizzi IP pubblici del nodo sono disabilitati per impostazione predefinita. La StaticGatewayConfiguration risorsa nei passaggi seguenti disabilita separatamente il provisioning ip pubblico per l'uscita.
az aks nodepool add --cluster-name <cluster-name> \
--name <nodepool-name> \
--resource-group <resource-group> \
--mode gateway \
--node-count <number-of-nodes> \
--vm-set-type VirtualMachines \
--gateway-prefix-size <prefix-size>
Suggerimento
Specificare --vnet-subnet-id per allocare gli indirizzi IP privati dei nodi del gateway da una subnet personalizzata. Una subnet separata può migliorare l'isolamento della rete e la pianificazione degli indirizzi IP.
Importante
La modalità IP privato non crea una route in uscita. Prima di annotare i carichi di lavoro, configurare una route dalla subnet del pool di nodi del gateway alla destinazione desiderata usando una route definita dall'utente con Firewall di Azure o un'altra appliance virtuale di rete o tramite ExpressRoute. Per altre informazioni, vedere Personalizzare l'uscita del cluster con i tipi in uscita nel servizio Azure Kubernetes. Specificando --vnet-subnet-id da solo non viene specificata la connettività in uscita.
Impostare provisionPublicIps: false per disabilitare il provisioning ip pubblico e mantenere gli INDIRIZZI IP privati allocati ai nodi del gateway per la durata di StaticGatewayConfiguration. Il gatewayNodepoolName valore deve corrispondere al pool di nodi del gateway creato con --vm-set-type VirtualMachines.
apiVersion: egressgateway.kubernetes.azure.com/v1alpha1
kind: StaticGatewayConfiguration
metadata:
name: <gateway-config-name>
namespace: <namespace>
spec:
gatewayNodepoolName: <nodepool-name>
provisionPublicIps: false
Salvare il manifesto come static-gateway-configuration.yamle quindi applicarlo:
kubectl apply -f static-gateway-configuration.yaml
Prima di creare o riavviare carichi di lavoro con annotazioni, eseguire il comando seguente fino a .status.egressIpPrefix quando non contiene gli indirizzi IP privati assegnati:
kubectl get staticgatewayconfiguration <gateway-config-name> \
--namespace <namespace> \
--output jsonpath='{.status.egressIpPrefix}'
Quando si esegue kubectl describe StaticGatewayConfiguration <gateway-config-name> -n <namespace>, il egressIpPrefix campo mostra un elenco delimitato da virgole di tali INDIRIZZI IP privati statici. Continui a usare le stesse API e manifest per il resto del flusso di lavoro, inclusa la risorsa StaticGatewayConfiguration e le annotazioni dei pod.
Annotare i pod per usare la configurazione del gateway
Per instradare il traffico da pod specifici attraverso il pool di nodi del gateway, aggiungere l'annotazione kubernetes.azure.com/static-gateway-configuration al modello di pod. Impostare il valore dell'annotazione sull'oggetto metadata.name di una StaticGatewayConfiguration risorsa nello stesso spazio dei nomi.
apiVersion: apps/v1
kind: Deployment
metadata:
name: <deployment-name>
namespace: <namespace>
spec:
template:
metadata:
annotations:
kubernetes.azure.com/static-gateway-configuration: <gateway-config-name>
Note
Il plug-in CNI in ogni nodo configura i nuovi pod per instradare il traffico attraverso il pool di nodi del gateway selezionato.
Il plug-in CNI configura il gateway quando viene creato un pod. Se non sono stati sostituiti pod esistenti quando è stata aggiunta l'annotazione, riavviare il carico di lavoro. Ad esempio, riavviare una distribuzione usando il comando seguente:
kubectl rollout restart deployment <deployment-name> --namespace <namespace>
Monitorare le configurazioni del gateway statico in uscita
Per monitorare una configurazione, recuperare la risorsa completa StaticGatewayConfiguration :
kubectl get staticgatewayconfiguration <gateway-config-name> \
--namespace <namespace> \
--output yaml
status Nella sezione verificare i campi seguenti:
-
egressIpPrefixcontiene il prefisso IP pubblico assegnato o gli indirizzi IP privati. -
gatewayServerProfile.ipegatewayServerProfile.portidentificare l'endpoint del gateway. -
gatewayServerProfile.publicKeycontiene la chiave pubblica per la configurazione di WireGuard, che definisce il tunnel crittografato tra i pod e il pool di nodi del gateway.
Eliminare un pool di nodi del gateway
Prima di eliminare un pool di nodi del gateway, rimuovere l'annotazione del gateway dai modelli di pod e sostituire i pod esistenti oppure eliminare i carichi di lavoro che lo usano. Eliminare quindi tutti StaticGatewayConfiguration i riferimenti al pool di nodi. Il comando attende il completamento dei finalizzatori di pulizia del controller prima che venga restituito:
kubectl delete staticgatewayconfiguration <gateway-config-name> \
--namespace <namespace> \
--wait=true \
--timeout=5m
Dopo aver eliminato tutte le configurazioni che fanno riferimento al pool di nodi, eliminare il pool di nodi del gateway:
az aks nodepool delete --cluster-name <cluster-name> \
--name <nodepool-name> \
--resource-group <resource-group>
Disabilitare la funzionalità Gateway in uscita statico
Se il gateway statico in uscita non è più necessario, disabilitare la funzionalità e disinstallare l'operatore:
Eliminare ogni
StaticGatewayConfiguratione attendere il completamento della pulizia.Eliminare ogni pool di nodi del gateway.
az aks nodepool delete --cluster-name <cluster-name> \ --name <nodepool-name> \ --resource-group <resource-group>Disabilitare il gateway in uscita statico.
az aks update --name <cluster-name> --resource-group <resource-group> --disable-static-egress-gateway