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 distribuire la crittografia WireGuard con Advanced Container Networking Services nei cluster Azure Kubernetes Service (AKS).
Prerequisiti
- Un account Azure con una sottoscrizione attiva. Se non ne hai uno, crea un account gratuito prima di iniziare.
Usare l'ambiente Bash in Azure Cloud Shell. Per altre informazioni, vedere Introduzione a Azure Cloud Shell.
Se preferisci eseguire i comandi di riferimento CLI in locale, installa l'Azure CLI. Se si esegue in Windows o macOS, è consigliabile eseguire Azure CLI in un contenitore Docker. Per altre informazioni, vedere Come eseguire il Azure CLI in un contenitore Docker.
Se si usa un'installazione locale, accedere al Azure CLI usando il comando az login. Per completare il processo di autenticazione, seguire la procedura visualizzata nel terminale. Per altre opzioni di accesso, vedere Authenticate to Azure using Azure CLI.For other sign-in options, see Authenticate to Azure using Azure CLI.
Quando richiesto, installare l'estensione Azure CLI al primo uso. Per altre informazioni sulle estensioni, vedere Usare e gestire le estensioni con Azure CLI.
Esegui az version per trovare la versione e le librerie dipendenti installate. Per eseguire l'aggiornamento alla versione più recente, avviare az upgrade.
La versione minima di Azure CLI necessaria per i passaggi descritti in questo articolo è 2.71.0. Per trovare la versione, eseguire
az --version. Se è necessario installare o aggiornare, vedere Installare Azure CLI.La crittografia WireGuard è supportata solo con Azure CNI con tecnologia Cilium. Se si usa qualsiasi altro plug-in di rete, la crittografia WireGuard non è supportata. Vedere Configurare Azure CNI con tecnologia Cilium.
WireGuard stabilisce tunnel crittografati sulla porta UDP 51871, che è esposta su ciascun nodo AKS. Verificare che la porta UDP 51871 sia consentita tra tutti gli IP dei nodi, soprattutto se l'ambiente prevede l'uso di firewall.
Abilitare Advanced Container Networking Services e WireGuard
Per continuare, è necessario disporre di un cluster del servizio Azure Kubernetes con i servizi avanzati di rete per contenitori abilitati.
Il comando az aks create con il flag servizi avanzati di rete per contenitori, --enable-acns, crea un nuovo cluster del servizio Azure Kubernetes con tutte le funzionalità dei servizi avanzati di rete per contenitori. Queste funzionalità includono:
Osservabilità di rete del contenitore: fornisce informazioni dettagliate sul traffico di rete. Per altre informazioni, vedere Osservabilità di rete del contenitore.
Sicurezza di rete dei contenitori: Offre funzionalità di sicurezza come il filtro FQDN (Fully Qualified Domain Name). Per altre informazioni, vedere Sicurezza di rete dei contenitori.
Annotazioni
I cluster inclusi nel piano dati Cilium supportano l'osservabilità di rete del contenitore e la sicurezza di rete dei contenitori a partire dalla versione 1.29 di Kubernetes.
WireGuard è disabilitato per impostazione predefinita anche dopo l'abilitazione di Advanced Container Networking Services. Per abilitare WireGuard impostare il tipo di crittografia usando il flag --acns-transit-encryption-type wireguard.
# Set environment variables for the AKS cluster name and resource group. Make sure to replace the placeholders with your own values.
export CLUSTER_NAME="<aks-cluster-name>"
export RESOURCE_GROUP="<resourcegroup-name>"
# Create an AKS cluster
az aks create \
--name $CLUSTER_NAME \
--resource-group $RESOURCE_GROUP \
--location eastus \
--network-plugin azure \
--network-plugin-mode overlay \
--network-dataplane cilium \
--enable-acns \
--acns-transit-encryption-type wireguard \
--generate-ssh-keys
Abilitare Advanced Container Networking Services e WireGuard in un cluster esistente
Il comando az aks update con il flag --enable-acns di Servizi avanzati di rete dei contenitori aggiorna un cluster AKS esistente con tutte le funzionalità dei Servizi avanzati di rete dei contenitori, che includono l'osservabilità della rete dei contenitori e la funzionalità sicurezza di rete dei contenitori.
Importante
L'abilitazione di WireGuard in un cluster esistente attiverà un riavvio dell'implementazione dell'agente Cilium in tutti i nodi. Per i cluster di grandi dimensioni, questo processo può richiedere del tempo e può influire temporaneamente sui carichi di lavoro. È consigliabile pianificare l'aggiornamento durante una finestra di manutenzione o un periodo di traffico ridotto per ridurre al minimo le interruzioni
Annotazioni
Solo i cluster con il piano dati Cilium supportano le funzionalità della sicurezza di rete dei contenitori dei servizi avanzati di rete per contenitori.
WireGuard è disabilitato per impostazione predefinita anche dopo l'abilitazione di Advanced Container Networking Services. Per abilitare WireGuard impostare il tipo di crittografia usando il flag --acns-transit-encryption-type wireguard.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns \
--acns-transit-encryption-type wireguard
Ottenere le credenziali del cluster
Ottenere le credenziali del cluster usando il az aks get-credentials comando .
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Convalidare la configurazione
Verificare che WireGuard sia attivato correttamente usando il CLI cilium-dbg
Annotazioni
L'abilitazione completa e la configurazione di WireGuard in tutti i nodi dopo l'attivazione potrebbero richiedere alcuni minuti.
- Eseguire una shell bash in uno dei pod Cilium
kubectl -n kube-system exec -ti ds/cilium -- bash
- Verificare che WireGuard sia abilitato
cilium-dbg encrypt status
Output previsto:
Encryption: Wireguard
Interface: cilium_wg0
Public key: jikeOvVATORm/1GD0kZLxKhw1lofdsfdgiXWVyVIR3T0=
Number of peers: 2
Il numero di peer deve essere uguale al numero di nodi meno uno.
Risoluzione dei problemi
Quando la crittografia WireGuard è abilitata in un cluster del servizio Azure Kubernetes tramite Cilium CNI, è possibile usare lo strumento dell'interfaccia della riga di comando cilium-dbg per esaminare lo stato del tunnel, verificare la connettività peer ed eseguire il debug dei problemi correlati alla crittografia.
Esaminare i nodi WireGuard
È possibile esaminare lo stato e la configurazione del peer in ogni nodo usando:
kubectl exec -n kube-system ds/cilium -- cilium-dbg debuginfo --output json | jq .encryption
Output previsto:
{
"wireguard": {
"interfaces": [
{
"listen-port": 51871,
"name": "cilium_wg0",
"peer-count": 1,
"peers": [
{
"allowed-ips": [
"10.244.1.31/32",
"10.244.1.206/32",
"10.224.0.6/32"
],
"endpoint": "10.224.0.6:51871",
"last-handshake-time": "2025-04-24T11:13:49.102Z",
"public-key": "3qwZEQLdK5IcFcdXxtr1m8RkDqznPVWEEirJ88+zDyk=",
"transfer-rx": 2457024,
"transfer-tx": 15746568
}
],
"public-key": "jikeOvVATORm/1GD0kZLxKhw1lofdsfdgiXWVyVIR3T0="
}
],
"node-encryption": "Disabled"
}
}
Questo output mostra lo stato corrente della crittografia WireGuard nel nodo.
- listen-port: porta UDP (51871) in cui questo nodo è in ascolto del traffico crittografato dai peer.
- peer-count: numero di peer WireGuard remoti configurati per questo nodo.
- peers:
- allowed-ips: elenco di indirizzi IP dei pod instradati attraverso il tunnel crittografato verso questo peer.
- endpoint: indirizzo IP e porta dell'interfaccia WireGuard del peer remoto.
- last-handshake-time: timestamp dello scambio di chiavi riuscito più recente con questo peer.
- public-key: chiave pubblica del peer remoto.
- transfer-rx/transfer-tx: numero totale di byte ricevuti/trasmessi nel tunnel.
- public-key: chiave pubblica dell'interfaccia WireGuard locale.
- node-encryption: crittografa il traffico proveniente dal nodo stesso o dai pod di rete host. Attualmente, viene crittografato solo il traffico dei pod. La crittografia dei nodi non è ancora supportata e rimane disabilitata per impostazione predefinita.
Disabilitazione di WireGuard in un cluster esistente
WireGuard può essere disabilitato in modo indipendente senza influire su altre funzionalità di Servizi di rete dei contenitori avanzati. Per disabilitarla, impostare il flag --acns-transit-encryption-type=none.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns \
--acns-transit-encryption-type none
Problemi noti
- I pacchetti potrebbero essere eliminati durante la configurazione del dispositivo WireGuard, portando a problemi di connettività. Questo problema si verifica quando gli endpoint vengono aggiunti o rimossi o quando si verificano gli aggiornamenti del nodo. In alcuni casi, questo problema potrebbe causare chiamate non riuscite a sendmsg e sendto. Per altre informazioni, vedere GitHub problema 33159.