다음을 통해 공유


AKS에서 권한 있는 IP로 Chaos Studio 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 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)"
  }

수동 추가

여기에서 AKS 네트워크 액세스를 IP 범위 집합으로 제한하는 방법을 알아보세요. ChaosStudio서비스 태그 검색 API 또는 다운로드 가능한 JSON 파일을 사용하여 서비스 태그를 쿼리하여 Chaos Studio의 IP 범위를 가져올 수 있습니다.