次の方法で共有


Chaos Studio IP を AKS 上の承認済み IP として追加する

概要

Azure Kubernetes Service では、特定の IP 範囲だけがクラスターに到達できるようにすることができます。 このオプションを有効にした場合、Chaos Studio によって通信に使用される IP アドレスを承認しない限り、Chaos Studio の AKS フォールトが失敗する可能性があります。

たとえば、承認された 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 範囲を取得するには、Service Tag Discovery API またはダウンロード可能な JSON ファイルで ChaosStudio サービス タグを照会します。