Поделиться через


Добавление IP-адресов Chaos Studio в качестве авторизованных IP-адресов в AKS

Обзор

Служба Azure Kubernetes позволяет получить доступ к кластеру только в определенных диапазонах IP-адресов. Если этот параметр включен, ошибки AKS в Chaos Studio могут завершиться ошибкой, если только вы не авторизуете IP-адреса, используемые Chaos Studio для обмена данными.

Например, если вы пытаетесь запустить ошибку Chaos Mesh в кластере AKS с включенными авторизованными диапазонами IP-адресов, но IP-адреса Chaos Studio не разрешены, эксперимент может завершиться ошибкой времени ожидания: 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-адресов. Используйте теги служб для авторизованных диапазонов IP-адресов сервера API.

Соответствующий тег службы .ChaosStudio

Скрипт PowerShell

Следующий скрипт PowerShell извлекает IP-адреса, перечисленные в ChaosStudio теге службы, и добавляет их в авторизованные диапазоны IP-адресов кластера AKS с помощью Azure CLI.

Чтобы использовать этот скрипт, скопируйте и вставьте его в новый файл и назовите его 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)"
  }

Добавление вручную

Узнайте, как ограничить сетевой доступ AKS к набору диапазонов IP-адресов. Диапазоны IP-адресов Chaos Studio можно получить, запросив ChaosStudio тег службы с помощью API обнаружения тегов службы или скачиваемых JSON-файлов.