CI 로드 테스트: http-echo를 Kind와 k6로 수행

발행: (2026년 1월 10일 오후 12:48 GMT+9)
5 분 소요
원문: Dev.to

Source: Dev.to

CI Load Test for http‑echo using Kind and k6의 표지 이미지

솔루션 개요

  • Kind – 현실적인 테스트 환경을 위한 다중 노드 Kubernetes 클러스터를 생성합니다.
  • NGINX Ingress Controller – 호스트 이름에 따라 HTTP 요청을 다양한 서비스로 라우팅합니다.
  • k6 – 상세한 메트릭과 성능 분석을 통해 부하 테스트를 수행합니다.

아키텍처

┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   k6 Load Test  │───▶│  NGINX Ingress   │───▶│  http‑echo apps │
│                 │    │   Controller     │    │                 │
│ - foo.localhost │    │                  │    │ - foo service   │
│ - bar.localhost │    │  (Port 80/443)   │    │ - bar service   │
└─────────────────┘    └──────────────────┘    └─────────────────┘


                       ┌──────────────────┐
                       │   Kind Cluster   │
                       │                  │
                       │ - Control plane  │
                       │ - Worker node    │
                       └──────────────────┘

프로젝트 구조

kind-http-echo-test/
├── README.md               # This documentation
├── kind-config.yaml        # Kind cluster configuration
├── k8s/                    # Kubernetes manifests
│   ├── http-echo-foo.yaml  # Foo service deployment
│   └── http-echo-bar.yaml  # Bar service deployment
└── loadtest/               # Load‑testing scripts
    └── load-test.js        # k6 load‑test script

전제 조건

CI 환경에 다음 도구들이 설치되어 있는지 확인하십시오:

CI 워크플로우

프로젝트는 기본 브랜치에 대한 각 풀 리퀘스트가 트리거될 때 자동화된 CI/CD 파이프라인을 목표로 합니다. 워크플로우는 네 개의 순차적인 단계로 구성됩니다.

단계 1 – 환경 설정

목적: CI 러너에 필요한 모든 도구와 종속성을 준비합니다 (AMD64 및 ARM64 에이전트를 모두 지원).

주요 작업

  • 리포지토리를 체크아웃합니다.
  • 패키지 관리자를 통해 k6 부하 테스트 도구를 설치합니다.
  • 로컬 Kubernetes 클러스터용 Kind를 다운로드하고 설치합니다.
  • kubectl을 설정하여 클러스터를 관리합니다.
  • 필요한 권한 및 환경 변수를 구성합니다.

단계 2 – 클러스터 프로비저닝

목적: 테스트를 위한 완전한 Kubernetes 환경을 생성하고 구성합니다.

주요 작업

  • kind-config.yaml을 사용하여 다중 노드 Kind 클러스터를 생성합니다.
  • 요청 라우팅을 위해 NGINX Ingress Controller를 설치합니다.
  • 모든 컨트롤 플레인 구성 요소가 준비될 때까지 대기합니다.
  • http‑echo 애플리케이션(foo 및 bar 서비스)을 배포합니다.
  • 모든 파드가 실행 중이며 서비스에 접근 가능한지 확인합니다.
  • 호스트명 기반 라우팅을 위한 Ingress 규칙을 구성합니다.

단계 3 – 부하 테스트

목적: 배포된 서비스에 대해 포괄적인 부하 테스트를 실행합니다.

주요 작업

  • 엔드포인트 가용성을 확인하기 위해 헬스 체크 프로브를 수행합니다.
  • 정의된 시나리오로 k6 스크립트(load-test.js)를 실행합니다.
  • 실행 중 실시간 성능 메트릭을 모니터링합니다.
  • JSON 형식으로 상세 테스트 결과를 생성합니다.
  • foo와 bar 서비스 모두에 대한 사용자 정의 메트릭(응답 시간, 오류율, 처리량)을 수집합니다.

테스트 구성

단계기간가상 사용자목적
Ramp‑up10 s0 → 10목표 부하로 점진적인 로드 증가
Sustained30 s20최대 성능 평가
Ramp‑down10 s20 → 0부드러운 로드 감소

성능 임계값

  • Ramp‑up: 목표 부하에 도달하기 위한 10 초
  • Sustained load: 최대 가상 사용자 수에서 30 초
  • Ramp‑down: 부하를 0으로 감소시키는 10 초
  • P95 응답 시간

참고: Goodnotes Take‑Home Assignment – DevOps Engineering

Note: 솔루션이 팀의 기대에 미치지 못했습니다.

Back to Blog

관련 글

더 보기 »

안녕, 뉴비 여기요.

안녕! 나는 다시 S.T.E.M. 분야로 돌아가고 있어. 에너지 시스템, 과학, 기술, 공학, 그리고 수학을 배우는 것을 즐겨. 내가 진행하고 있는 프로젝트 중 하나는...