-
Litmus Chaos 로컬 개발 환경 설정카테고리 없음 2024. 8. 16. 20:28
오픈소스 컨트리뷰션 2주차
Litmus Chaos에는 크게 두 가지로 나뉜다.
- Control Plane : Chaos Scenario를 만들고 모니터링하는 UI (=Chaos Center)
- Execution Plane : 실제로 Fault를 주입
여기서 Control Plane에 대한 로컬 환경 설정을 진행하였다.
- Frontend
- Backend
- Auth Server
- GraphQL Server
- MongoDB
Frontend
프론트엔드 소스 위치는 /litmus/chaoscenter/web 에 위치해 있다.
해당 디렉토리로 이동하고 yarn generate-certificate를 이용하여 인증서와 개인키를 만든다.
로컬 개발환경에서 https를 적용하기 위해 설정하는 것 같다.
cd litmus/chaoscenter/web yarn generate-certificate yarn dev
이렇게 표시되면 성공!!
Auth Server
Auth Server는 User와 Project 관련 내용이 포함되어 있다.
Auth Server를 실행하면 다음과 같은 로그를 볼 수 있는데 HTTP REST API Server와 gRPC Server가 동시에 실행된다.
REST API Server는 UI와 통신하고 gRPC Server는 GraphQL Server와 통신한다.
{... "msg":"Listening and serving HTTP on :3000"} {... "msg":"Listening and serving gRPC on :3030"}
chaoscenter/authentication/pkg/utils/configs.go에서 환경변수 목록을 확인할 수 있으며
goland 기준으로 Edit Configuration > Configuration > Enviornment에 해당 변수들을 선언하면 된다.
* 아래 환경변수 목록은 실행을 하기 위한 최소한의 목록이며 추후 수정될 수 있음
더보기KEY VALUE ADMIN_PASSWORD litmus ADMIN_USERNAME admin DB_PASSWORD 1234 DB_SERVER mongodb://localhost:27016/litmus DB_USER root GRPC_PORT 3030 LITMUS_GQL_GRPC_PORT 8000 REST_PORT 3000 Swagger
Swagger는 다른 프레임워크들에서 사용하는 Swagger와는 조금 실행방식이 달랐다.
FastAPI나 Spring에서 Swagger를 사용할 때는 코드 내부에 Swagger용 Annotation을 선언하고 자동으로 실행이 된 반면,
gin에서는 yaml파일과 go파일을 만들고 이 파일로 로컬서버를 실행하는 방식인 것 같았다.
// swago, go-swagger 설치 go install github.com/swaggo/swag/cmd/swag@latest go install github.com/go-swagger/go-swagger/cmd/swagger@latest // swagger 문서 생성 swag init // swagger 서버 실행 swagger serve swagger.yaml
이렇게 표시되면 성공!!
GraphQL Server
Auth Server와 마찬가지로 gRPC Server와 GraphQL Server가 동시에 실행된다.
Auth Server의 환경변수들은 대략적으로 이해가 갔지만 GraphQL Server 환경변수들은 이해하기 힘들었다..
추후 공부가 더 필요할 것 같다..
* 아래 환경변수 목록은 실행을 하기 위한 최소한의 목록이며 추후 수정될 수 있음
더보기KEY VALUE ARGO_WORKFLOW_CONTROLLER_IMAGE argoproj/workflow-controller:v2.11.0 ARGO_WORKFLOW_EXECUTOR_IMAGE argoproj/argoexec:v2.11.0 CONTAINER_RUNTIME_EXECUTOR k8sapi DB_PASSWORD 1234 DB_SERVER mongodb://localhost:27016 DB_USER root DEFAULT_HUB_BRANCH_NAME master EVENT_TRACKER_IMAGE litmuschaos/litmusportal-event-tracker:ci GRPC_PORT 8000 INFRA_COMPATIBLE_VERSIONS '["0.2.0", "0.1.0","ci"]' INFRA_DEPLOYMENTS "[\"app\=chaos-exporter\", \"name\=chaos-operator\", \"app\=event-tracker\",\"app\=workflow-controller\"]" LITMUS_AUTH_GRPC_PORT 3030 LITMUS_CHAOS_EXPORTER_IMAGE litmuschaos/chaos-exporter:3.0.0 LITMUS_CHAOS_OPERATOR_IMAGE litmuschaos/chaos-operator:3.0.0 LITMUS_CHAOS_RUNNER_IMAGE litmuschaos/chaos-runner:3.0.0 REST_PORT 8080 SUBSCRIBER_IMAGE litmuschaos/litmusportal-subscriber:ci MongoDB
GraphQL Server까지 세팅을 마치고 다 끝났구나 싶었는데 자꾸 GraphQL Server가 죽어서 확인해 보니
아래와 같은 에러가 로그에 찍혔다.
$chageStream이라는 기능을 이용하기 위해서는 MongoDB를 Replica set으로 구성해야 한다는 오류였다.
The $changeStream stage is only supported on replica sets
MongoDB Replica Set 구성은 아래 블로그에 자세하게 나와있어 무사히 적용했다!!
최종적으로 아래와 같은 그림이 된다
Ref.
https://docs.litmuschaos.io/docs/architecture/architecture-summary
https://github.com/litmuschaos/litmus/wiki/ChaosCenter-Development-Guide