Chaos Mesh 오류를 사용하여 Azure Portal에서 AKS Pod를 종료하는 카오스 실험 만들기
카오스 실험을 사용하여 제어된 환경에서 이러한 오류를 발생시켜 애플리케이션이 오류에 대해 복원력이 있는지 확인할 수 있습니다. 이 문서에서는 카오스 실험 및 Azure Chaos Studio를 사용하여 네임스페이스에서 주기적인 AKS(Azure Kubernetes Service) Pod 오류를 발생시킵니다. 이 실험을 실행하면 산발적인 오류가 있을 때 서비스를 사용하지 못하게 되는 일을 방지할 수 있습니다.
Chaos Studio는 Kubernetes용 무료 오픈 소스 카오스 엔지니어링 플랫폼인 Chaos Mesh를 사용하여 AKS 클러스터에 오류를 주입합니다. Chaos Mesh 오류는 AKS 클러스터에 Chaos Mesh를 설치해야 하는 서비스 직접 오류입니다. 이와 동일한 단계를 사용하여 AKS Chaos Mesh 오류에 대한 실험을 설정하고 실행할 수 있습니다.
필수 구성 요소
- Azure 구독 Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다.
- Linux 노드 풀이 있는 AKS 클러스터. AKS 클러스터가 없는 경우 Azure CLI, Azure PowerShell 또는 Azure Portal을 사용하는 AKS 빠른 시작을 참조하세요.
제한 사항
- Chaos Studio에서 VNet 삽입을 구성하여 프라이빗 클러스터에서 Chaos Mesh 오류를 사용할 수 있습니다. Chaos Mesh를 설정하는 이 문서의 단계를 포함하여 프라이빗 클러스터에 발급된 모든 명령은 프라이빗 클러스터 지침을 따라야 합니다. 권장되는 방법에는 동일한 가상 네트워크의 VM에서 연결하거나 AKS 명령 호출 기능을 사용하는 것이 포함됩니다.
- AKS Chaos Mesh 오류는 Linux 노드 풀에서만 지원됩니다.
- AKS 클러스터가 권한 있는 IP 범위만 허용하도록 구성된 경우 Chaos Studio의 IP 범위를 허용해야 합니다.
ChaosStudio
서비스 태그 검색 API 또는 다운로드 가능한 JSON 파일로 서비스 태그를 쿼리하여 찾을 수 있습니다.
AKS 클러스터에서 Chaos Mesh 설정
Chaos Studio에서 Chaos Mesh 오류를 실행하려면 먼저 AKS 클러스터에 Chaos Mesh를 설치해야 합니다.
활성 구독이 AKS 클러스터가 배포된 구독으로 설정된 Azure Cloud Shell 창에서 다음 명령을 실행합니다.
MyManagedCluster
및MyResourceGroup
을 클러스터 및 리소스 그룹의 이름으로 바꿉니다.az aks get-credentials --admin --name MyManagedCluster --resource-group MyResourceGroup
helm repo add chaos-mesh https://charts.chaos-mesh.org helm repo update kubectl create ns chaos-testing helm install chaos-mesh chaos-mesh/chaos-mesh --namespace=chaos-testing --set chaosDaemon.runtime=containerd --set chaosDaemon.socketPath=/run/containerd/containerd.sock
다음 명령을 실행하여 Chaos Mesh Pod가 설치되어 있는지 확인합니다.
kubectl get po -n chaos-testing
다음 예제와 유사한 출력이 표시됩니다(chaos-controller-manager 및 하나 이상의 chaos-daemons).
NAME READY STATUS RESTARTS AGE chaos-controller-manager-69fd5c46c8-xlqpc 1/1 Running 0 2d5h chaos-daemon-jb8xh 1/1 Running 0 2d5h chaos-dashboard-98c4c5f97-tx5ds 1/1 Running 0 2d5h
Chaos Mesh 웹 사이트의 설치 지침을 사용할 수도 있습니다.
AKS 클러스터에서 Chaos Studio 사용
Chaos Studio는 리소스가 먼저 Chaos Studio에 추가되지 않는 한 리소스에 대해 오류를 주입할 수 없습니다. 리소스에 대상과 기능을 만들어 리소스를 Chaos Studio에 추가합니다. AKS 클러스터에는 하나의 대상 유형(서비스 직접)만 있지만 다른 리소스에는 최대 두 개의 대상 유형이 있을 수 있습니다. 한 가지 대상 유형은 서비스 직접 오류에 대한 것입니다. 또 다른 대상 유형은 에이전트 기반 오류에 대한 것입니다. 각 유형의 Chaos Mesh 오류는 PodChaos, NetworkChaos 및 IOChaos와 같은 기능으로 표시됩니다.
Azure Portal을 엽니다.
검색 창에서 Chaos Studio를 검색합니다.
대상을 선택하고 AKS 클러스터로 이동합니다.
AKS 클러스터 옆에 있는 확인란을 선택합니다. 대상 사용을 선택한 다음, 드롭다운 메뉴에서 서비스 직접 대상 사용을 선택합니다.
원하는 리소스가 나열되어 있는지 확인합니다. 검토 + 사용을 선택한 다음, 사용을 선택합니다.
선택한 리소스가 성공적으로 사용하도록 설정되었음을 나타내는 알림이 나타납니다.
이제 AKS 클러스터를 Chaos Studio에 성공적으로 추가했습니다. 대상 보기에서 이 리소스에 대해 사용하도록 설정된 기능을 관리할 수도 있습니다. 리소스 옆에 있는 작업 관리 링크를 선택하여 해당 리소스에 대해 사용하도록 설정된 기능을 표시합니다.
실험 만들기
이제 실험을 만들 수 있습니다. 카오스 실험은 대상 리소스에 대해 수행하려는 작업을 정의합니다. 작업은 순차적 단계로 구성되고 실행됩니다. 카오스 실험은 병렬로 실행되는 분기에 대해 수행하려는 작업도 정의합니다.
Chaos Studio에서 실험 탭을 선택합니다. 이 보기에서는 모든 카오스 실험을 보고 관리할 수 있습니다. 만들기>새 실험을 선택합니다.
카오스 실험을 배포하려는 구독, 리소스 그룹 및 위치를 입력합니다. 실험에 이름을 지정합니다. 다음: 실험 디자이너를 선택합니다.
이제 Chaos Studio 실험 디자이너에 있습니다. 실험 디자이너를 사용하면 단계, 분기 및 오류를 추가하여 실험을 빌드할 수 있습니다. 단계 및 분기에 식별 이름을 지정한 다음, 작업 추가 > 오류 추가를 선택합니다.
드롭다운 목록에서 AKS Chaos Mesh Pod Chaos를 선택합니다. 기간에 오류가 지속되기를 원하는 시간(분)을 입력하고 jsonSpec에 다음 정보를 입력합니다.
Chaos Mesh
jsonSpec
을 공식화하려면 다음을 수행합니다.오류 형식(예: PodChaos 형식)은 Chaos Mesh 설명서를 참조하세요.
Chaos Mesh 설명서를 사용하여 해당 오류 형식에 대한 YAML 구성을 수식화합니다.
apiVersion: chaos-mesh.org/v1alpha1 kind: PodChaos metadata: name: pod-failure-example namespace: chaos-testing spec: action: pod-failure mode: all duration: '600s' selector: namespaces: - default
spec
외부의 YAML(사양 속성 이름 포함)을 제거하고 사양 세부 정보의 들여쓰기를 제거합니다.duration
매개 변수는 필요하지 않지만 제공된 경우 사용됩니다. 이 경우 제거합니다.action: pod-failure mode: all selector: namespaces: - default
이와 같은 YAML-JSON 변환기를 사용하여 Chaos Mesh YAML을 JSON으로 변환하고 최소화합니다.
{"action":"pod-failure","mode":"all","selector":{"namespaces":["default"]}}
최소화된 JSON을 포털의 jsonSpec 필드에 붙여넣습니다.
다음: 대상 리소스를 선택합니다.
AKS 클러스터를 선택하고 다음을 선택합니다.
실험이 올바른지 확인한 다음, 검토 + 만들기>만들기를 차례로 클릭합니다.
AKS 클러스터에 실험 권한 부여
카오스 실험을 만들 때 Chaos Studio는 대상 리소스에 대해 오류를 실행하는 시스템이 할당한 관리 ID를 만듭니다. 실험을 성공적으로 실행하려면 이 ID에 대상 리소스에 대한 적절한 권한을 부여해야 합니다.
AKS 클러스터로 이동하여 액세스 제어(IAM)를 선택합니다.
추가>역할 할당 추가를 선택합니다.
Azure Kubernetes Service 클러스터 관리 역할을 검색하고 역할을 선택합니다. 다음을 선택합니다.
멤버 선택을 선택하고 실험 이름을 검색합니다. 실험을 선택하고 선택을 선택합니다. 이름이 같은 여러 실험이 동일한 테넌트에 있는 경우 실험 이름은 임의 문자가 추가되어 잘립니다.
검토 + 할당>검토 + 할당을 선택합니다.
실험 실행
이제 실험을 실행할 준비가 되었습니다. 영향을 확인하려면 AKS 클러스터 개요를 열고 별도의 브라우저 탭에서 Insights로 이동하는 것이 좋습니다. 활성 Pod 수에 대한 라이브 데이터는 실험 실행의 효과를 보여 줍니다.
실험 보기에서 실험을 선택합니다. 시작>확인을 선택합니다.
상태가 실행 중으로 변경되면 기록에서 최신 실행에 대한 세부 정보를 선택하여 실행 중인 실험에 대한 세부 정보를 확인합니다.
다음 단계
이제 AKS Chaos Mesh 서비스 직접 실험을 실행했으므로 다음을 수행할 준비가 되었습니다.