你当前正在访问 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 授权
有多种方法可解决此问题:
- 使用 Chaos Studio 的服务标记对相关 IP 进行授权(预览版)
- 使用 PowerShell 脚本检索 IP 并自动添加它们
- 手动检索和添加 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
服务标记。