이 페이지에서는 장애 주입 테스트에서 실험을 예약하는 방법과 외부 예약 서비스를 사용하여 복원력 테스트를 자동화하는 방법을 설명합니다.
실험을 예약하면 테스트 프로세스를 자동화하고 다음과 같은 사용자에게 미치는 영향을 최소화하는 기간에 실험을 실행할 수 있습니다.
- 사용량이 많지 않은 시간 또는 계획된 유지보수 기간
- 정기적으로 예정된 게임 데이나 카오스 엔지니어링 훈련
- 배포 전에 복원력을 검증하는 자동화된 테스트 파이프라인 (CI/CD)
실험을 예약하면 매번 수동으로 개입하지 않아도 시스템의 내결함성을 지속적으로 검증할 수 있습니다.
예약된 실험의 작동 방식
Fault Injection Testing에는 기본 제공 일정 서비스가 포함되지 않습니다. 대신 장애 주입 테스트를 Cloud Scheduler와 같은 외부 일정 서비스와 통합하여 실험을 예약합니다.
실험을 예약하려면 특정 시간에 Fault Injection Testing API를 호출하거나 gcloud 명령어를 실행하도록 외부 스케줄러를 구성합니다. 이 통합을 지원하기 위해 장애 삽입 테스트에서는 startOnCreateEnabled 매개변수를 제공합니다. true로 설정하면 이 매개변수는 시스템에 실험이 생성된 직후 자동으로 시작하도록 지시합니다.
예약된 실험의 타겟 선택
예약된 실험의 타겟 리소스는 예약 구성 자체가 아닌 실험 템플릿 내에서 정의됩니다. 다음은 결함 삽입 테스트에서 타겟을 처리하는 방법입니다.
- 실험 템플릿을 만들 때 결함 유형과 대상 리소스의 선택 기준을 정의합니다. 리소스의 예로는 특정 VM 인스턴스, 태그가 일치하는 리소스, 특정 영역의 리소스가 있습니다.
- 외부 스케줄러를 구성하면 API 페이로드가 실험 템플릿을 참조합니다.
- 예약된 시간에 외부 스케줄러가 실험 생성을 트리거합니다. 그런 다음 장애 주입 테스트에서 해당 시점의 템플릿에 있는 타겟 선택 규칙을 평가하여 영향을 받는 리소스를 확인합니다.
템플릿이 태그를 기반으로 VM을 타겟팅하는 경우 예약된 실험은 실험이 실행되는 정확한 시간에 해당 태그가 있는 모든 VM에 영향을 미칩니다.
예약된 실험 설정하기
계속하기 전에 roles/faulttesting.operator 또는 roles/faulttesting.admin 역할이 있는지 확인하세요.
Google Cloud 콘솔 및 Cloud Scheduler를 사용하여 일정 구성
Fault Injection Testing 콘솔 내에서 직접 일정을 만들 수는 없지만 콘솔에서는 Cloud Scheduler에서 작업을 설정하는 데 필요한 매개변수를 제공합니다.
- Google Cloud 콘솔에서 실험 템플릿 페이지로 이동합니다.
- 템플릿을 선택하여 세부정보를 확인합니다.
세부정보 페이지에서 다음 사항을 확인합니다.
"startOnCreateEnabled": true이 포함된 JSON 페이로드- 실험을 만들기 위한 REST API 엔드포인트 URL입니다.
Cloud Scheduler에서 사용됩니다.
Google Cloud 콘솔에서 Cloud Scheduler 페이지로 이동하여 작업 만들기를 클릭합니다.
작업의 일정과 시간대를 정의합니다.
대상 유형에서 HTTP를 선택합니다.
실험 템플릿 세부정보 페이지에서 REST API 엔드포인트 URL로 URL을 설정합니다.
HTTP 메서드를 POST로 설정합니다.
본문 필드에 JSON 페이로드를 입력합니다.
{ "experimentTemplate": "projects/PROJECT_ID/locations/REGION/experimentTemplates/TEMPLATE_ID", "startOnCreateEnabled": true, "description": "DESCRIPTION" }작업의 인증을 구성합니다. 서비스 계정 추천에 관한 권장사항을 참고하세요.
만들기를 클릭합니다.
Google Cloud CLI를 사용하여 일정 구성
셸 명령어를 실행하는 스크립트나 도구를 사용하는 경우 Cloud Scheduler 또는 자체 스케줄러를 구성하여 --start-on-create-enabled 플래그와 함께 gcloud alpha fault-testing experiments create 명령어를 실행하여 실험을 예약할 수 있습니다.
다음 명령어를 실행하여 실험 인스턴스를 만들고 즉시 시작합니다.
gcloud alpha fault-testing experiments create EXPERIMENT_ID \
--experiment-template=TEMPLATE_ID \
--location=REGION \
--start-on-create-enabled \
[--description="DESCRIPTION"] \
[--project=PROJECT_ID]
EXPERIMENT_ID: 실험 실행의 고유 식별자입니다. 이 명령어는 자동화되어 있으므로 스크립트에서 실행마다 고유한 ID를 생성해야 합니다. 예를 들어 타임스탬프를 추가할 수 있습니다(scheduled-exp-$(date +%s)).TEMPLATE_ID: 사전 구성된 실험 템플릿의 ID입니다.REGION: 실험이 실행되는 Google Cloud 리전입니다.--start-on-create-enabled: 이 플래그는 생성 후 즉시 실험을 시작하도록 결함 주입 테스트에 지시합니다.DESCRIPTION: (선택사항) 실험 실행에 대한 설명입니다.PROJECT_ID: (선택사항) Google Cloud프로젝트 ID입니다.
실험 실행 관리
예약된 실행마다 새롭고 고유한 실험 인스턴스가 생성됩니다. 다음 명령어를 사용하여 이러한 인스턴스를 관리할 수 있습니다.
모든 실험 실행을 나열하려면 다음을 실행합니다.
gcloud alpha fault-testing experiments list --location=REGION특정 실행의 세부정보를 보려면 다음 단계를 따르세요.
gcloud alpha fault-testing experiments describe EXPERIMENT_ID --location=REGION실행 중인 실험을 조기에 중지하려면 다음 단계를 따르세요.
gcloud alpha fault-testing experiments stop EXPERIMENT_ID --location=REGION
권장사항
실험을 예약할 때는 다음 권장사항을 고려하세요.
- 전용 서비스 계정을 사용합니다. 스케줄러 (예: Cloud Scheduler)를 구성할 때는 전용 서비스 계정과 연결하세요. 이 서비스 계정에는 실험을 관리하는 데 필요한 최소 권한(예: 프로젝트의
roles/faulttesting.operator또는roles/faulttesting.admin)만 부여합니다. - 고유한 실험 ID를 생성합니다. 스크립트를 사용하여 실험을 트리거할 때는 리소스 이름 충돌을 방지하기 위해 스크립트에서 실행마다 고유한 실험 ID를 생성해야 합니다.
- 설명이 포함된 이름 또는 설명을 사용합니다. 예약된 실행마다 새 실험 인스턴스가 생성됩니다. 이전 실험을 다시 시작하거나 덮어쓰지 않습니다. 실행을 일정으로 다시 추적하는 데 도움이 되도록 설명이 포함된 이름이나 설명을 사용합니다.
- 일정 실패를 모니터링합니다. 네트워크 문제, 사용자 인증 정보 만료 또는 API 할당량으로 인해 외부 트리거가 실패할 수 있습니다. 작업이 실행되지 않거나 오류 응답을 수신하는 경우 알림을 보내도록 스케줄러 작업에 모니터링 및 알림을 설정합니다.
- 제외 기간과 조정합니다. 예약된 실험이 활성 제외 기간과 겹치지 않는지 확인합니다. 예약된 실험이 제외 기간에 트리거되면 장애 주입 테스트에서 실행을 차단하고 실험이 시작되지 않습니다.