🤖

본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.

⚠️

본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.

이미지 로딩 중...

Kurtosis 기본 명령어 마스터 - 슬라이드 1/7
A

AI Generated

2025. 12. 2. · 22 Views

Kurtosis 기본 명령어 마스터

분산 시스템과 블록체인 노드를 격리된 환경에서 손쉽게 테스트할 수 있는 Kurtosis의 핵심 명령어를 다룹니다. 초급 개발자도 바로 실무에 적용할 수 있도록 각 명령어의 개념과 활용법을 친절하게 설명합니다.


목차

  1. kurtosis_enclave
  2. kurtosis_run
  3. kurtosis_service
  4. kurtosis_logs
  5. kurtosis_clean
  6. 실습_첫_번째_enclave_생성하기

1. kurtosis enclave

김개발 씨는 블록체인 노드 테스트를 앞두고 있었습니다. 로컬 환경에서 여러 노드를 동시에 띄워야 하는데, 서로 충돌하면 어떡하지?

걱정이 태산이었습니다. 선배 박시니어 씨가 다가와 한마디 했습니다.

"Enclave 써봤어요?"

Enclave는 한마디로 격리된 테스트 환경입니다. 마치 실험실에서 각각의 실험을 독립된 시험관에서 진행하는 것과 같습니다.

여러 개의 enclave를 만들어 서로 영향을 주지 않는 독립적인 환경에서 테스트를 진행할 수 있습니다.

다음 코드를 살펴봅시다.

# 새로운 enclave 생성하기
kurtosis enclave add my-test-env

# 현재 존재하는 모든 enclave 목록 확인
kurtosis enclave ls

# 특정 enclave의 상세 정보 확인
kurtosis enclave inspect my-test-env

# 더 이상 필요 없는 enclave 삭제
kurtosis enclave rm my-test-env

# 모든 enclave 한번에 정리
kurtosis enclave rm -a

김개발 씨는 입사 3개월 차 주니어 개발자입니다. 오늘 팀장님으로부터 중요한 미션을 받았습니다.

새로 개발 중인 블록체인 네트워크를 로컬에서 테스트해보라는 것이었습니다. 문제는 이미 다른 프로젝트의 노드들이 로컬에서 돌아가고 있다는 점이었습니다.

"이걸 어떻게 분리하지?" 김개발 씨는 고민에 빠졌습니다. Docker 컨테이너를 일일이 관리하자니 복잡하고, 포트 충돌이라도 나면 디버깅하기 여간 까다로운 게 아니었습니다.

바로 그때 선배 박시니어 씨가 조언을 건넸습니다. "Kurtosis의 enclave를 사용해보세요.

완전히 격리된 환경을 뚝딱 만들 수 있어요." 그렇다면 enclave란 정확히 무엇일까요? 쉽게 비유하자면, enclave는 마치 대형 쇼핑몰의 개별 매장과 같습니다.

같은 건물 안에 있지만, 각 매장은 독립적으로 운영됩니다. A 매장에서 인테리어 공사를 해도 B 매장의 영업에는 전혀 영향이 없습니다.

이처럼 enclave도 같은 컴퓨터 안에서 완전히 분리된 테스트 환경을 제공합니다. enclave가 없던 시절에는 어땠을까요?

개발자들은 테스트 환경을 직접 구성해야 했습니다. Docker 네트워크를 만들고, 컨테이너 이름이 충돌하지 않도록 신경 쓰고, 포트 번호도 일일이 관리해야 했습니다.

프로젝트가 많아질수록 이런 관리 작업은 악몽이 되었습니다. 바로 이런 문제를 해결하기 위해 Kurtosis의 enclave가 등장했습니다.

kurtosis enclave add 명령어 하나면 새로운 격리 환경이 생성됩니다. 이름만 다르게 지정하면 원하는 만큼 환경을 만들 수 있습니다.

각 enclave는 자체적인 네트워크와 리소스를 가지므로 절대 서로 간섭하지 않습니다. 위의 코드를 살펴보겠습니다.

첫 번째 줄의 enclave add 명령어는 my-test-env라는 이름의 새 환경을 생성합니다. 두 번째 줄의 enclave ls는 현재 존재하는 모든 enclave 목록을 보여줍니다.

테스트가 끝나면 enclave rm으로 깔끔하게 정리할 수 있습니다. 실제 현업에서는 어떻게 활용할까요?

예를 들어 블록체인 프로젝트에서 메인넷과 테스트넷을 동시에 테스트해야 한다고 가정해봅시다. mainnet-test와 testnet-test라는 두 개의 enclave를 만들어 각각 독립적으로 테스트를 진행할 수 있습니다.

버전 업그레이드 전후를 비교하는 A/B 테스트에도 안성맞춤입니다. 하지만 주의할 점도 있습니다.

enclave를 너무 많이 만들어두면 시스템 리소스를 낭비하게 됩니다. 사용이 끝난 enclave는 바로바로 정리하는 습관을 들이는 것이 좋습니다.

-a 옵션을 사용하면 모든 enclave를 한 번에 삭제할 수 있어 편리합니다. 다시 김개발 씨의 이야기로 돌아가 봅시다.

박시니어 씨의 조언대로 enclave를 만들어 테스트를 진행하니, 기존 프로젝트와 전혀 충돌 없이 새 블록체인 네트워크를 테스트할 수 있었습니다. "이렇게 편한 도구가 있었다니!" 김개발 씨는 감탄했습니다.

실전 팁

💡 - enclave 이름은 프로젝트명이나 용도를 알 수 있게 지으면 관리가 편합니다

  • 작업 전 enclave ls로 현재 상태를 확인하는 습관을 들이세요

2. kurtosis run

김개발 씨는 enclave를 만드는 데 성공했습니다. 그런데 빈 환경만 덩그러니 있으니 막막했습니다.

이제 여기에 실제 서비스를 어떻게 띄우지? 박시니어 씨가 웃으며 말했습니다.

"패키지를 실행하면 됩니다. kurtosis run으로요."

kurtosis run은 미리 정의된 패키지를 실행하여 복잡한 인프라를 한 번에 구성하는 명령어입니다. 마치 레고 조립 설명서대로 블록을 쌓으면 완성품이 나오는 것처럼, 패키지만 실행하면 필요한 모든 서비스가 자동으로 구성됩니다.

다음 코드를 살펴봅시다.

# GitHub에서 패키지 직접 실행하기
kurtosis run github.com/kurtosis-tech/ethereum-package

# 특정 enclave에서 패키지 실행
kurtosis run --enclave my-blockchain github.com/kurtosis-tech/ethereum-package

# 설정 파일과 함께 실행
kurtosis run github.com/kurtosis-tech/ethereum-package --args-file config.json

# 로컬 패키지 실행
kurtosis run ./my-local-package

# 실행 결과 상세 출력
kurtosis run --show-enclave-info github.com/kurtosis-tech/ethereum-package

김개발 씨는 빈 enclave 앞에서 잠시 멈칫했습니다. 이더리움 테스트 네트워크를 구성하려면 실행 클라이언트, 합의 클라이언트, 그리고 여러 보조 서비스들이 필요했습니다.

예전 같았으면 각각의 Docker 이미지를 찾고, 설정 파일을 만들고, 네트워크를 연결하느라 반나절은 걸렸을 작업이었습니다. "이걸 언제 다 하지..." 한숨이 나오려는 순간, 박시니어 씨가 터미널에 명령어 한 줄을 입력했습니다.

kurtosis run github.com/kurtosis-tech/ethereum-package 화면에 로그가 쏟아지더니, 몇 분 후 완전한 이더리움 테스트 네트워크가 구성되어 있었습니다. 김개발 씨는 눈을 의심했습니다.

그렇다면 kurtosis run은 어떻게 이런 마법 같은 일을 해내는 걸까요? 쉽게 비유하자면, 이 명령어는 마치 밀키트와 같습니다.

요리에 필요한 모든 재료가 손질된 상태로 들어있고, 레시피대로 조리하면 누구나 맛있는 요리를 만들 수 있습니다. Kurtosis 패키지도 마찬가지입니다.

필요한 모든 서비스 정의와 설정이 패키지 안에 담겨 있어서, 실행만 하면 완성된 환경을 얻을 수 있습니다. kurtosis run이 없던 시절에는 어땠을까요?

개발자들은 각 서비스의 Docker 이미지를 찾아 다녀야 했습니다. 버전 호환성을 확인하고, 환경 변수를 설정하고, 네트워크 연결을 구성하는 데 많은 시간을 들여야 했습니다.

더 큰 문제는 이 과정에서 실수가 발생하기 쉽다는 것이었습니다. 한 글자만 잘못 입력해도 전체 시스템이 동작하지 않을 수 있었습니다.

바로 이런 수고를 덜어주는 것이 kurtosis run입니다. 패키지 경로만 지정하면 Kurtosis가 알아서 필요한 이미지를 다운로드하고, 서비스를 시작하고, 네트워크를 연결합니다.

GitHub URL을 직접 지정할 수도 있고, 로컬에 있는 패키지를 실행할 수도 있습니다. 위의 코드를 하나씩 살펴보겠습니다.

첫 번째 줄은 가장 기본적인 사용법입니다. GitHub 저장소 경로만 지정하면 해당 패키지가 실행됩니다.

--enclave 옵션을 사용하면 특정 enclave에서 패키지를 실행할 수 있습니다. --args-file 옵션으로 JSON 형식의 설정 파일을 전달하면 패키지의 동작을 커스터마이즈할 수 있습니다.

실제 현업에서는 어떻게 활용할까요? 블록체인 프로젝트에서 새로운 스마트 컨트랙트를 테스트한다고 가정해봅시다.

이더리움 패키지를 실행하면 로컬에 완전한 테스트 네트워크가 구성됩니다. 여기에 컨트랙트를 배포하고 테스트하면 됩니다.

메인넷에 배포하기 전 모든 시나리오를 안전하게 검증할 수 있습니다. 주의할 점도 있습니다.

패키지를 처음 실행할 때는 Docker 이미지 다운로드에 시간이 걸릴 수 있습니다. 또한 복잡한 패키지는 상당한 시스템 리소스를 사용하므로, 실행 전 충분한 메모리와 디스크 공간이 있는지 확인하는 것이 좋습니다.

다시 김개발 씨의 이야기로 돌아가 봅시다. 명령어 한 줄로 이더리움 테스트 네트워크가 구성되는 것을 본 김개발 씨는 감탄을 금치 못했습니다.

"이제 테스트 환경 구성하느라 시간 낭비 안 해도 되겠네요!"

실전 팁

💡 - 자주 사용하는 설정은 JSON 파일로 저장해두면 재사용하기 편합니다

  • --show-enclave-info 옵션으로 실행 결과를 상세히 확인할 수 있습니다

3. kurtosis service

패키지 실행에 성공한 김개발 씨. 하지만 화면에 여러 서비스 이름이 나열되어 있으니 혼란스러웠습니다.

"이 중에서 제가 필요한 서비스가 뭔지, 어떻게 접속하는지 어떻게 알죠?" 박시니어 씨가 대답했습니다. "kurtosis service 명령어로 확인하면 됩니다."

kurtosis service는 enclave 안에서 실행 중인 서비스들을 관리하는 명령어입니다. 마치 건물 관리실에서 각 층의 입주자 현황을 파악하고 필요한 정보를 제공하는 것처럼, 이 명령어로 각 서비스의 상태와 접속 정보를 확인할 수 있습니다.

다음 코드를 살펴봅시다.

# enclave 내 모든 서비스 목록 확인
kurtosis service ls my-enclave

# 특정 서비스의 상세 정보 확인
kurtosis service inspect my-enclave el-1-geth-lighthouse

# 서비스 내부 셸 접속
kurtosis service shell my-enclave el-1-geth-lighthouse

# 서비스에서 명령어 직접 실행
kurtosis service exec my-enclave el-1-geth-lighthouse "geth version"

# 서비스 중지 및 시작
kurtosis service stop my-enclave el-1-geth-lighthouse
kurtosis service start my-enclave el-1-geth-lighthouse

김개발 씨의 터미널에는 방금 실행한 이더리움 패키지의 결과가 표시되어 있었습니다. el-1-geth-lighthouse, cl-1-lighthouse-geth 등 생소한 이름의 서비스들이 나열되어 있었습니다.

이게 다 뭐지? 어떤 포트로 접속해야 하지?

머리가 복잡해졌습니다. 박시니어 씨가 차분하게 설명했습니다.

"당황하지 마세요. kurtosis service ls로 전체 현황을 파악할 수 있어요." 그렇다면 kurtosis service 명령어군은 어떤 역할을 할까요?

쉽게 비유하자면, 이 명령어는 마치 호텔 프런트 데스크와 같습니다. 어떤 방에 누가 투숙해 있는지, 체크인 시간은 언제인지, 객실 연락처는 무엇인지 모두 알고 있습니다.

kurtosis service도 마찬가지로 enclave 안의 모든 서비스 정보를 관리합니다. 이 명령어가 없다면 어떤 불편함이 있을까요?

개발자들은 Docker 명령어를 직접 사용해 컨테이너 목록을 조회하고, 각 컨테이너의 포트 매핑을 일일이 확인해야 했습니다. 게다가 Kurtosis가 자동 생성한 네트워크 구조를 파악하기도 어려웠습니다.

단순 조회에도 여러 명령어를 조합해야 했습니다. kurtosis service ls는 이 모든 정보를 깔끔하게 정리해서 보여줍니다.

서비스 이름, 상태, 그리고 접속 가능한 포트 정보가 한눈에 들어옵니다. 더 자세한 정보가 필요하면 inspect 명령어를 사용하면 됩니다.

환경 변수, 볼륨 마운트, 네트워크 설정까지 모든 것을 확인할 수 있습니다. 위의 코드를 살펴보겠습니다.

service ls는 해당 enclave의 모든 서비스 목록을 보여줍니다. service inspect는 특정 서비스의 상세 정보를 출력합니다.

디버깅이 필요할 때는 service shell로 컨테이너 내부에 직접 접속할 수 있고, 간단한 명령어는 service exec로 바로 실행할 수 있습니다. 실제 현업에서는 어떻게 활용할까요?

예를 들어 이더리움 노드의 동기화 상태를 확인하고 싶다고 가정해봅시다. service exec로 노드 내부에서 직접 RPC 명령을 실행할 수 있습니다.

문제가 발생했을 때는 service shell로 접속해서 로그 파일을 확인하거나 설정을 점검할 수 있습니다. 주의할 점도 있습니다.

service stop으로 서비스를 중지하면 해당 서비스와 연결된 다른 서비스에도 영향을 줄 수 있습니다. 의존성이 있는 서비스들의 관계를 먼저 파악한 후 중지 여부를 결정하는 것이 좋습니다.

다시 김개발 씨의 이야기로 돌아가 봅시다. service ls 명령어로 서비스 목록을 확인한 김개발 씨는 RPC 포트 번호를 금방 찾아낼 수 있었습니다.

"이제 어디로 접속해야 하는지 바로 알 수 있네요!"

실전 팁

💡 - 서비스 이름이 길면 탭 자동완성 기능을 활용하세요

  • service inspect 결과에서 포트 정보를 잘 확인하면 외부 도구 연동이 쉬워집니다

4. kurtosis logs

김개발 씨가 테스트를 진행하던 중 문제가 발생했습니다. 트랜잭션이 처리되지 않는 것이었습니다.

"왜 안 되는 거지?" 디버깅을 시작해야 했습니다. 박시니어 씨가 말했습니다.

"일단 kurtosis logs로 로그부터 확인해봅시다."

kurtosis logs는 서비스의 로그를 조회하는 명령어입니다. 마치 블랙박스 영상을 확인하듯이, 서비스 내부에서 무슨 일이 일어났는지 시간순으로 추적할 수 있습니다.

문제 발생 시 가장 먼저 확인해야 할 정보입니다.

다음 코드를 살펴봅시다.

# 특정 서비스의 로그 확인
kurtosis service logs my-enclave el-1-geth-lighthouse

# 실시간 로그 스트리밍 (tail -f 처럼)
kurtosis service logs my-enclave el-1-geth-lighthouse --follow

# 모든 서비스의 로그를 한번에 확인
kurtosis enclave logs my-enclave

# 실시간으로 모든 로그 스트리밍
kurtosis enclave logs my-enclave --follow

# 로그를 파일로 저장
kurtosis enclave dump my-enclave ./my-logs-folder

김개발 씨는 당황했습니다. 분명히 모든 설정이 맞는 것 같은데, 트랜잭션이 블록에 포함되지 않고 있었습니다.

화면만 뚫어져라 쳐다봐도 답이 나오지 않았습니다. 박시니어 씨가 다가왔습니다.

"김개발 씨, 추측하지 말고 로그를 봅시다. 로그에 답이 있어요." 개발자에게 로그란 어떤 의미일까요?

쉽게 비유하자면, 로그는 마치 환자의 진료 기록과 같습니다. 의사가 환자를 진단할 때 과거 진료 기록을 보면 어떤 증상이 언제 나타났는지 파악할 수 있습니다.

마찬가지로 개발자도 로그를 통해 시스템에서 무슨 일이 일어났는지 추적할 수 있습니다. 로그 확인이 어려웠던 시절에는 어땠을까요?

Docker 컨테이너의 로그를 확인하려면 컨테이너 ID를 먼저 알아내야 했습니다. 여러 서비스의 로그를 동시에 보려면 터미널을 여러 개 열어야 했습니다.

로그를 파일로 저장하려면 별도의 스크립트가 필요했습니다. kurtosis logs는 이 모든 작업을 단순화합니다.

서비스 이름만 알면 바로 로그를 확인할 수 있습니다. --follow 옵션을 붙이면 새로운 로그가 생성될 때마다 실시간으로 화면에 표시됩니다.

마치 터미널에서 tail -f를 사용하는 것과 같습니다. 위의 코드를 살펴보겠습니다.

service logs 명령어는 특정 서비스의 로그만 보여줍니다. 반면 enclave logs는 해당 enclave 내의 모든 서비스 로그를 한 번에 출력합니다.

문제의 원인을 모를 때는 전체 로그를 보는 것이 도움이 됩니다. enclave dump 명령어는 로그뿐 아니라 설정 파일 등 디버깅에 필요한 모든 정보를 폴더로 저장합니다.

실제 현업에서는 어떻게 활용할까요? 블록체인 노드가 갑자기 동기화를 멈췄다고 가정해봅시다.

--follow 옵션으로 실시간 로그를 확인하면서 어떤 에러 메시지가 나오는지 모니터링할 수 있습니다. 문제가 재현되면 해당 시점의 로그를 캡처해서 분석하면 됩니다.

팀원과 공유해야 할 때는 enclave dump로 전체 정보를 저장해서 전달할 수 있습니다. 주의할 점도 있습니다.

로그 양이 많을 때는 --follow 모드에서 필요한 정보를 놓치기 쉽습니다. grep과 조합하거나, 먼저 전체 로그를 파일로 저장한 후 검색하는 것이 효율적일 수 있습니다.

다시 김개발 씨의 이야기로 돌아가 봅시다. 로그를 확인한 김개발 씨는 에러 메시지를 발견했습니다.

가스 설정이 잘못되어 있었던 것입니다. "로그에 다 나와 있었네요!" 문제를 바로 수정할 수 있었습니다.

실전 팁

💡 - 문제 발생 시 먼저 enclave logs로 전체 상황을 파악한 후, 의심 가는 서비스의 로그를 자세히 살펴보세요

  • 복잡한 문제는 enclave dump로 전체 상태를 저장해두면 나중에 분석하기 편합니다

5. kurtosis clean

김개발 씨는 며칠간 열심히 테스트를 진행했습니다. 그런데 어느 순간 컴퓨터가 느려지기 시작했습니다.

디스크 용량을 확인해보니 거의 꽉 차 있었습니다. "enclave를 여러 개 만들어놓고 안 지웠구나!" 박시니어 씨가 해결책을 알려주었습니다.

"kurtosis clean으로 정리하세요."

kurtosis clean은 Kurtosis가 사용한 리소스를 정리하는 명령어입니다. 마치 실험이 끝난 후 실험실을 청소하는 것처럼, 더 이상 필요 없는 enclave와 관련 데이터를 깔끔하게 제거합니다.

디스크 공간 확보와 시스템 성능 유지에 필수적인 명령어입니다.

다음 코드를 살펴봅시다.

# 중지된 모든 enclave 정리
kurtosis clean

# 실행 중인 enclave까지 모두 정리
kurtosis clean -a

# 특정 enclave만 삭제
kurtosis enclave rm my-test-env

# Kurtosis 엔진 자체를 중지
kurtosis engine stop

# 엔진 재시작 (문제 발생 시)
kurtosis engine restart

김개발 씨의 노트북 팬이 요란하게 돌아가고 있었습니다. 간단한 문서 작업을 하는데도 버벅거렸습니다.

무엇이 문제인지 확인해보니, Docker 컨테이너들이 백그라운드에서 잔뜩 실행되고 있었습니다. 며칠간 테스트하면서 만들었던 enclave들이 그대로 남아 있었던 것입니다.

"아... 테스트 끝나고 정리를 안 했구나." 김개발 씨는 뒤늦게 깨달았습니다.

kurtosis clean은 왜 중요할까요? 쉽게 비유하자면, 이 명령어는 마치 대청소와 같습니다.

방을 쓰면서 물건이 쌓이듯이, 테스트를 하면서 enclave와 컨테이너, 이미지들이 쌓입니다. 주기적으로 청소하지 않으면 공간이 부족해지고, 전체적인 성능이 저하됩니다.

정리하지 않으면 어떤 문제가 생길까요? 첫째, 디스크 공간이 부족해집니다.

Docker 이미지와 볼륨 데이터가 계속 쌓이기 때문입니다. 둘째, 시스템 리소스가 낭비됩니다.

사용하지 않는 컨테이너도 메모리를 점유합니다. 셋째, enclave 이름이 충돌할 수 있습니다.

예전에 만든 것과 같은 이름을 사용하려면 에러가 발생합니다. kurtosis clean은 이런 문제를 한 번에 해결합니다.

기본적으로 중지된 enclave만 정리합니다. 혹시 실행 중인 중요한 환경이 있을까봐 안전하게 동작하는 것입니다.

모든 것을 깔끔하게 정리하고 싶다면 -a 옵션을 사용하면 됩니다. 이 옵션은 실행 중인 enclave까지 모두 제거합니다.

위의 코드를 살펴보겠습니다. 기본 kurtosis clean 명령어는 안전하게 중지된 환경만 정리합니다.

-a 옵션을 추가하면 현재 실행 중인 모든 enclave도 함께 제거됩니다. 특정 enclave만 삭제하고 싶다면 enclave rm 명령어를 사용합니다.

문제가 발생했을 때는 engine restart로 Kurtosis 엔진 자체를 재시작할 수 있습니다. 실제 현업에서는 어떻게 활용할까요?

하루 업무를 마칠 때 kurtosis clean을 실행하는 습관을 들이면 좋습니다. 또는 새로운 테스트를 시작하기 전에 정리를 먼저 하는 것도 좋은 방법입니다.

CI/CD 파이프라인에서는 테스트 완료 후 자동으로 정리 명령을 실행하도록 설정하는 것이 일반적입니다. 주의할 점도 있습니다.

-a 옵션은 실행 중인 환경도 모두 삭제합니다. 다른 팀원이 사용 중인 환경이 있다면 먼저 확인하고 실행해야 합니다.

공유 서버에서는 특히 주의가 필요합니다. 다시 김개발 씨의 이야기로 돌아가 봅시다.

kurtosis clean -a를 실행하자 수십 기가바이트의 디스크 공간이 확보되었습니다. 노트북도 다시 쾌적하게 돌아갔습니다.

"앞으로는 테스트 끝나면 바로바로 정리해야겠다!" 김개발 씨는 다짐했습니다.

실전 팁

💡 - 하루 업무를 마칠 때 kurtosis clean을 습관처럼 실행하세요

  • -a 옵션 사용 전에는 실행 중인 중요한 환경이 없는지 꼭 확인하세요

6. 실습 첫 번째 enclave 생성하기

지금까지 Kurtosis의 핵심 명령어들을 살펴보았습니다. 이제 직접 손으로 따라해볼 차례입니다.

김개발 씨와 함께 처음부터 끝까지 enclave를 생성하고, 패키지를 실행하고, 서비스를 확인한 뒤 정리하는 전체 과정을 실습해봅시다.

이 실습에서는 Kurtosis의 기본 워크플로우를 처음부터 끝까지 경험합니다. 마치 요리 레시피를 따라 하듯이, 각 단계를 순서대로 실행하면 완전한 테스트 환경을 구축하고 정리하는 과정을 익힐 수 있습니다.

다음 코드를 살펴봅시다.

# 1단계: Kurtosis 엔진 상태 확인
kurtosis engine status

# 2단계: 새로운 enclave 생성
kurtosis enclave add my-first-enclave

# 3단계: enclave 목록 확인
kurtosis enclave ls

# 4단계: 간단한 패키지 실행 (예: 이더리움)
kurtosis run --enclave my-first-enclave github.com/kurtosis-tech/ethereum-package

# 5단계: 서비스 목록 확인
kurtosis service ls my-first-enclave

# 6단계: 특정 서비스 로그 확인
kurtosis service logs my-first-enclave el-1-geth-lighthouse

# 7단계: 실습 완료 후 정리
kurtosis enclave rm my-first-enclave

김개발 씨는 이제 Kurtosis 명령어들을 어느 정도 이해했습니다. 하지만 진정한 학습은 직접 해보는 것입니다.

박시니어 씨가 말했습니다. "이제 직접 따라해보세요.

처음부터 끝까지요." 실습을 시작하기 전에, Kurtosis가 설치되어 있어야 합니다. 설치는 공식 문서를 참고하면 됩니다.

Mac이라면 brew install kurtosis-tech/tap/kurtosis-cli, Linux라면 공식 설치 스크립트를 사용합니다. Docker도 미리 실행되어 있어야 합니다.

첫 번째 단계는 엔진 상태 확인입니다. kurtosis engine status 명령어를 실행하면 Kurtosis 엔진이 정상적으로 동작하고 있는지 확인할 수 있습니다.

엔진이 중지되어 있다면 kurtosis engine start로 시작합니다. 두 번째 단계는 enclave 생성입니다.

kurtosis enclave add my-first-enclave를 실행합니다. 몇 초 만에 격리된 테스트 환경이 생성됩니다.

이제 이 안에서 마음껏 실험해도 다른 환경에 영향을 주지 않습니다. 세 번째 단계에서 생성된 enclave를 확인합니다.

kurtosis enclave ls를 실행하면 방금 만든 my-first-enclave가 목록에 나타납니다. 상태가 RUNNING으로 표시되면 정상입니다.

네 번째 단계가 핵심입니다. 패키지를 실행합니다.

kurtosis run 명령어로 이더리움 패키지를 실행합니다. 처음 실행할 때는 이미지 다운로드에 시간이 걸릴 수 있습니다.

커피 한 잔 마시면서 기다리세요. 완료되면 여러 서비스가 생성되었다는 메시지가 표시됩니다.

다섯 번째 단계에서 실행된 서비스들을 확인합니다. kurtosis service ls my-first-enclave를 실행하면 이더리움 네트워크를 구성하는 여러 서비스가 나열됩니다.

각 서비스의 이름과 상태, 포트 정보를 확인할 수 있습니다. 여섯 번째 단계로 로그를 확인해봅니다.

아무 서비스나 골라서 로그를 확인해보세요. kurtosis service logs 명령어를 사용합니다.

노드가 블록을 동기화하는 과정이 로그로 출력되는 것을 볼 수 있습니다. 마지막으로 깔끔하게 정리합니다.

실습이 끝났으면 kurtosis enclave rm my-first-enclave로 enclave를 삭제합니다. 더 과감하게 모든 것을 정리하려면 kurtosis clean -a를 사용해도 됩니다.

축하합니다! 이제 Kurtosis의 기본 워크플로우를 완전히 익혔습니다.

김개발 씨는 실습을 마치고 뿌듯한 표정을 지었습니다. "생각보다 어렵지 않네요!" 박시니어 씨가 웃으며 말했습니다.

"이제 실제 프로젝트에 적용해보세요. 블록체인 테스트가 훨씬 편해질 겁니다."

실전 팁

💡 - 실습할 때는 각 명령어의 출력을 꼼꼼히 읽어보세요. 많은 정보가 담겨 있습니다

  • 처음에는 간단한 패키지로 연습하고, 점차 복잡한 설정에 도전해보세요

이상으로 학습을 마칩니다. 위 내용을 직접 코드로 작성해보면서 익혀보세요!

#Kurtosis#Enclave#DevOps#ContainerOrchestration#DistributedSystems#Blockchain,DevOps

댓글 (0)

댓글을 작성하려면 로그인이 필요합니다.

함께 보면 좋은 카드 뉴스