你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

将 Chaos Studio IP 添加为 AKS 上的授权 IP

概述

使用 Azure Kubernetes 服务,可仅允许特定 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 服务器授权 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 网络。 若要获取 Chaos Studio 的 IP 范围,可使用服务标记发现 API 或可下载的 JSON 文件来查询 ChaosStudio 服务标记。