共用方式為


將 Chaos Studio IP 新增為 AKS 上的授權 IP

概觀

Azure Kubernetes Service 可讓您 只允許特定IP範圍 到達叢集。 如果您已啟用此選項,Chaos Studio 的 AKS 錯誤可能會失敗,除非您授權 Chaos Studio 用於通訊的 IP 位址。

例如,如果您嘗試在已啟用授權IP範圍的AKS叢集上執行 Chaos Mesh 錯誤,但不允許 Chaos Studio 的IP地址,實驗可能會失敗,並出現逾時錯誤: The request was canceled due to the configured HttpClient.Timeout of 100 seconds elapsing

授權IP

有幾個方式可以解決此情況:

  1. 使用 Chaos Studio 的服務標籤來授權相關的 IP(預覽)
  2. 使用 PowerShell 腳本來擷取 IP 並自動新增
  3. 手動擷取並新增IP

搭配 AKS 預覽功能使用服務標籤

服務標籤是一組 IP 位址前置詞,可以為網路安全性群組的輸入和輸出規則指派這些前置詞。 服務標籤會自動處理 IP 位址前置詞群組的更新,無須任何介入。 由於服務標籤主要啟用 IP 位址篩選,因此僅服務標籤並不足以保護流量。

您可以使用預覽 AKS 功能,將服務標籤直接新增至授權的IP範圍: 使用 API Server 授權 IP 範圍的服務標籤。

相關的服務標籤為 ChaosStudio

PowerShell 指令碼

下列 PowerShell 腳本會擷取服務標籤中列出的 ChaosStudio IP 位址,並使用 Azure CLI 將它們新增至 AKS 叢集的授權 IP 範圍。

若要使用此文稿,請將它複製並貼到新的檔案中,並將其命名為 Add-KubernetesChaosStudioAuthorizedIPs.ps1,然後使用批註的指示執行腳本。

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

手動新增

在此深入了解如何限制一組 IP 範圍的 AKS 網路存取。 您可以透過ChaosStudio使用服務標籤探索 API 或可下載的 JSON 檔案査詢服務標籤來取得 Chaos Studio 的 IP 範圍。