Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel erfahren Sie, wie Sie die WireGuard-Verschlüsselung mit Advanced Container Networking Services in Azure Kubernetes Service (AKS) Clustern bereitstellen.
Voraussetzungen
- Ein Azure Konto mit einem aktiven Abonnement. Falls Sie kein Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Get started with Azure Cloud Shell.
Wenn Sie CLI-Referenzbefehle lieber lokal ausführen möchten, install die Azure CLI. Wenn Sie Windows oder macOS verwenden, empfiehlt es sich, Azure CLI in einem Docker-Container auszuführen. Weitere Informationen finden Sie unter How to run the Azure CLI in a Docker container.
Wenn Sie eine lokale Installation verwenden, melden Sie sich mit dem Befehl az login beim Azure CLI an. Um den Authentifizierungsprozess abzuschließen, führen Sie die schritte aus, die in Ihrem Terminal angezeigt werden. Weitere Anmeldeoptionen finden Sie unter Authentifizieren bei Azure mithilfe der Azure CLI.
Wenn Sie dazu aufgefordert werden, installieren Sie die Azure CLI Erweiterung bei der ersten Verwendung. Weitere Informationen zu Erweiterungen finden Sie unter Use and manage extensions with the Azure CLI.
Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um auf die neueste Version zu aktualisieren.
Die mindeste Version von Azure CLI erforderlich für die Schritte in diesem Artikel ist 2.71.0. Führen Sie
az --versionaus, um die Version zu finden. Informationen zum Installieren oder Aktualisieren finden Sie unter Install Azure CLI.Die WireGuard-Verschlüsselung wird nur mit dem Azure CNI unterstützt, das von Cilium unterstützt wird. Wenn Sie ein anderes Netzwerk-Plug-In verwenden, wird die WireGuard-Verschlüsselung nicht unterstützt. Siehe Configure Azure CNI Powered by Cilium.
WireGuard richtet verschlüsselte Tunnel über den UDP-Port 51871 ein, die auf jedem AKS-Knoten freigegeben werden. Stellen Sie sicher, dass UDP-Port 51871 zwischen allen Knoten-IPs zulässig ist, insbesondere, wenn Ihre Umgebung Firewalls verwendet.
Aktivieren von Advanced Container Networking Services und WireGuard
Um fortfahren zu können, benötigen Sie ein AKS-Cluster mit Erweiterten Container-Netzwerkdiensten.
Der Befehl az aks create mit dem Flag Advanced Container Networking Services --enable-acns erstellt einen neuen AKS-Cluster mit allen Features der erweiterten Container-Netzwerkdiensten. Diese Funktionen umfassen Folgendes:
Container Network Observability: Bietet Einblicke in Ihren Netzwerkdatenverkehr. Weitere Informationen erhalten Sie unter Container Network Observability.
Containernetzwerksicherheit: bietet Sicherheitsfeatures wie die Filterung vollqualifizierter Domänennamen (Fully Qualified Domain Name, FQDN). Weitere Informationen erhalten Sie unter Containernetzwerksicherheit.
Hinweis
Cluster mit der Cilium-Datenebene unterstützen Container Network Observability und Containernetzwerksicherheit ab Kubernetes-Version 1.29.
WireGuard ist standardmäßig auch nach dem Aktivieren von Advanced Container Networking Services deaktiviert. Um WireGuard zu aktivieren, legen Sie den Verschlüsselungstyp mithilfe des Flags --acns-transit-encryption-type wireguardfest.
# 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
Aktivieren von Advanced Container Networking Services und WireGuard auf einem vorhandenen Cluster
Der az aks update Befehl mit dem Flag --enable-acns „Advanced Container Networking Services“ aktualisiert einen vorhandenen AKS-Cluster mit allen Features der Advanced Container Networking Services, die Container Network Observability und das Container Network Security-Feature umfassen.
Von Bedeutung
Durch Aktivieren von WireGuard auf einem vorhandenen Cluster wird ein Rollout-Neustart des Cilium-Agents über alle Knoten ausgelöst. Bei großen Clustern kann dieser Vorgang einige Zeit in Anspruch nehmen und sich vorübergehend auf Workloads auswirken. Es wird empfohlen, das Update während eines Wartungsfensters oder eines Zeitraums mit geringem Datenverkehr zu planen, um Unterbrechungen zu minimieren.
Hinweis
Nur Cluster mit der Cilium-Datenebene unterstützen die Features für Containernetzwerksicherheit der erweiterten Container-Netzwerkdienste.
WireGuard ist standardmäßig auch nach dem Aktivieren von Advanced Container Networking Services deaktiviert. Um WireGuard zu aktivieren, legen Sie den Verschlüsselungstyp mithilfe des Flags --acns-transit-encryption-type wireguardfest.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns \
--acns-transit-encryption-type wireguard
Abrufen von Clusteranmeldeinformationen
Rufen Sie mithilfe des az aks get-credentials Befehls Ihre Clusteranmeldeinformationen ab.
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Überprüfen des Setups
Überprüfen, ob WireGuard erfolgreich mithilfe von cilium-dbg cli aktiviert ist
Hinweis
Es kann einige Minuten dauern, bis WireGuard nach der Aktivierung vollständig über alle Knoten hinweg aktiviert und konfiguriert ist.
- Ausführen einer Bash-Shell in einem der Cilium-Pods
kubectl -n kube-system exec -ti ds/cilium -- bash
- Überprüfen, ob WireGuard aktiviert ist
cilium-dbg encrypt status
Erwartete Ausgabe:
Encryption: Wireguard
Interface: cilium_wg0
Public key: jikeOvVATORm/1GD0kZLxKhw1lofdsfdgiXWVyVIR3T0=
Number of peers: 2
Die Anzahl der Peers sollte der Anzahl der Knoten minus 1 entsprechen.
Problembehandlung
Wenn die WireGuard-Verschlüsselung in einem AKS-Cluster mit Cilium CNI aktiviert ist, können Sie das cilium-dbg CLI-Tool verwenden, um den Tunnelstatus zu prüfen, peerkonnektivität zu überprüfen und verschlüsselungsbezogene Probleme zu debuggen.
Überprüfung der WireGuard-Peers
Sie können den Peerstatus und die Konfiguration auf jedem Knoten prüfen, indem Sie:
kubectl exec -n kube-system ds/cilium -- cilium-dbg debuginfo --output json | jq .encryption
Erwartete Ausgabe:
{
"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"
}
}
Diese Ausgabe zeigt den aktuellen Status der WireGuard-Verschlüsselung auf dem Knoten an.
- Listenport: Der UDP-Port (51871), an dem dieser Knoten auf verschlüsselten Datenverkehr von Peers lauscht.
- Peer-Count: Die Anzahl der für diesen Knoten konfigurierten Remote-WireGuard-Peers.
- Peers:
- allowed-ips: Liste der Pod-IP-Adressen, die über den verschlüsselten Tunnel an diesen Peer weitergeleitet werden.
- endpunkt: Die IP und der Port der WireGuard-Schnittstelle des Remote-Peers.
- Last-Handshake-Zeit: Zeitstempel des letzten erfolgreichen Schlüsselaustauschs mit diesem Peer.
- public-key: Der öffentliche Schlüssel des Remote-Peers.
- transfer-rx / transfer-tx: Die Gesamtanzahl der empfangenen/übertragenen Bytes über den Tunnel.
- public-key: Der öffentliche Schlüssel der lokalen WireGuard-Schnittstelle.
- node-encryption: Verschlüsselt Datenverkehr, der vom Knoten selbst oder von Host-Netzwerk-Pods stammt. Derzeit wird nur der Pod-Datenverkehr verschlüsselt. Die Knotenverschlüsselung wird noch nicht unterstützt und bleibt standardmäßig deaktiviert.
Deaktivieren von WireGuard auf einem vorhandenen Cluster
WireGuard kann unabhängig voneinander deaktiviert werden, ohne dass sich dies auf andere Advanced Container Networking Services-Features auswirkt. Um es zu deaktivieren, legen Sie die Kennzeichnung --acns-transit-encryption-type=nonefest.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns \
--acns-transit-encryption-type none
Bekannte Probleme
- Pakete können beim Konfigurieren des WireGuard-Geräts gelöscht werden, das zu Verbindungsproblemen führt. Dieses Problem tritt auf, wenn Endpunkte hinzugefügt oder entfernt werden oder wenn Knotenaktualisierungen auftreten. In einigen Fällen kann dieses Problem zu fehlgeschlagenen Aufrufen von Sendmsg und Sendto führen. Weitere Informationen finden Sie unter GitHub Problem 33159.