Dodawanie adresów IP programu Chaos Studio jako autoryzowanych adresów IP w usłudze AKS
Omówienie
Usługa Azure Kubernetes Service umożliwia dostęp do klastra tylko określonym zakresom adresów IP. Jeśli ta opcja została włączona, błędy usługi AKS programu Chaos Studio mogą zakończyć się niepowodzeniem, chyba że autoryzujesz adresy IP używane przez program Chaos Studio do komunikacji.
Jeśli na przykład spróbujesz uruchomić błąd usługi Chaos Mesh w klastrze usługi AKS z włączonymi autoryzowanymi zakresami adresów IP, ale adresy IP programu Chaos Studio nie są dozwolone, eksperyment może zakończyć się niepowodzeniem z powodu błędu przekroczenia limitu czasu: The request was canceled due to the configured HttpClient.Timeout of 100 seconds elapsing
.
Autoryzowanie adresów IP
Istnieje kilka sposobów rozwiązania tego problemu:
- Użyj tagu usługi Chaos Studio, aby autoryzować odpowiednie adresy IP (wersja zapoznawcza)
- Użyj skryptu programu PowerShell, aby pobrać adresy IP i dodać je automatycznie
- Pobieranie i dodawanie adresów IP ręcznie
Używanie tagów usługi z funkcją usługi AKS w wersji zapoznawczej
Tag usługi to grupa prefiksów adresów IP, które można przypisać do reguł ruchu przychodzącego i wychodzącego dla sieciowych grup zabezpieczeń. Automatycznie obsługuje aktualizacje grupy prefiksów adresów IP bez żadnej interwencji. Ponieważ tagi usług umożliwiają filtrowanie adresów IP przede wszystkim, tagi usługi nie są wystarczające do zabezpieczenia ruchu.
Możesz użyć funkcji usługi AKS w wersji zapoznawczej, aby dodać tagi usługi bezpośrednio do autoryzowanych zakresów adresów IP: użyj tagów usługi dla autoryzowanych zakresów adresów IP serwera INTERFEJSu API.
Odpowiedni tag usługi to ChaosStudio
.
Skrypt programu PowerShell
Poniższy skrypt programu PowerShell pobiera adresy IP wymienione w tagu ChaosStudio
usługi i dodaje je do autoryzowanych zakresów adresów IP klastra usługi AKS przy użyciu interfejsu wiersza polecenia platformy Azure.
Aby użyć tego skryptu, skopiuj go i wklej do nowego pliku i nadaj mu Add-KubernetesChaosStudioAuthorizedIPs.ps1
nazwę , a następnie uruchom skrypt przy użyciu instrukcji z komentarzami.
# Script to add Chaos Studio IPs to authorized IP range of AKS cluster.
# Run command .\Add-KubernetesChaosStudioAuthorizedIps.ps1 -subscriptionId "yourSubscriptionId" -resourceGroupName "yourResourceGroupName" -clusterName "yourAKSClusterName" -region "regionName"
[CmdletBinding()]
param (
[Parameter(Mandatory=$true)]
[string]
$subscriptionId,
[Parameter(Mandatory=$true)]
[string]
$resourceGroupName,
[Parameter(Mandatory=$true)]
[string]
$clusterName,
[Parameter(Mandatory=$true)]
[string]
$region
)
# Get IP addresses for the Chaos Studio service tag using the Service Tag Discovery API.
try {
Write-Host "Getting IP addresses for the ChaosStudio service tag..." -ForegroundColor Yellow
$chaosStudioIps = $(az network list-service-tags --location $region --query "values[?contains(name, 'ChaosStudio')].properties.addressPrefixes[]" -o tsv)
} catch {
throw "Failed to retrieve IPs for Chaos Studio service tag from Service Tag Discovery API (https://learn.microsoft.com/en-us/azure/virtual-network/service-tags-overview#use-the-service-tag-discovery-api). Exception: $($_.Exception)"
}
# List IP addresses associated with the Chaos Studio service tag.
Write-Host "Chaos Studio IPs:"
$chaosStudioIps | ForEach-Object {
Write-Host "$_"
}
# Add Chaos Studio IPs to authorized IP range of AKS cluster.
try {
Write-Host "Adding Chaos Studio IPs to authorized IP range of AKS cluster '$clusterName' in resource group '$resourceGroupName' of subscription '$subscriptionId'." -ForegroundColor Yellow
az account set --subscription $subscriptionId
az aks update -g $resourceGroupName -n $clusterName --api-server-authorized-ip-ranges $($chaosStudioIps -join (","))
Write-Host "Successfully added Chaos Studio IPs to authorized IP range of AKS cluster '$clusterName' in resource group '$resourceGroupName' of subscription '$subscriptionId'." -ForegroundColor Yellow
} catch {
throw "Failed to add Chaos Studio IPs to authorized IP range of AKS cluster '$clusterName'. Exception: $($_.Exception)"
}
Dodawanie ręczne
Dowiedz się, jak ograniczyć dostęp sieciowy usługi AKS do zestawu zakresów adresów IP tutaj. Zakresy adresów IP programu Chaos Studio można uzyskać, wysyłając zapytanie do tagu usługi za pomocą interfejsu ChaosStudio
API odnajdywania tagów usługi lub pobierając pliki JSON.