클라우드/DevOps
[LitmusChaos] Developer Guide
happyso
2025. 5. 25. 23:10
https://docs.litmuschaos.io/docs/developer-guide/chaoscenter-developer-guide
백엔드 컴포넌트
- GraphQL 서버
- Authentication 서버
- MongoDB
프론트 컴포넌트
- React
로컬 세팅 과정은 다음과 같다.
1. mongodb 설치/세팅
## mongodb 설치
❯ docker pull mongo:5
❯ docker network create mongo-cluster
❯ docker run -d --net mongo-cluster -p 27015:27015 --name m1 mongo:5 mongod --replSet rs0 --port 27015
❯ docker run -d --net mongo-cluster -p 27016:27016 --name m2 mongo:5 mongod --replSet rs0 --port 27016
❯ docker run -d --net mongo-cluster -p 27017:27017 --name m3 mongo:5 mongod --replSet rs0 --port 27017
❯ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
22137383c039 mongo:5 "docker-entrypoint.s…" 20 seconds ago Up 19 seconds 0.0.0.0:27017->27017/tcp, :::27017->27017/tcp m3
d0c89e3aebe1 mongo:5 "docker-entrypoint.s…" 39 seconds ago Up 38 seconds 0.0.0.0:27016->27016/tcp, :::27016->27016/tcp, 27017/tcp m2
1059960182e1 mongo:5 "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:27015->27015/tcp, :::27015->27015/tcp, 27017/tcp m1
## 호스트 등록
❯ sudo vim /etc/hosts
127.0.0.1 m1 m2 m3
## mongodb 세팅
❯ docker exec -it m1 mongo -port 27015
> config={"_id":"rs0","members":[{"_id":0,"host":"m1:27015"},{"_id":1,"host":"m2:27016"},{"_id":2,"host":"m3:27017"}]}
{
"_id" : "rs0",
"members" : [
{
"_id" : 0,
"host" : "m1:27015"
},
{
"_id" : 1,
"host" : "m2:27016"
},
{
"_id" : 2,
"host" : "m3:27017"
}
]
}
> rs.initiate(config)
{ "ok" : 1 }
rs0:PRIMARY> db.getSiblingDB("admin").createUser({user:"admin",pwd:"1234",roles:[{role:"root",db:"admin"}]});
Successfully added user: {
"user" : "admin",
"roles" : [
{
"role" : "root",
"db" : "admin"
}
]
}
2. Authentication 서버 실행
export ADMIN_USERNAME=admin
export ADMIN_PASSWORD=litmus
export DB_SERVER="mongodb://m1:27015,m2:27016,m3:27017/?replicaSet=rs0"
export DB_USER=admin
export DB_PASSWORD=1234
export JWT_SECRET=litmus-portal@123
export PORTAL_ENDPOINT=http://localhost:8080
export LITMUS_SVC_ENDPOINT=""
export SELF_AGENT=false
export INFRA_SCOPE=cluster
export INFRA_NAMESPACE=litmus
export LITMUS_PORTAL_NAMESPACE=litmus
export PORTAL_SCOPE=namespace
export SUBSCRIBER_IMAGE=litmuschaos/litmusportal-subscriber:ci
export EVENT_TRACKER_IMAGE=litmuschaos/litmusportal-event-tracker:ci
export CONTAINER_RUNTIME_EXECUTOR=k8sapi
export ARGO_WORKFLOW_CONTROLLER_IMAGE=argoproj/workflow-controller:v2.11.0
export ARGO_WORKFLOW_EXECUTOR_IMAGE=argoproj/argoexec:v2.11.0
export CHAOS_CENTER_SCOPE=cluster
export WORKFLOW_HELPER_IMAGE_VERSION=3.0.0
export LITMUS_CHAOS_OPERATOR_IMAGE=litmuschaos/chaos-operator:3.0.0
export LITMUS_CHAOS_RUNNER_IMAGE=litmuschaos/chaos-runner:3.0.0
export LITMUS_CHAOS_EXPORTER_IMAGE=litmuschaos/chaos-exporter:3.0.0
export VERSION=ci
export HUB_BRANCH_NAME=v2.0.x
export INFRA_DEPLOYMENTS="[\"app=chaos-exporter\", \"name=chaos-operator\", \"app=event-tracker\",\"app=workflow-controller\"]"
export INFRA_COMPATIBLE_VERSIONS='["0.2.0", "0.1.0","ci"]'
export DEFAULT_HUB_BRANCH_NAME=master
export ENABLE_INTERNAL_TLS=false
export REST_PORT=3000
export GRPC_PORT=3030
❯ git clone https://github.com/litmuschaos/litmus.git
❯ cd chaoscenter/authentication/api
❯ go run main.go
3. GraphQL 서버 실행
export DB_SERVER="mongodb://m1:27015,m2:27016,m3:27017/?replicaSet=rs0"
export DB_USER=admin
export DB_PASSWORD=1234
export JWT_SECRET=litmus-portal@123
export PORTAL_ENDPOINT=http://localhost:8080
export LITMUS_SVC_ENDPOINT=""
export SELF_AGENT=false
export INFRA_SCOPE=cluster
export INFRA_NAMESPACE=litmus
export LITMUS_PORTAL_NAMESPACE=litmus
export PORTAL_SCOPE=namespace
export SUBSCRIBER_IMAGE=litmuschaos/litmusportal-subscriber:ci
export EVENT_TRACKER_IMAGE=litmuschaos/litmusportal-event-tracker:ci
export CONTAINER_RUNTIME_EXECUTOR=k8sapi
export ARGO_WORKFLOW_CONTROLLER_IMAGE=argoproj/workflow-controller:v2.11.0
export ARGO_WORKFLOW_EXECUTOR_IMAGE=argoproj/argoexec:v2.11.0
export CHAOS_CENTER_SCOPE=cluster
export WORKFLOW_HELPER_IMAGE_VERSION=3.0.0
export LITMUS_CHAOS_OPERATOR_IMAGE=litmuschaos/chaos-operator:3.0.0
export LITMUS_CHAOS_RUNNER_IMAGE=litmuschaos/chaos-runner:3.0.0
export LITMUS_CHAOS_EXPORTER_IMAGE=litmuschaos/chaos-exporter:3.0.0
export ADMIN_USERNAME=admin
export ADMIN_PASSWORD=litmus
export VERSION=ci
export HUB_BRANCH_NAME=v2.0.x
export INFRA_DEPLOYMENTS="[\"app=chaos-exporter\", \"name=chaos-operator\", \"app=event-tracker\",\"app=workflow-controller\"]"
export INFRA_COMPATIBLE_VERSIONS='["0.2.0", "0.1.0","ci"]'
export DEFAULT_HUB_BRANCH_NAME=master
❯ cd chaoscenter/graphql/server
❯ go run server.go
3. 프론트 세팅
❯ cd chaoscenter/web
❯ yarn
yarn install v1.22.19
[1/4] 🔍 Resolving packages...
warning Resolution field "d3-color@3.1.0" is incompatible with requested version "d3-color@1"
warning Resolution field "d3-color@3.1.0" is incompatible with requested version "d3-color@1 - 2"
[2/4] 🚚 Fetching packages...
[--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------] 0/1202(node:19423) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
[##################################################################------------------------------------------------------------------------------------------------------------------------------] 415/1202
❯ yarn generate-certificate
yarn run v1.22.19
$ sh scripts/generate-certificate.sh
.+.+.....+.......+...+..+.......+...+............+..+++++++++++++++++++++++++++++++++++++++++++++*...+............+++++++++++++++++++++++++++++++++++++++++++++*.+.+.........+..+..................+.+...........+....+.................................+.....+.+..+....+...+++++
..+.+.....+...+.+.........+.....+.......+...+......+..+.......+++++++++++++++++++++++++++++++++++++++++++++*.+..+............+......+...+.+.....+....+..+.......+...+..+.+...........+...+..........+...+..+...+.........+...+......+.......+...+..+....+...+..+.............+......+.....+......+.+...+..+....+.........+..............+...+.........+....+.....+++++++++++++++++++++++++++++++++++++++++++++*...+...+......+....+.....+......+.+...+..+.+............+++++
-----
✨ Done in 0.29s.
❯ yarn dev
yarn run v1.22.19
$ webpack serve --config config/webpack.dev.js
<i> [webpack-dev-server] [HPM] Proxy created: /api -> http://localhost:8080
<i> [webpack-dev-server] [HPM] Proxy rewrite rule created: "^/api" ~> ""
<i> [webpack-dev-server] [HPM] Proxy created: /auth -> http://localhost:3000
<i> [webpack-dev-server] [HPM] Proxy rewrite rule created: "^/auth" ~> ""
<i> [webpack-dev-server] Project is running at:
<i> [webpack-dev-server] Loopback: https://localhost:8185/
<i> [webpack-dev-server] On Your Network (IPv4): https://172.30.1.87:8185/
<i> [webpack-dev-server] On Your Network (IPv6): https://[fe80::1]:8185/
<i> [webpack-dev-server] Content not from webpack is served from '/Users/snchoi/Documents/project/src/litmus/chaoscenter/web/src/static' directory
<i> [webpack-dev-server] 404s will fallback to '/index.html'

