Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ważne
Szyfrowanie WireGuard za pomocą zaawansowanych usług sieciowych klastra jest obecnie dostępne w wersji zapoznawczej.
Zobacz dodatkowe warunki użytkowania dla wersji zapoznawczych platformy Microsoft Azure, aby zapoznać się z postanowieniami prawnymi dotyczącymi funkcji platformy Azure, które są w wersji beta, wersji zapoznawczej lub w inny sposób nie zostały jeszcze wydane w wersji ogólnodostępnej.
W tym artykule pokazano, jak wdrożyć szyfrowanie WireGuard za pomocą usług Advanced Container Networking Services w klastrach usługi Azure Kubernetes Service (AKS).
Wymagania wstępne
- Konto Azure z aktywną subskrypcją. Jeśli go nie masz, przed rozpoczęciem utwórz bezpłatne konto .
Użyj środowiska Bash w Azure Cloud Shell. Aby uzyskać więcej informacji, zobacz Get started with Azure Cloud Shell.
Jeśli wolisz uruchamiać polecenia referencyjne interfejsu wiersza polecenia lokalnie, zainstaluj Azure CLI. Jeśli korzystasz z systemu Windows lub macOS, rozważ uruchomienie Azure CLI w kontenerze Docker. Aby uzyskać więcej informacji, zobacz Jak uruchomić Azure CLI w kontenerze Docker.
Jeśli korzystasz z instalacji lokalnej, zaloguj się do Azure CLI za pomocą polecenia az login. Aby zakończyć proces uwierzytelniania, wykonaj kroki wyświetlane na Twoim terminalu. Aby uzyskać inne opcje logowania, zobacz Uwierzytelnianie na platformie Azure przy użyciu interfejsu wiersza polecenia platformy Azure.
Gdy zostaniesz o to poproszony/a, zainstaluj rozszerzenie Azure CLI przy pierwszym użyciu. Aby uzyskać więcej informacji na temat rozszerzeń, zobacz Używanie rozszerzeń i zarządzanie nimi za pomocą interfejsu wiersza polecenia platformy Azure.
Uruchom az version, aby sprawdzić zainstalowaną wersję i biblioteki zależne. Aby zaktualizować do najnowszej wersji, uruchom az upgrade.
Minimalna wersja interfejsu wiersza polecenia platformy Azure wymagana do wykonania kroków w tym artykule to 2.71.0. Aby dowiedzieć się, jaka wersja jest używana, uruchom polecenie
az --version. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.Szyfrowanie WireGuard jest obsługiwane tylko w przypadku interfejsu CNI platformy Azure obsługiwanego przez funkcję Cilium. Jeśli używasz innej wtyczki sieciowej, szyfrowanie WireGuard nie jest obsługiwane. Zobacz Konfigurowanie interfejsu CNI platformy Azure obsługiwanego przez cilium.
WireGuard ustanawia szyfrowane tunele za pośrednictwem portu UDP 51871, który jest udostępniony na każdym węźle AKS. Upewnij się, że port UDP 51871 jest dozwolony między wszystkimi adresami IP węzłów, zwłaszcza jeśli środowisko korzysta z zapór.
Zainstaluj rozszerzenie Azure CLI aks-preview
Ważne
Funkcje usługi AKS w wersji zapoznawczej są dostępne na zasadzie samoobsługi i wymagają zapisania się. Wersje zapoznawcze są udostępniane w wersji "as is" i "jako dostępne" i są wykluczone z umów dotyczących poziomu usług i ograniczonej gwarancji. Wersje zapoznawcze usługi AKS są częściowo objęte pomocą techniczną dla klientów, świadczoną w miarę możliwości. W związku z tym te funkcje nie są przeznaczone do użytku produkcyjnego. Aby uzyskać więcej informacji, zobacz następujące artykuły pomocy technicznej:
Zainstaluj lub zaktualizuj rozszerzenie Azure CLI w wersji zapoznawczej przy użyciu polecenia az extension add lub az extension update.
Minimalna wersja rozszerzenia CLI platformy Azure aks-preview to 14.0.0b6
# Install the aks-preview extension
az extension add --name aks-preview
# Update the extension to make sure you have the latest version installed
az extension update --name aks-preview
Zarejestruj flagę funkcji AdvancedNetworkingWireGuardPreview
Zarejestruj flagę funkcji AdvancedNetworkingWireGuardPreview za pomocą polecenia az feature register.
az feature register --namespace "Microsoft.ContainerService" --name "AdvancedNetworkingWireGuardPreview"
Przy użyciu polecenia az feature show sprawdź, czy rejestracja przebiegła pomyślnie. Ukończenie rejestracji trwa kilka minut.
az feature show --namespace "Microsoft.ContainerService" --name "AdvancedNetworkingWireGuardPreview"
Gdy funkcja Registered się pojawi, odśwież rejestrację dostawcy zasobów Microsoft.ContainerService za pomocą polecenia az provider register.
Włączanie usług Advanced Container Networking Services i WireGuard
Aby kontynuować, musisz mieć klaster usługi AKS z włączoną usługą Advanced Container Networking Services .
Polecenie az aks create z flagą --enable-acns Advanced Container Networking Services tworzy nowy klaster AKS ze wszystkimi funkcjami Advanced Container Networking Services. Obejmują one następujące funkcje:
Obserwowanie sieci kontenerów: zapewnia wgląd w ruch sieciowy. Aby dowiedzieć się więcej, odwiedź stronę Obserwacja sieci kontenerów.
Zabezpieczenia sieci kontenerów: Oferuje funkcje zabezpieczeń, takie jak filtrowanie w pełni kwalifikowanej nazwy domeny (FQDN). Aby dowiedzieć się więcej, odwiedź stronę Zabezpieczenia sieci kontenerów.
Uwaga / Notatka
Klastry z płaszczyzną danych Cilium obsługują obserwowalność sieci kontenerów i zabezpieczenia sieci kontenerów, począwszy od wersji 1.29 platformy Kubernetes.
Narzędzie WireGuard jest domyślnie wyłączone nawet po włączeniu usługi ACNS. Aby włączyć funkcję WireGuard, ustaw typ szyfrowania przy użyciu flagi --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
Włączanie usług Advanced Container Networking Services i WireGuard w istniejącym klastrze
Polecenie az aks update z flagą --enable-acns Zaawansowane Usługi Sieciowe Kontenerów, aktualizuje istniejący klaster AKS ze wszystkimi funkcjami Zaawansowanych Usług Sieciowych Kontenerów, które obejmują obserwowalność sieci kontenerów oraz funkcję bezpieczeństwa sieci kontenerów.
Ważne
Włączenie narzędzia WireGuard w istniejącym klastrze spowoduje wyzwolenie ponownego uruchomienia agenta Cilium we wszystkich węzłach. W przypadku dużych klastrów ten proces może zająć trochę czasu i może tymczasowo wpłynąć na obciążenia. Zaleca się zaplanowanie aktualizacji w oknie obsługi lub okresie niskiego natężenia ruchu w celu zminimalizowania zakłóceń
Uwaga / Notatka
Tylko klastry z płaszczyzną danych Cilium obsługują funkcje zabezpieczeń sieci kontenerów usługi Advanced Container Networking Services.
Narzędzie WireGuard jest domyślnie wyłączone nawet po włączeniu usługi ACNS. Aby włączyć funkcję WireGuard, ustaw typ szyfrowania przy użyciu flagi --acns-transit-encryption-type wireguard.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns \
--acns-transit-encryption-type wireguard
Pobieranie poświadczeń klastra
Pobierz poświadczenia klastra, używając polecenia az aks get-credentials.
az aks get-credentials --name $CLUSTER_NAME --resource-group $RESOURCE_GROUP
Weryfikowanie konfiguracji
Sprawdź, czy WireGuard został pomyślnie włączony przy użyciu polecenia cilium-dbg.
Uwaga / Notatka
Po aktywacji może upłynąć kilka minut, aby funkcja WireGuard była w pełni włączona i skonfigurowana we wszystkich węzłach.
- Uruchom powłokę bash w jednym z podów Cilium
kubectl -n kube-system exec -ti ds/cilium -- bash
- Sprawdź, czy funkcja WireGuard jest włączona
cilium-dbg encrypt status
Oczekiwane dane wyjściowe:
Encryption: Wireguard
Interface: cilium_wg0
Public key: jikeOvVATORm/1GD0kZLxKhw1lofdsfdgiXWVyVIR3T0=
Number of peers: 2
Liczba elementów równorzędnych powinna być równa liczbie węzłów minus jeden.
Rozwiązywanie problemów
Gdy szyfrowanie WireGuard jest włączone w klastrze usługi AKS przy użyciu interfejsu CNI Cilium, możesz użyć narzędzia interfejsu wiersza polecenia cilium-dbg, aby sprawdzić stan tunelu, zweryfikować łączność równorzędną i debugować problemy związane z szyfrowaniem.
Sprawdzanie elementów równorzędnych WireGuard
Stan i konfigurację komunikacji równorzędnej można sprawdzić w każdym węźle przy użyciu:
kubectl exec -n kube-system ds/cilium -- cilium-dbg debuginfo --output json | jq .encryption
Oczekiwane dane wyjściowe:
{
"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"
}
}
Te dane wyjściowe pokazują bieżący stan szyfrowania WireGuard w węźle.
- Port nasłuchiwania: port UDP (51871), na którym ten węzeł nasłuchuje ruchu zaszyfrowanego od innych węzłów.
- liczba węzłów: liczba zdalnych węzłów WireGuard skonfigurowanych dla tego węzła.
- Rówieśnicy
- allowed-ips: lista adresów IP podów kierowanych przez zaszyfrowany tunel do tego węzła.
- punkt końcowy: adres IP i port interfejsu WireGuard zdalnego współpracownika.
- last-handshake-time: Sygnatura czasowa najnowszej pomyślnej wymiany kluczy z tym elementem równorzędnym.
- public-key: klucz publiczny zdalnego komputera partnerskiego.
- transfer-rx/transfer-tx: całkowita liczba bajtów odebranych/przesłanych przez tunel.
- public-key: klucz publiczny lokalnego interfejsu WireGuard.
- node-encryption: szyfruje ruch pochodzący z samego węzła lub z zasobników sieci hosta. Obecnie szyfrowany jest tylko ruch podów. Szyfrowanie węzła nie jest jeszcze obsługiwane i pozostaje domyślnie wyłączone.
Wyłączanie narzędzia WireGuard w istniejącym klastrze
Narzędzie WireGuard można wyłączyć niezależnie bez wpływu na inne funkcje usługi ACNS. Aby go wyłączyć, ustaw flagę --acns-transit-encryption-type=none.
az aks update \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER_NAME \
--enable-acns \
--acns-transit-encryption-type none
Znane problemy
- Pakiety mogą zostać porzucone podczas konfigurowania urządzenia WireGuard prowadzącego do problemów z łącznością. Ten problem występuje, gdy punkty końcowe są dodawane lub usuwane lub gdy wystąpią aktualizacje węzła. W niektórych przypadkach ten problem może prowadzić do niepowodzenia wywołań sendmsg i sendto. Aby uzyskać więcej informacji, zobacz Problem z usługą GitHub 33159.