Dela via


Lägga till Chaos Studio-IP-adresser som auktoriserade IP-adresser på AKS

Översikt

Med Azure Kubernetes Service kan du endast tillåta att vissa IP-intervall når ett kluster. Om du har aktiverat det här alternativet kan Chaos Studios AKS-fel misslyckas, såvida du inte auktoriserar IP-adresserna som används av Chaos Studio för kommunikation.

Om du till exempel försöker köra ett Chaos Mesh-fel på ett AKS-kluster med auktoriserade IP-intervall aktiverade, men Chaos Studio IP-adresser inte tillåts, kan experimentet misslyckas med timeout-felet: The request was canceled due to the configured HttpClient.Timeout of 100 seconds elapsing.

Auktorisera IP-adresser

Det finns flera sätt att lösa detta:

  1. Använd Chaos Studios tjänsttagg för att auktorisera relevanta IP-adresser (förhandsversion)
  2. Använd ett PowerShell-skript för att hämta IP-adresserna och lägga till dem automatiskt
  3. Hämta och lägg till IP-adresserna manuellt

Använda tjänsttaggar med aks-förhandsversionsfunktionen

En tjänsttagg är en grupp MED IP-adressprefix som kan tilldelas till regler för inkommande och utgående trafik för nätverkssäkerhetsgrupper. Den hanterar automatiskt uppdateringar av gruppen med IP-adressprefix utan några åtgärder. Eftersom tjänsttaggar främst aktiverar IP-adressfiltrering räcker det inte med enbart tjänsttaggar för att skydda trafiken.

Du kan använda en förhandsversion av AKS-funktionen för att lägga till tjänsttaggar direkt till de auktoriserade IP-intervallen: Använd tjänsttaggar för API Server-auktoriserade IP-intervall.

Den relevanta tjänsttaggen är ChaosStudio.

PowerShell-skript

Följande PowerShell-skript hämtar IP-adresserna som anges i tjänsttaggen och lägger till dem i ChaosStudio AKS-klustrets auktoriserade IP-intervall med hjälp av Azure CLI.

Om du vill använda det här skriptet kopierar du och klistrar in det i en ny fil och namnger den Add-KubernetesChaosStudioAuthorizedIPs.ps1och kör sedan skriptet med hjälp av de kommenterade anvisningarna.

  # 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)"
  }

Manuell tillägg

Lär dig hur du begränsar AKS-nätverksåtkomst till en uppsättning IP-intervall här. Du kan hämta Chaos Studios IP-intervall genom att ChaosStudio köra frågor mot tjänsttaggen med API:et för identifiering av tjänsttaggar eller nedladdningsbara JSON-filer.