將 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
有幾個方式可以解決此情況:
- 使用 Chaos Studio 的服務標籤來授權相關的 IP(預覽)
- 使用 PowerShell 腳本來擷取 IP 並自動新增
- 手動擷取並新增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 範圍。