From 066f140f9b69c30c17fbea14c45b72e6b77c2a1b Mon Sep 17 00:00:00 2001
From: g1eny0ung Load container images into minikube Load container images into minikubeerror obtaining VCS status: exit status 128
in MacOS",id:"run-make-fail-with-error-obtaining-vcs-status-exit-status-128-in-macos",level:3}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,o.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"This document describes how to configure a local development environment for Chaos Mesh."}),"\n",(0,i.jsxs)(n.p,{children:["Most components of Chaos Mesh are ",(0,i.jsx)(n.strong,{children:"only designed for Linux"}),", so we suggest that you also configure your development environment to run on Linux. For example, use a virtual machine or WSL 2 and use VSCode Remote as your editor."]}),"\n",(0,i.jsx)(n.p,{children:"This document assumes that you are using Linux, without the limitations of specific Linux distributions. If you insist on using Windows/MacOS, you may need some tricks to make it work for you (For example, some make targets may fail depending on the environment)."}),"\n",(0,i.jsx)(n.h2,{id:"configuration-requirements",children:"Configuration Requirements"}),"\n",(0,i.jsx)(n.p,{children:"Before configuring, it is recommended that you install the development tools listed below, most of them may already be installed in your environment:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.gnu.org/software/make/",children:"make"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.docker.com/install/",children:"docker"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://go.dev/doc/install",children:"golang"}),", ",(0,i.jsx)(n.code,{children:"v1.18"})," or later versions"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://gcc.gnu.org/",children:"gcc"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://helm.sh/",children:"helm"}),", ",(0,i.jsx)(n.code,{children:"v3.9.0"})," or later versions"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://minikube.sigs.k8s.io/docs/start/",children:"minikube"})}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Optional:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://nodejs.org/en/",children:"nodejs"})," and ",(0,i.jsx)(n.a,{href:"https://pnpm.io/",children:"pnpm"}),", for developing Chaos Dashboard"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"compiling-chaos-mesh",children:"Compiling Chaos Mesh"}),"\n",(0,i.jsx)(n.p,{children:"After installing, follow the steps below to compile Chaos Mesh."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Clone the Chaos Mesh repository to your local server:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/chaos-mesh/chaos-mesh.git\ncd chaos-mesh\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Make sure that ",(0,i.jsx)(n.a,{href:"https://docs.docker.com/install/",children:"Docker"})," is installed and running."]}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsx)(n.p,{children:"Chaos Mesh relies on Docker to build container images, this is for consistency with the production environment."})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Compile Chaos Mesh:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"UI=1 make image\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"UI=1"})," means that we will compile the user interface of Chaos Dashboard, if you don't need it, you can omit this env."]})}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["If you want to specify the tag of the image, you can use ",(0,i.jsx)(n.code,{children:"UI=1 make IMAGE_TAG=dev image"}),"."]})}),"\n",(0,i.jsx)(n.p,{children:"After compiling, you should get the following container images:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-dashboard:latest"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-mesh:latest"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-daemon:latest"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"run-chaos-mesh-in-local-minkube-kubernetes-cluster",children:"Run Chaos Mesh in local minkube Kubernetes cluster"}),"\n",(0,i.jsx)(n.p,{children:"Now you can run Chaos Mesh in a local Kubernetes cluster after compiling."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Start a local Kubernetes cluster with minkube:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"minikube start\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Load container images into minikube:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"minikube image load ghcr.io/chaos-mesh/chaos-dashboard:latest\nminikube image load ghcr.io/chaos-mesh/chaos-mesh:latest\nminikube image load ghcr.io/chaos-mesh/chaos-daemon:latest\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Install Chaos Mesh by Helm:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"helm upgrade --install chaos-mesh-debug ./helm/chaos-mesh --namespace=chaos-mesh-debug --create-namespace\n"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.admonition,{type:"tip",children:[(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"minikube image load"})," would cost lots of time, so here is a trick to avoid load images again and again during development. Using docker from minikube node instead of host's docker:"]}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:'minikube start --mount --mount-string "$(pwd):$(pwd)"\neval $(minikube -p minikube docker-env)\nUI=1 make image\n'})})]}),"\n",(0,i.jsx)(n.h2,{id:"debug-chaos-mesh-in-local-environment",children:"Debug Chaos Mesh in local environment"}),"\n",(0,i.jsxs)(n.p,{children:["We could use ",(0,i.jsx)(n.a,{href:"https://github.com/go-delve/delve",children:"delve"})," with remote debugging to debug the Chaos Mesh in local environment."]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Compile Chaos Mesh with ",(0,i.jsx)(n.code,{children:"DEBUG=1"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"UI=1 DEBUG=1 make image\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Load container images into minikube:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"minikube image load ghcr.io/chaos-mesh/chaos-mesh:latest\nminikube image load ghcr.io/chaos-mesh/chaos-daemon:latest\nminikube image load ghcr.io/chaos-mesh/chaos-dashboard:latest\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Install Chaos Mesh and enable Remote Debugging:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"helm upgrade --install chaos-mesh-debug ./helm/chaos-mesh --namespace=chaos-mesh-debug --create-namespace --set chaosDlv.enable=true --set controllerManager.leaderElection.enabled=false\n"})}),"\n",(0,i.jsxs)(n.admonition,{type:"note",children:[(0,i.jsxs)(n.p,{children:["To ensure high availability, Chaos Mesh turns on ",(0,i.jsx)(n.code,{children:"leader-election"})," feature by default and will create 3 replicas for ",(0,i.jsx)(n.code,{children:"chaos-controller-manager"}),". We will use ",(0,i.jsx)(n.code,{children:"controllerManager.leaderElection.enabled=false"})," to ensure that Chaos Mesh only creates 1 instance of ",(0,i.jsx)(n.code,{children:"chaos-controller-manager"})," for easier debugging."]}),(0,i.jsxs)(n.p,{children:["For more details, see ",(0,i.jsx)(n.a,{href:"/docs/production-installation-using-helm#step-4-install-chaos-mesh-in-different-environments",children:"Install Chaos Mesh in different environments"}),"."]})]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Setup Port-Forwarding and Configure IDE To Connect the Remote Debugger:"}),"\n",(0,i.jsxs)(n.p,{children:["We could use ",(0,i.jsx)(n.code,{children:"kubectl port-forward"})," to forward the delve debugging server to a local port."]}),"\n",(0,i.jsxs)(n.p,{children:["For example, if we want to debug ",(0,i.jsx)(n.code,{children:"chaos-controller-manger"}),", we could execute the following command:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"kubectl -n chaos-mesh-debug port-forward chaos-controller-manager-766dc8488d-7n5bq 58000:8000\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Then we could access the remote delve debugger server with ",(0,i.jsx)(n.code,{children:"127.0.0.1:58000"}),"."]}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["We always use ",(0,i.jsx)(n.code,{children:"8000"})," in the pod for serving the delve debug server, that's a convention. You could find that in helm templates files."]})}),"\n",(0,i.jsx)(n.p,{children:"Then we could configure our favorite IDE to connect to the remote debugger, below are some examples:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["For Goland, see ",(0,i.jsx)(n.a,{href:"https://www.jetbrains.com/help/go/attach-to-running-go-processes-with-debugger.html#attach-to-a-process-on-a-remote-machine",children:"Attach to running Go processes with the debugger#Attach to a process on a remote machine"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["For VSCode, see ",(0,i.jsx)(n.a,{href:"https://github.com/golang/vscode-go/blob/master/docs/debugging.md#remote-debugging",children:"vscode-go - Debugging#Remote Debugging"}),"."]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["For more detailed information, see ",(0,i.jsx)(n.a,{href:"https://github.com/chaos-mesh/chaos-mesh/blob/master/images/chaos-dlv/README.md",children:"README.md for container image chaos-dlv"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"whats-next",children:"What's Next"}),"\n",(0,i.jsxs)(n.p,{children:["After finishing the above preparation, you can try to ",(0,i.jsx)(n.a,{href:"/docs/add-new-chaos-experiment-type",children:"Add a New Chaos Experiment Type"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"faq",children:"FAQ"}),"\n",(0,i.jsxs)(n.h3,{id:"run-make-fail-with-error-obtaining-vcs-status-exit-status-128-in-macos",children:["Run make fail with ",(0,i.jsx)(n.code,{children:"error obtaining VCS status: exit status 128"})," in MacOS"]}),"\n",(0,i.jsxs)(n.p,{children:["The reason is related to ",(0,i.jsx)(n.a,{href:"https://github.blog/2022-04-12-git-security-vulnerability-announced/",children:"https://github.blog/2022-04-12-git-security-vulnerability-announced/"}),". It's recommended you to read it first."]}),"\n",(0,i.jsxs)(n.p,{children:["Chaos Mesh will start the container (",(0,i.jsx)(n.code,{children:"dev-env"})," or ",(0,i.jsx)(n.code,{children:"build-env"}),") with the current user (when you call ",(0,i.jsx)(n.code,{children:"make"}),"). You can find the appropriate ",(0,i.jsx)(n.code,{children:"--user"})," flag in ",(0,i.jsx)(n.a,{href:"https://github.com/chaos-mesh/chaos-mesh/blob/813b650c02e0b065ae5c4707725c346929ab1847/build/get_env_shell.py#L81C10-L81C10",children:"get_env_shell.py#L81C10-L81C10"}),". So when Git is looking for a top-level ",(0,i.jsx)(n.code,{children:".git"})," directory, it will stop if its directory traversal changes ownership from the current user."]}),"\n",(0,i.jsxs)(n.p,{children:["A temporary solution for now is to comment out the line of ",(0,i.jsx)(n.code,{children:"--user"}),"."]})]})}function d(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},7463:(e,n,s)=>{s.d(n,{Z:()=>a,a:()=>t});var i=s(50959);const o={},r=i.createContext(o);function t(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:t(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkchaos_mesh_website=self.webpackChunkchaos_mesh_website||[]).push([[7193],{51191:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>t,default:()=>d,frontMatter:()=>r,metadata:()=>a,toc:()=>c});var i=s(11527),o=s(7463);const r={title:"Configure the Development Environment"},t=void 0,a={id:"configure-development-environment",title:"Configure the Development Environment",description:"This document describes how to configure a local development environment for Chaos Mesh.",source:"@site/versioned_docs/version-2.6.2/configure-development-environment.md",sourceDirName:".",slug:"/configure-development-environment",permalink:"/docs/configure-development-environment",draft:!1,unlisted:!1,editUrl:"https://github.com/chaos-mesh/website/edit/master/versioned_docs/version-2.6.2/configure-development-environment.md",tags:[],version:"2.6.2",frontMatter:{title:"Configure the Development Environment"},sidebar:"docs",previous:{title:"Developer Guide Overview",permalink:"/docs/developer-guide-overview"},next:{title:"Add a New Chaos Experiment Type",permalink:"/docs/add-new-chaos-experiment-type"}},l={},c=[{value:"Configuration Requirements",id:"configuration-requirements",level:2},{value:"Compiling Chaos Mesh",id:"compiling-chaos-mesh",level:2},{value:"Run Chaos Mesh in local minkube Kubernetes cluster",id:"run-chaos-mesh-in-local-minkube-kubernetes-cluster",level:2},{value:"Debug Chaos Mesh in local environment",id:"debug-chaos-mesh-in-local-environment",level:2},{value:"What's Next",id:"whats-next",level:2},{value:"FAQ",id:"faq",level:2},{value:"Run make fail with error obtaining VCS status: exit status 128
in MacOS",id:"run-make-fail-with-error-obtaining-vcs-status-exit-status-128-in-macos",level:3}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,o.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"This document describes how to configure a local development environment for Chaos Mesh."}),"\n",(0,i.jsxs)(n.p,{children:["Most components of Chaos Mesh are ",(0,i.jsx)(n.strong,{children:"only designed for Linux"}),", so we suggest that you also configure your development environment to run on Linux. For example, use a virtual machine or WSL 2 and use VSCode Remote as your editor."]}),"\n",(0,i.jsx)(n.p,{children:"This document assumes that you are using Linux, without the limitations of specific Linux distributions. If you insist on using Windows/MacOS, you may need some tricks to make it work for you (For example, some make targets may fail depending on the environment)."}),"\n",(0,i.jsx)(n.h2,{id:"configuration-requirements",children:"Configuration Requirements"}),"\n",(0,i.jsx)(n.p,{children:"Before configuring, it is recommended that you install the development tools listed below, most of them may already be installed in your environment:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.gnu.org/software/make/",children:"make"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.docker.com/install/",children:"docker"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://go.dev/doc/install",children:"golang"}),", ",(0,i.jsx)(n.code,{children:"v1.18"})," or later versions"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://gcc.gnu.org/",children:"gcc"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://helm.sh/",children:"helm"}),", ",(0,i.jsx)(n.code,{children:"v3.9.0"})," or later versions"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://minikube.sigs.k8s.io/docs/start/",children:"minikube"})}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Optional:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://nodejs.org/en/",children:"nodejs"})," and ",(0,i.jsx)(n.a,{href:"https://pnpm.io/",children:"pnpm"}),", for developing Chaos Dashboard"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"compiling-chaos-mesh",children:"Compiling Chaos Mesh"}),"\n",(0,i.jsx)(n.p,{children:"After installing, follow the steps below to compile Chaos Mesh."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Clone the Chaos Mesh repository to your local server:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/chaos-mesh/chaos-mesh.git\ncd chaos-mesh\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Make sure that ",(0,i.jsx)(n.a,{href:"https://docs.docker.com/install/",children:"Docker"})," is installed and running."]}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsx)(n.p,{children:"Chaos Mesh relies on Docker to build container images, this is for consistency with the production environment."})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Compile Chaos Mesh:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"UI=1 make image\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"UI=1"})," means that we will compile the user interface of Chaos Dashboard, if you don't need it, you can omit this env."]})}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["If you want to specify the tag of the image, you can use ",(0,i.jsx)(n.code,{children:"UI=1 make IMAGE_TAG=dev image"}),"."]})}),"\n",(0,i.jsx)(n.p,{children:"After compiling, you should get the following container images:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-dashboard:latest"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-mesh:latest"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-daemon:latest"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"run-chaos-mesh-in-local-minkube-kubernetes-cluster",children:"Run Chaos Mesh in local minkube Kubernetes cluster"}),"\n",(0,i.jsx)(n.p,{children:"Now you can run Chaos Mesh in a local Kubernetes cluster after compiling."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Start a local Kubernetes cluster with minkube:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"minikube start\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Load container images into minikube:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"minikube image load ghcr.io/chaos-mesh/chaos-dashboard:latest\nminikube image load ghcr.io/chaos-mesh/chaos-mesh:latest\nminikube image load ghcr.io/chaos-mesh/chaos-daemon:latest\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Install Chaos Mesh by Helm:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"helm upgrade --install chaos-mesh-debug ./helm/chaos-mesh --namespace=chaos-mesh-debug --create-namespace\n"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.admonition,{type:"tip",children:[(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"minikube image load"})," would cost lots of time, so here is a trick to avoid load images again and again during development. Using docker from minikube node instead of host's docker:"]}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:'minikube start --mount --mount-string "$(pwd):$(pwd)"\neval $(minikube -p minikube docker-env)\nUI=1 make image\n'})})]}),"\n",(0,i.jsx)(n.h2,{id:"debug-chaos-mesh-in-local-environment",children:"Debug Chaos Mesh in local environment"}),"\n",(0,i.jsxs)(n.p,{children:["We could use ",(0,i.jsx)(n.a,{href:"https://github.com/go-delve/delve",children:"delve"})," with remote debugging to debug the Chaos Mesh in local environment."]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Compile Chaos Mesh with ",(0,i.jsx)(n.code,{children:"DEBUGGER=1"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"UI=1 DEBUGGER=1 make image\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Load container images into minikube:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"minikube image load ghcr.io/chaos-mesh/chaos-mesh:latest\nminikube image load ghcr.io/chaos-mesh/chaos-daemon:latest\nminikube image load ghcr.io/chaos-mesh/chaos-dashboard:latest\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Install Chaos Mesh and enable Remote Debugging:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"helm upgrade --install chaos-mesh-debug ./helm/chaos-mesh --namespace=chaos-mesh-debug --create-namespace --set chaosDlv.enable=true --set controllerManager.leaderElection.enabled=false\n"})}),"\n",(0,i.jsxs)(n.admonition,{type:"note",children:[(0,i.jsxs)(n.p,{children:["To ensure high availability, Chaos Mesh turns on ",(0,i.jsx)(n.code,{children:"leader-election"})," feature by default and will create 3 replicas for ",(0,i.jsx)(n.code,{children:"chaos-controller-manager"}),". We will use ",(0,i.jsx)(n.code,{children:"controllerManager.leaderElection.enabled=false"})," to ensure that Chaos Mesh only creates 1 instance of ",(0,i.jsx)(n.code,{children:"chaos-controller-manager"})," for easier debugging."]}),(0,i.jsxs)(n.p,{children:["For more details, see ",(0,i.jsx)(n.a,{href:"/docs/production-installation-using-helm#step-4-install-chaos-mesh-in-different-environments",children:"Install Chaos Mesh in different environments"}),"."]})]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Setup Port-Forwarding and Configure IDE To Connect the Remote Debugger:"}),"\n",(0,i.jsxs)(n.p,{children:["We could use ",(0,i.jsx)(n.code,{children:"kubectl port-forward"})," to forward the delve debugging server to a local port."]}),"\n",(0,i.jsxs)(n.p,{children:["For example, if we want to debug ",(0,i.jsx)(n.code,{children:"chaos-controller-manger"}),", we could execute the following command:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"kubectl -n chaos-mesh-debug port-forward chaos-controller-manager-766dc8488d-7n5bq 58000:8000\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Then we could access the remote delve debugger server with ",(0,i.jsx)(n.code,{children:"127.0.0.1:58000"}),"."]}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["We always use ",(0,i.jsx)(n.code,{children:"8000"})," in the pod for serving the delve debug server, that's a convention. You could find that in helm templates files."]})}),"\n",(0,i.jsx)(n.p,{children:"Then we could configure our favorite IDE to connect to the remote debugger, below are some examples:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["For Goland, see ",(0,i.jsx)(n.a,{href:"https://www.jetbrains.com/help/go/attach-to-running-go-processes-with-debugger.html#attach-to-a-process-on-a-remote-machine",children:"Attach to running Go processes with the debugger#Attach to a process on a remote machine"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["For VSCode, see ",(0,i.jsx)(n.a,{href:"https://github.com/golang/vscode-go/blob/master/docs/debugging.md#remote-debugging",children:"vscode-go - Debugging#Remote Debugging"}),"."]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["For more detailed information, see ",(0,i.jsx)(n.a,{href:"https://github.com/chaos-mesh/chaos-mesh/blob/master/images/chaos-dlv/README.md",children:"README.md for container image chaos-dlv"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"whats-next",children:"What's Next"}),"\n",(0,i.jsxs)(n.p,{children:["After finishing the above preparation, you can try to ",(0,i.jsx)(n.a,{href:"/docs/add-new-chaos-experiment-type",children:"Add a New Chaos Experiment Type"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"faq",children:"FAQ"}),"\n",(0,i.jsxs)(n.h3,{id:"run-make-fail-with-error-obtaining-vcs-status-exit-status-128-in-macos",children:["Run make fail with ",(0,i.jsx)(n.code,{children:"error obtaining VCS status: exit status 128"})," in MacOS"]}),"\n",(0,i.jsxs)(n.p,{children:["The reason is related to ",(0,i.jsx)(n.a,{href:"https://github.blog/2022-04-12-git-security-vulnerability-announced/",children:"https://github.blog/2022-04-12-git-security-vulnerability-announced/"}),". It's recommended you to read it first."]}),"\n",(0,i.jsxs)(n.p,{children:["Chaos Mesh will start the container (",(0,i.jsx)(n.code,{children:"dev-env"})," or ",(0,i.jsx)(n.code,{children:"build-env"}),") with the current user (when you call ",(0,i.jsx)(n.code,{children:"make"}),"). You can find the appropriate ",(0,i.jsx)(n.code,{children:"--user"})," flag in ",(0,i.jsx)(n.a,{href:"https://github.com/chaos-mesh/chaos-mesh/blob/813b650c02e0b065ae5c4707725c346929ab1847/build/get_env_shell.py#L81C10-L81C10",children:"get_env_shell.py#L81C10-L81C10"}),". So when Git is looking for a top-level ",(0,i.jsx)(n.code,{children:".git"})," directory, it will stop if its directory traversal changes ownership from the current user."]}),"\n",(0,i.jsxs)(n.p,{children:["A temporary solution for now is to comment out the line of ",(0,i.jsx)(n.code,{children:"--user"}),"."]})]})}function d(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},7463:(e,n,s)=>{s.d(n,{Z:()=>a,a:()=>t});var i=s(50959);const o={},r=i.createContext(o);function t(e){const n=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:t(e.components),i.createElement(r.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/b516026a.47349b3d.js b/assets/js/b516026a.cbda959d.js
similarity index 64%
rename from assets/js/b516026a.47349b3d.js
rename to assets/js/b516026a.cbda959d.js
index 7a0307a97d..035b758183 100644
--- a/assets/js/b516026a.47349b3d.js
+++ b/assets/js/b516026a.cbda959d.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkchaos_mesh_website=self.webpackChunkchaos_mesh_website||[]).push([[3903],{22757:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>r,metadata:()=>t,toc:()=>c});var o=s(11527),i=s(7463);const r={title:"Configure the Development Environment"},a=void 0,t={id:"configure-development-environment",title:"Configure the Development Environment",description:"This document describes how to configure a local development environment for Chaos Mesh.",source:"@site/versioned_docs/version-2.4.3/configure-development-environment.md",sourceDirName:".",slug:"/configure-development-environment",permalink:"/docs/2.4.3/configure-development-environment",draft:!1,unlisted:!1,editUrl:"https://github.com/chaos-mesh/website/edit/master/versioned_docs/version-2.4.3/configure-development-environment.md",tags:[],version:"2.4.3",frontMatter:{title:"Configure the Development Environment"},sidebar:"docs",previous:{title:"Developer Guide Overview",permalink:"/docs/2.4.3/developer-guide-overview"},next:{title:"Add New Chaos Experiment Type",permalink:"/docs/2.4.3/add-new-chaos-experiment-type"}},l={},c=[{value:"Configuration Requirements",id:"configuration-requirements",level:2},{value:"Compiling Chaos Mesh",id:"compiling-chaos-mesh",level:2},{value:"Run Chaos Mesh in Local minkube Kubernetes Cluster",id:"run-chaos-mesh-in-local-minkube-kubernetes-cluster",level:2},{value:"Debug Chaos Mesh in local environment",id:"debug-chaos-mesh-in-local-environment",level:2},{value:"Learn more",id:"learn-more",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.p,{children:"This document describes how to configure a local development environment for Chaos Mesh."}),"\n",(0,o.jsx)(n.p,{children:"Most components of Chaos Mesh are designed only for Linux, so we suggest that you also configure your development environment to run on Linux. For example, using a virtual machine or WSL 2, and using VSCode Remote as your editor."}),"\n",(0,o.jsx)(n.p,{children:"This document assumes that you use Linux, without the restriction on specific Linux distributions. If you persist to use Windows/MacOS, you might need some tricks to make it work by yourself."}),"\n",(0,o.jsx)(n.h2,{id:"configuration-requirements",children:"Configuration Requirements"}),"\n",(0,o.jsx)(n.p,{children:"Before configuring, we suggest to install the development tools for Chaos Mesh."}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://www.gnu.org/software/make/",children:"make"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://docs.docker.com/install/",children:"docker"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://go.dev/doc/install",children:"golang"}),", v1.18 or later versions"]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://gcc.gnu.org/",children:"gcc"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://helm.sh/",children:"helm"}),", v3.9.0 or later versions"]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://minikube.sigs.k8s.io/docs/start/",children:"minikube"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://nodejs.org/en/",children:"nodejs"})," and ",(0,o.jsx)(n.a,{href:"https://yarnpkg.com/lang/en/",children:"yarn"}),", for developing Chaos Dashboard"]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"compiling-chaos-mesh",children:"Compiling Chaos Mesh"}),"\n",(0,o.jsx)(n.p,{children:"After installing the above tools, follow the steps below to configure the toolchain for compiling Chaos Mesh."}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Clone the Chaos Mesh repository to your local server."}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/chaos-mesh/chaos-mesh.git\ncd chaos-mesh\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Make sure that ",(0,o.jsx)(n.a,{href:"https://docs.docker.com/install/",children:"Docker"})," is installed and running in your environment."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Compile Chaos Mesh:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"UI=1 make\n"})}),"\n",(0,o.jsx)(n.p,{children:"You should get these container images:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-dashboard:latest"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-mesh:latest"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-daemon:latest"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"run-chaos-mesh-in-local-minkube-kubernetes-cluster",children:"Run Chaos Mesh in Local minkube Kubernetes Cluster"}),"\n",(0,o.jsx)(n.p,{children:"After compiling Chaos Mesh, you can run Chaos Mesh in a local Kubernetes cluster."}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Start a local Kubernetes cluster with minkube."}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"minikube start\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Load container images into minikube"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"minikube image load ghcr.io/chaos-mesh/chaos-dashboard:latest\nminikube image load ghcr.io/chaos-mesh/chaos-mesh:latest\nminikube image load ghcr.io/chaos-mesh/chaos-daemon:latest\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Install Chaos Mesh by Helm"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"helm upgrade --install chaos-mesh-debug ./helm/chaos-mesh --namespace=chaos-mesh-debug --create-namespace\n"})}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.admonition,{type:"note",children:[(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"minikube image load"})," would cost lots of time, so here is a trick to avoid load images again and again. Using docker from minikube node instead of host's docker."]}),(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:'minikube start --mount --mount-string "$(pwd):$(pwd)"\neval $(minikube -p minikube docker-env)\nUI=1 make\n'})})]}),"\n",(0,o.jsx)(n.h2,{id:"debug-chaos-mesh-in-local-environment",children:"Debug Chaos Mesh in local environment"}),"\n",(0,o.jsxs)(n.p,{children:["We could use ",(0,o.jsx)(n.a,{href:"https://github.com/go-delve/delve",children:"delve"})," with remote debugging to debug the Chaos Mesh in local environment."]}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Compile Chaos Mesh with Debug Info"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"UI=1 DEBUG=1 make\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Load container images into minikube"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"minikube image load ghcr.io/chaos-mesh/chaos-dashboard:latest\nminikube image load ghcr.io/chaos-mesh/chaos-mesh:latest\nminikube image load ghcr.io/chaos-mesh/chaos-daemon:latest\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Install Chaos Mesh by Helm with Enabling Remote Debugging"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"helm upgrade --install chaos-mesh-debug ./helm/chaos-mesh --namespace=chaos-mesh-debug --create-namespace --set chaosDlv.enable=true --set controllerManager.replicaCount=1\n"})}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["We would set 3 replicas for ",(0,o.jsx)(n.code,{children:"chaos-controller-manager"})," for HA purpose, ",(0,o.jsx)(n.code,{children:"--set controllerManager.replicaCount=1"})," would create 1 instance of ",(0,o.jsx)(n.code,{children:"chaos-controller-manager"})," for easier debugging."]})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Setup Port-Forwarding and Configure IDE To Connect the Remote Debugger"}),"\n",(0,o.jsxs)(n.p,{children:["We could use ",(0,o.jsx)(n.code,{children:"kubectl port-forward"})," for port-forwarding the delve debugging server on a local port."]}),"\n",(0,o.jsxs)(n.p,{children:["For example, if we want to debug ",(0,o.jsx)(n.code,{children:"chaos-controller-manger"}),", we could execute the following command:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"kubectl -n chaos-mesh-debug port-forward chaos-controller-manager-766dc8488d-7n5bq 58000:8000\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Then we could access the remote delve debugger server with ",(0,o.jsx)(n.code,{children:"127.0.0.1:58000"}),"."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["We always use ",(0,o.jsx)(n.code,{children:"8000"})," in the pod for serving the delve debug server, that's a convention. You could find that in helm templates files."]})}),"\n",(0,o.jsx)(n.p,{children:"Then we could configure our favorite IDE to connect to the remote debugger:"}),"\n",(0,o.jsxs)(n.p,{children:["For Goland, see ",(0,o.jsx)(n.a,{href:"https://www.jetbrains.com/help/go/attach-to-running-go-processes-with-debugger.html#attach-to-a-process-on-a-remote-machine",children:"Attach to running Go processes with the debugger#Attach to a process on a remote machine"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["For VSCode, see ",(0,o.jsx)(n.a,{href:"https://github.com/golang/vscode-go/blob/master/docs/debugging.md#remote-debugging",children:"vscode-go - Debugging#Remote Debugging"}),"."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["For more detailed information, see ",(0,o.jsx)(n.a,{href:"https://github.com/chaos-mesh/chaos-mesh/blob/master/images/chaos-dlv/README.md",children:"README.md for container image chaos-dlv"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"learn-more",children:"Learn more"}),"\n",(0,o.jsxs)(n.p,{children:["After finishing the above preparation, you can try to ",(0,o.jsx)(n.a,{href:"/docs/2.4.3/add-new-chaos-experiment-type",children:"Add a New Chaos Experiment type"}),"."]})]})}function d(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},7463:(e,n,s)=>{s.d(n,{Z:()=>t,a:()=>a});var o=s(50959);const i={},r=o.createContext(i);function a(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkchaos_mesh_website=self.webpackChunkchaos_mesh_website||[]).push([[3903],{22757:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>r,metadata:()=>t,toc:()=>c});var o=s(11527),i=s(7463);const r={title:"Configure the Development Environment"},a=void 0,t={id:"configure-development-environment",title:"Configure the Development Environment",description:"This document describes how to configure a local development environment for Chaos Mesh.",source:"@site/versioned_docs/version-2.4.3/configure-development-environment.md",sourceDirName:".",slug:"/configure-development-environment",permalink:"/docs/2.4.3/configure-development-environment",draft:!1,unlisted:!1,editUrl:"https://github.com/chaos-mesh/website/edit/master/versioned_docs/version-2.4.3/configure-development-environment.md",tags:[],version:"2.4.3",frontMatter:{title:"Configure the Development Environment"},sidebar:"docs",previous:{title:"Developer Guide Overview",permalink:"/docs/2.4.3/developer-guide-overview"},next:{title:"Add New Chaos Experiment Type",permalink:"/docs/2.4.3/add-new-chaos-experiment-type"}},l={},c=[{value:"Configuration Requirements",id:"configuration-requirements",level:2},{value:"Compiling Chaos Mesh",id:"compiling-chaos-mesh",level:2},{value:"Run Chaos Mesh in Local minkube Kubernetes Cluster",id:"run-chaos-mesh-in-local-minkube-kubernetes-cluster",level:2},{value:"Debug Chaos Mesh in local environment",id:"debug-chaos-mesh-in-local-environment",level:2},{value:"Learn more",id:"learn-more",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.p,{children:"This document describes how to configure a local development environment for Chaos Mesh."}),"\n",(0,o.jsx)(n.p,{children:"Most components of Chaos Mesh are designed only for Linux, so we suggest that you also configure your development environment to run on Linux. For example, using a virtual machine or WSL 2, and using VSCode Remote as your editor."}),"\n",(0,o.jsx)(n.p,{children:"This document assumes that you use Linux, without the restriction on specific Linux distributions. If you persist to use Windows/MacOS, you might need some tricks to make it work by yourself."}),"\n",(0,o.jsx)(n.h2,{id:"configuration-requirements",children:"Configuration Requirements"}),"\n",(0,o.jsx)(n.p,{children:"Before configuring, we suggest to install the development tools for Chaos Mesh."}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://www.gnu.org/software/make/",children:"make"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://docs.docker.com/install/",children:"docker"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://go.dev/doc/install",children:"golang"}),", v1.18 or later versions"]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://gcc.gnu.org/",children:"gcc"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://helm.sh/",children:"helm"}),", v3.9.0 or later versions"]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://minikube.sigs.k8s.io/docs/start/",children:"minikube"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://nodejs.org/en/",children:"nodejs"})," and ",(0,o.jsx)(n.a,{href:"https://yarnpkg.com/lang/en/",children:"yarn"}),", for developing Chaos Dashboard"]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"compiling-chaos-mesh",children:"Compiling Chaos Mesh"}),"\n",(0,o.jsx)(n.p,{children:"After installing the above tools, follow the steps below to configure the toolchain for compiling Chaos Mesh."}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Clone the Chaos Mesh repository to your local server."}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/chaos-mesh/chaos-mesh.git\ncd chaos-mesh\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Make sure that ",(0,o.jsx)(n.a,{href:"https://docs.docker.com/install/",children:"Docker"})," is installed and running in your environment."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Compile Chaos Mesh:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"UI=1 make\n"})}),"\n",(0,o.jsx)(n.p,{children:"You should get these container images:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-dashboard:latest"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-mesh:latest"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-daemon:latest"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"run-chaos-mesh-in-local-minkube-kubernetes-cluster",children:"Run Chaos Mesh in Local minkube Kubernetes Cluster"}),"\n",(0,o.jsx)(n.p,{children:"After compiling Chaos Mesh, you can run Chaos Mesh in a local Kubernetes cluster."}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Start a local Kubernetes cluster with minkube."}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"minikube start\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Load container images into minikube"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"minikube image load ghcr.io/chaos-mesh/chaos-dashboard:latest\nminikube image load ghcr.io/chaos-mesh/chaos-mesh:latest\nminikube image load ghcr.io/chaos-mesh/chaos-daemon:latest\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Install Chaos Mesh by Helm"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"helm upgrade --install chaos-mesh-debug ./helm/chaos-mesh --namespace=chaos-mesh-debug --create-namespace\n"})}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.admonition,{type:"note",children:[(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"minikube image load"})," would cost lots of time, so here is a trick to avoid load images again and again. Using docker from minikube node instead of host's docker."]}),(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:'minikube start --mount --mount-string "$(pwd):$(pwd)"\neval $(minikube -p minikube docker-env)\nUI=1 make\n'})})]}),"\n",(0,o.jsx)(n.h2,{id:"debug-chaos-mesh-in-local-environment",children:"Debug Chaos Mesh in local environment"}),"\n",(0,o.jsxs)(n.p,{children:["We could use ",(0,o.jsx)(n.a,{href:"https://github.com/go-delve/delve",children:"delve"})," with remote debugging to debug the Chaos Mesh in local environment."]}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Compile Chaos Mesh with Debug Info"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"UI=1 DEBUGGER=1 make\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Load container images into minikube"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"minikube image load ghcr.io/chaos-mesh/chaos-dashboard:latest\nminikube image load ghcr.io/chaos-mesh/chaos-mesh:latest\nminikube image load ghcr.io/chaos-mesh/chaos-daemon:latest\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Install Chaos Mesh by Helm with Enabling Remote Debugging"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"helm upgrade --install chaos-mesh-debug ./helm/chaos-mesh --namespace=chaos-mesh-debug --create-namespace --set chaosDlv.enable=true --set controllerManager.replicaCount=1\n"})}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["We would set 3 replicas for ",(0,o.jsx)(n.code,{children:"chaos-controller-manager"})," for HA purpose, ",(0,o.jsx)(n.code,{children:"--set controllerManager.replicaCount=1"})," would create 1 instance of ",(0,o.jsx)(n.code,{children:"chaos-controller-manager"})," for easier debugging."]})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Setup Port-Forwarding and Configure IDE To Connect the Remote Debugger"}),"\n",(0,o.jsxs)(n.p,{children:["We could use ",(0,o.jsx)(n.code,{children:"kubectl port-forward"})," for port-forwarding the delve debugging server on a local port."]}),"\n",(0,o.jsxs)(n.p,{children:["For example, if we want to debug ",(0,o.jsx)(n.code,{children:"chaos-controller-manger"}),", we could execute the following command:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"kubectl -n chaos-mesh-debug port-forward chaos-controller-manager-766dc8488d-7n5bq 58000:8000\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Then we could access the remote delve debugger server with ",(0,o.jsx)(n.code,{children:"127.0.0.1:58000"}),"."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["We always use ",(0,o.jsx)(n.code,{children:"8000"})," in the pod for serving the delve debug server, that's a convention. You could find that in helm templates files."]})}),"\n",(0,o.jsx)(n.p,{children:"Then we could configure our favorite IDE to connect to the remote debugger:"}),"\n",(0,o.jsxs)(n.p,{children:["For Goland, see ",(0,o.jsx)(n.a,{href:"https://www.jetbrains.com/help/go/attach-to-running-go-processes-with-debugger.html#attach-to-a-process-on-a-remote-machine",children:"Attach to running Go processes with the debugger#Attach to a process on a remote machine"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["For VSCode, see ",(0,o.jsx)(n.a,{href:"https://github.com/golang/vscode-go/blob/master/docs/debugging.md#remote-debugging",children:"vscode-go - Debugging#Remote Debugging"}),"."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["For more detailed information, see ",(0,o.jsx)(n.a,{href:"https://github.com/chaos-mesh/chaos-mesh/blob/master/images/chaos-dlv/README.md",children:"README.md for container image chaos-dlv"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"learn-more",children:"Learn more"}),"\n",(0,o.jsxs)(n.p,{children:["After finishing the above preparation, you can try to ",(0,o.jsx)(n.a,{href:"/docs/2.4.3/add-new-chaos-experiment-type",children:"Add a New Chaos Experiment type"}),"."]})]})}function d(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},7463:(e,n,s)=>{s.d(n,{Z:()=>t,a:()=>a});var o=s(50959);const i={},r=o.createContext(i);function a(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/c3e7c0c9.384753ce.js b/assets/js/c3e7c0c9.37df451a.js
similarity index 64%
rename from assets/js/c3e7c0c9.384753ce.js
rename to assets/js/c3e7c0c9.37df451a.js
index c5ce7e78ce..ec6545efbd 100644
--- a/assets/js/c3e7c0c9.384753ce.js
+++ b/assets/js/c3e7c0c9.37df451a.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkchaos_mesh_website=self.webpackChunkchaos_mesh_website||[]).push([[9379],{1756:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>r,metadata:()=>t,toc:()=>c});var o=s(11527),i=s(7463);const r={title:"Configure the Development Environment"},a=void 0,t={id:"configure-development-environment",title:"Configure the Development Environment",description:"This document describes how to configure a local development environment for Chaos Mesh.",source:"@site/versioned_docs/version-2.5.2/configure-development-environment.md",sourceDirName:".",slug:"/configure-development-environment",permalink:"/docs/2.5.2/configure-development-environment",draft:!1,unlisted:!1,editUrl:"https://github.com/chaos-mesh/website/edit/master/versioned_docs/version-2.5.2/configure-development-environment.md",tags:[],version:"2.5.2",frontMatter:{title:"Configure the Development Environment"},sidebar:"docs",previous:{title:"Developer Guide Overview",permalink:"/docs/2.5.2/developer-guide-overview"},next:{title:"Add New Chaos Experiment Type",permalink:"/docs/2.5.2/add-new-chaos-experiment-type"}},l={},c=[{value:"Configuration Requirements",id:"configuration-requirements",level:2},{value:"Compiling Chaos Mesh",id:"compiling-chaos-mesh",level:2},{value:"Run Chaos Mesh in Local minkube Kubernetes Cluster",id:"run-chaos-mesh-in-local-minkube-kubernetes-cluster",level:2},{value:"Debug Chaos Mesh in local environment",id:"debug-chaos-mesh-in-local-environment",level:2},{value:"Learn more",id:"learn-more",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.p,{children:"This document describes how to configure a local development environment for Chaos Mesh."}),"\n",(0,o.jsx)(n.p,{children:"Most components of Chaos Mesh are designed only for Linux, so we suggest that you also configure your development environment to run on Linux. For example, using a virtual machine or WSL 2, and using VSCode Remote as your editor."}),"\n",(0,o.jsx)(n.p,{children:"This document assumes that you use Linux, without the restriction on specific Linux distributions. If you persist to use Windows/MacOS, you might need some tricks to make it work by yourself."}),"\n",(0,o.jsx)(n.h2,{id:"configuration-requirements",children:"Configuration Requirements"}),"\n",(0,o.jsx)(n.p,{children:"Before configuring, we suggest to install the development tools for Chaos Mesh."}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://www.gnu.org/software/make/",children:"make"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://docs.docker.com/install/",children:"docker"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://go.dev/doc/install",children:"golang"}),", v1.18 or later versions"]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://gcc.gnu.org/",children:"gcc"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://helm.sh/",children:"helm"}),", v3.9.0 or later versions"]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://minikube.sigs.k8s.io/docs/start/",children:"minikube"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://nodejs.org/en/",children:"nodejs"})," and ",(0,o.jsx)(n.a,{href:"https://yarnpkg.com/lang/en/",children:"yarn"}),", for developing Chaos Dashboard"]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"compiling-chaos-mesh",children:"Compiling Chaos Mesh"}),"\n",(0,o.jsx)(n.p,{children:"After installing the above tools, follow the steps below to configure the toolchain for compiling Chaos Mesh."}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Clone the Chaos Mesh repository to your local server."}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/chaos-mesh/chaos-mesh.git\ncd chaos-mesh\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Make sure that ",(0,o.jsx)(n.a,{href:"https://docs.docker.com/install/",children:"Docker"})," is installed and running in your environment."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Compile Chaos Mesh:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"UI=1 make\n"})}),"\n",(0,o.jsx)(n.p,{children:"You should get these container images:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-dashboard:latest"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-mesh:latest"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-daemon:latest"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"run-chaos-mesh-in-local-minkube-kubernetes-cluster",children:"Run Chaos Mesh in Local minkube Kubernetes Cluster"}),"\n",(0,o.jsx)(n.p,{children:"After compiling Chaos Mesh, you can run Chaos Mesh in a local Kubernetes cluster."}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Start a local Kubernetes cluster with minkube."}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"minikube start\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Load container images into minikube"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"minikube image load ghcr.io/chaos-mesh/chaos-dashboard:latest\nminikube image load ghcr.io/chaos-mesh/chaos-mesh:latest\nminikube image load ghcr.io/chaos-mesh/chaos-daemon:latest\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Install Chaos Mesh by Helm"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"helm upgrade --install chaos-mesh-debug ./helm/chaos-mesh --namespace=chaos-mesh-debug --create-namespace\n"})}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.admonition,{type:"note",children:[(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"minikube image load"})," would cost lots of time, so here is a trick to avoid load images again and again. Using docker from minikube node instead of host's docker."]}),(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:'minikube start --mount --mount-string "$(pwd):$(pwd)"\neval $(minikube -p minikube docker-env)\nUI=1 make\n'})})]}),"\n",(0,o.jsx)(n.h2,{id:"debug-chaos-mesh-in-local-environment",children:"Debug Chaos Mesh in local environment"}),"\n",(0,o.jsxs)(n.p,{children:["We could use ",(0,o.jsx)(n.a,{href:"https://github.com/go-delve/delve",children:"delve"})," with remote debugging to debug the Chaos Mesh in local environment."]}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Compile Chaos Mesh with Debug Info"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"UI=1 DEBUG=1 make\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Load container images into minikube"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"minikube image load ghcr.io/chaos-mesh/chaos-dashboard:latest\nminikube image load ghcr.io/chaos-mesh/chaos-mesh:latest\nminikube image load ghcr.io/chaos-mesh/chaos-daemon:latest\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Install Chaos Mesh by Helm with Enabling Remote Debugging"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"helm upgrade --install chaos-mesh-debug ./helm/chaos-mesh --namespace=chaos-mesh-debug --create-namespace --set chaosDlv.enable=true --set controllerManager.replicaCount=1\n"})}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["We would set 3 replicas for ",(0,o.jsx)(n.code,{children:"chaos-controller-manager"})," for HA purpose, ",(0,o.jsx)(n.code,{children:"--set controllerManager.replicaCount=1"})," would create 1 instance of ",(0,o.jsx)(n.code,{children:"chaos-controller-manager"})," for easier debugging."]})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Setup Port-Forwarding and Configure IDE To Connect the Remote Debugger"}),"\n",(0,o.jsxs)(n.p,{children:["We could use ",(0,o.jsx)(n.code,{children:"kubectl port-forward"})," for port-forwarding the delve debugging server on a local port."]}),"\n",(0,o.jsxs)(n.p,{children:["For example, if we want to debug ",(0,o.jsx)(n.code,{children:"chaos-controller-manger"}),", we could execute the following command:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"kubectl -n chaos-mesh-debug port-forward chaos-controller-manager-766dc8488d-7n5bq 58000:8000\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Then we could access the remote delve debugger server with ",(0,o.jsx)(n.code,{children:"127.0.0.1:58000"}),"."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["We always use ",(0,o.jsx)(n.code,{children:"8000"})," in the pod for serving the delve debug server, that's a convention. You could find that in helm templates files."]})}),"\n",(0,o.jsx)(n.p,{children:"Then we could configure our favorite IDE to connect to the remote debugger:"}),"\n",(0,o.jsxs)(n.p,{children:["For Goland, see ",(0,o.jsx)(n.a,{href:"https://www.jetbrains.com/help/go/attach-to-running-go-processes-with-debugger.html#attach-to-a-process-on-a-remote-machine",children:"Attach to running Go processes with the debugger#Attach to a process on a remote machine"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["For VSCode, see ",(0,o.jsx)(n.a,{href:"https://github.com/golang/vscode-go/blob/master/docs/debugging.md#remote-debugging",children:"vscode-go - Debugging#Remote Debugging"}),"."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["For more detailed information, see ",(0,o.jsx)(n.a,{href:"https://github.com/chaos-mesh/chaos-mesh/blob/master/images/chaos-dlv/README.md",children:"README.md for container image chaos-dlv"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"learn-more",children:"Learn more"}),"\n",(0,o.jsxs)(n.p,{children:["After finishing the above preparation, you can try to ",(0,o.jsx)(n.a,{href:"/docs/2.5.2/add-new-chaos-experiment-type",children:"Add a New Chaos Experiment type"}),"."]})]})}function d(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},7463:(e,n,s)=>{s.d(n,{Z:()=>t,a:()=>a});var o=s(50959);const i={},r=o.createContext(i);function a(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkchaos_mesh_website=self.webpackChunkchaos_mesh_website||[]).push([[9379],{1756:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>r,metadata:()=>t,toc:()=>c});var o=s(11527),i=s(7463);const r={title:"Configure the Development Environment"},a=void 0,t={id:"configure-development-environment",title:"Configure the Development Environment",description:"This document describes how to configure a local development environment for Chaos Mesh.",source:"@site/versioned_docs/version-2.5.2/configure-development-environment.md",sourceDirName:".",slug:"/configure-development-environment",permalink:"/docs/2.5.2/configure-development-environment",draft:!1,unlisted:!1,editUrl:"https://github.com/chaos-mesh/website/edit/master/versioned_docs/version-2.5.2/configure-development-environment.md",tags:[],version:"2.5.2",frontMatter:{title:"Configure the Development Environment"},sidebar:"docs",previous:{title:"Developer Guide Overview",permalink:"/docs/2.5.2/developer-guide-overview"},next:{title:"Add New Chaos Experiment Type",permalink:"/docs/2.5.2/add-new-chaos-experiment-type"}},l={},c=[{value:"Configuration Requirements",id:"configuration-requirements",level:2},{value:"Compiling Chaos Mesh",id:"compiling-chaos-mesh",level:2},{value:"Run Chaos Mesh in Local minkube Kubernetes Cluster",id:"run-chaos-mesh-in-local-minkube-kubernetes-cluster",level:2},{value:"Debug Chaos Mesh in local environment",id:"debug-chaos-mesh-in-local-environment",level:2},{value:"Learn more",id:"learn-more",level:2}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",li:"li",ol:"ol",p:"p",pre:"pre",ul:"ul",...(0,i.a)(),...e.components};return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(n.p,{children:"This document describes how to configure a local development environment for Chaos Mesh."}),"\n",(0,o.jsx)(n.p,{children:"Most components of Chaos Mesh are designed only for Linux, so we suggest that you also configure your development environment to run on Linux. For example, using a virtual machine or WSL 2, and using VSCode Remote as your editor."}),"\n",(0,o.jsx)(n.p,{children:"This document assumes that you use Linux, without the restriction on specific Linux distributions. If you persist to use Windows/MacOS, you might need some tricks to make it work by yourself."}),"\n",(0,o.jsx)(n.h2,{id:"configuration-requirements",children:"Configuration Requirements"}),"\n",(0,o.jsx)(n.p,{children:"Before configuring, we suggest to install the development tools for Chaos Mesh."}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://www.gnu.org/software/make/",children:"make"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://docs.docker.com/install/",children:"docker"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://go.dev/doc/install",children:"golang"}),", v1.18 or later versions"]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://gcc.gnu.org/",children:"gcc"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://helm.sh/",children:"helm"}),", v3.9.0 or later versions"]}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.a,{href:"https://minikube.sigs.k8s.io/docs/start/",children:"minikube"})}),"\n",(0,o.jsxs)(n.li,{children:[(0,o.jsx)(n.a,{href:"https://nodejs.org/en/",children:"nodejs"})," and ",(0,o.jsx)(n.a,{href:"https://yarnpkg.com/lang/en/",children:"yarn"}),", for developing Chaos Dashboard"]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"compiling-chaos-mesh",children:"Compiling Chaos Mesh"}),"\n",(0,o.jsx)(n.p,{children:"After installing the above tools, follow the steps below to configure the toolchain for compiling Chaos Mesh."}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Clone the Chaos Mesh repository to your local server."}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/chaos-mesh/chaos-mesh.git\ncd chaos-mesh\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsxs)(n.p,{children:["Make sure that ",(0,o.jsx)(n.a,{href:"https://docs.docker.com/install/",children:"Docker"})," is installed and running in your environment."]}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Compile Chaos Mesh:"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"UI=1 make\n"})}),"\n",(0,o.jsx)(n.p,{children:"You should get these container images:"}),"\n",(0,o.jsxs)(n.ul,{children:["\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-dashboard:latest"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-mesh:latest"})}),"\n",(0,o.jsx)(n.li,{children:(0,o.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-daemon:latest"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,o.jsx)(n.h2,{id:"run-chaos-mesh-in-local-minkube-kubernetes-cluster",children:"Run Chaos Mesh in Local minkube Kubernetes Cluster"}),"\n",(0,o.jsx)(n.p,{children:"After compiling Chaos Mesh, you can run Chaos Mesh in a local Kubernetes cluster."}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Start a local Kubernetes cluster with minkube."}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"minikube start\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Load container images into minikube"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"minikube image load ghcr.io/chaos-mesh/chaos-dashboard:latest\nminikube image load ghcr.io/chaos-mesh/chaos-mesh:latest\nminikube image load ghcr.io/chaos-mesh/chaos-daemon:latest\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Install Chaos Mesh by Helm"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"helm upgrade --install chaos-mesh-debug ./helm/chaos-mesh --namespace=chaos-mesh-debug --create-namespace\n"})}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.admonition,{type:"note",children:[(0,o.jsxs)(n.p,{children:[(0,o.jsx)(n.code,{children:"minikube image load"})," would cost lots of time, so here is a trick to avoid load images again and again. Using docker from minikube node instead of host's docker."]}),(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:'minikube start --mount --mount-string "$(pwd):$(pwd)"\neval $(minikube -p minikube docker-env)\nUI=1 make\n'})})]}),"\n",(0,o.jsx)(n.h2,{id:"debug-chaos-mesh-in-local-environment",children:"Debug Chaos Mesh in local environment"}),"\n",(0,o.jsxs)(n.p,{children:["We could use ",(0,o.jsx)(n.a,{href:"https://github.com/go-delve/delve",children:"delve"})," with remote debugging to debug the Chaos Mesh in local environment."]}),"\n",(0,o.jsxs)(n.ol,{children:["\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Compile Chaos Mesh with Debug Info"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"UI=1 DEBUGGER=1 make\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Load container images into minikube"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"minikube image load ghcr.io/chaos-mesh/chaos-dashboard:latest\nminikube image load ghcr.io/chaos-mesh/chaos-mesh:latest\nminikube image load ghcr.io/chaos-mesh/chaos-daemon:latest\n"})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Install Chaos Mesh by Helm with Enabling Remote Debugging"}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"helm upgrade --install chaos-mesh-debug ./helm/chaos-mesh --namespace=chaos-mesh-debug --create-namespace --set chaosDlv.enable=true --set controllerManager.replicaCount=1\n"})}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["We would set 3 replicas for ",(0,o.jsx)(n.code,{children:"chaos-controller-manager"})," for HA purpose, ",(0,o.jsx)(n.code,{children:"--set controllerManager.replicaCount=1"})," would create 1 instance of ",(0,o.jsx)(n.code,{children:"chaos-controller-manager"})," for easier debugging."]})}),"\n"]}),"\n",(0,o.jsxs)(n.li,{children:["\n",(0,o.jsx)(n.p,{children:"Setup Port-Forwarding and Configure IDE To Connect the Remote Debugger"}),"\n",(0,o.jsxs)(n.p,{children:["We could use ",(0,o.jsx)(n.code,{children:"kubectl port-forward"})," for port-forwarding the delve debugging server on a local port."]}),"\n",(0,o.jsxs)(n.p,{children:["For example, if we want to debug ",(0,o.jsx)(n.code,{children:"chaos-controller-manger"}),", we could execute the following command:"]}),"\n",(0,o.jsx)(n.pre,{children:(0,o.jsx)(n.code,{className:"language-bash",children:"kubectl -n chaos-mesh-debug port-forward chaos-controller-manager-766dc8488d-7n5bq 58000:8000\n"})}),"\n",(0,o.jsxs)(n.p,{children:["Then we could access the remote delve debugger server with ",(0,o.jsx)(n.code,{children:"127.0.0.1:58000"}),"."]}),"\n",(0,o.jsx)(n.admonition,{type:"note",children:(0,o.jsxs)(n.p,{children:["We always use ",(0,o.jsx)(n.code,{children:"8000"})," in the pod for serving the delve debug server, that's a convention. You could find that in helm templates files."]})}),"\n",(0,o.jsx)(n.p,{children:"Then we could configure our favorite IDE to connect to the remote debugger:"}),"\n",(0,o.jsxs)(n.p,{children:["For Goland, see ",(0,o.jsx)(n.a,{href:"https://www.jetbrains.com/help/go/attach-to-running-go-processes-with-debugger.html#attach-to-a-process-on-a-remote-machine",children:"Attach to running Go processes with the debugger#Attach to a process on a remote machine"}),"."]}),"\n",(0,o.jsxs)(n.p,{children:["For VSCode, see ",(0,o.jsx)(n.a,{href:"https://github.com/golang/vscode-go/blob/master/docs/debugging.md#remote-debugging",children:"vscode-go - Debugging#Remote Debugging"}),"."]}),"\n"]}),"\n"]}),"\n",(0,o.jsxs)(n.p,{children:["For more detailed information, see ",(0,o.jsx)(n.a,{href:"https://github.com/chaos-mesh/chaos-mesh/blob/master/images/chaos-dlv/README.md",children:"README.md for container image chaos-dlv"}),"."]}),"\n",(0,o.jsx)(n.h2,{id:"learn-more",children:"Learn more"}),"\n",(0,o.jsxs)(n.p,{children:["After finishing the above preparation, you can try to ",(0,o.jsx)(n.a,{href:"/docs/2.5.2/add-new-chaos-experiment-type",children:"Add a New Chaos Experiment type"}),"."]})]})}function d(e={}){const{wrapper:n}={...(0,i.a)(),...e.components};return n?(0,o.jsx)(n,{...e,children:(0,o.jsx)(h,{...e})}):h(e)}},7463:(e,n,s)=>{s.d(n,{Z:()=>t,a:()=>a});var o=s(50959);const i={},r=o.createContext(i);function a(e){const n=o.useContext(r);return o.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function t(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(r.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/fad1e435.1241c07b.js b/assets/js/fad1e435.11150e44.js
similarity index 57%
rename from assets/js/fad1e435.1241c07b.js
rename to assets/js/fad1e435.11150e44.js
index dbfee1d692..6a4019c014 100644
--- a/assets/js/fad1e435.1241c07b.js
+++ b/assets/js/fad1e435.11150e44.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkchaos_mesh_website=self.webpackChunkchaos_mesh_website||[]).push([[6434],{32785:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>t,metadata:()=>a,toc:()=>c});var i=s(11527),o=s(7463);const t={title:"Configure the Development Environment"},r=void 0,a={id:"configure-development-environment",title:"Configure the Development Environment",description:"This document describes how to configure a local development environment for Chaos Mesh.",source:"@site/docs/configure-development-environment.md",sourceDirName:".",slug:"/configure-development-environment",permalink:"/docs/next/configure-development-environment",draft:!1,unlisted:!1,editUrl:"https://github.com/chaos-mesh/website/edit/master/docs/configure-development-environment.md",tags:[],version:"current",frontMatter:{title:"Configure the Development Environment"},sidebar:"docs",previous:{title:"Developer Guide Overview",permalink:"/docs/next/developer-guide-overview"},next:{title:"Add a New Chaos Experiment Type",permalink:"/docs/next/add-new-chaos-experiment-type"}},l={},c=[{value:"Configuration Requirements",id:"configuration-requirements",level:2},{value:"Compiling Chaos Mesh",id:"compiling-chaos-mesh",level:2},{value:"Run Chaos Mesh in local minkube Kubernetes cluster",id:"run-chaos-mesh-in-local-minkube-kubernetes-cluster",level:2},{value:"Debug Chaos Mesh in local environment",id:"debug-chaos-mesh-in-local-environment",level:2},{value:"What's Next",id:"whats-next",level:2},{value:"FAQ",id:"faq",level:2},{value:"Run make fail with error obtaining VCS status: exit status 128
in MacOS",id:"run-make-fail-with-error-obtaining-vcs-status-exit-status-128-in-macos",level:3}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,o.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"This document describes how to configure a local development environment for Chaos Mesh."}),"\n",(0,i.jsxs)(n.p,{children:["Most components of Chaos Mesh are ",(0,i.jsx)(n.strong,{children:"only designed for Linux"}),", so we suggest that you also configure your development environment to run on Linux. For example, use a virtual machine or WSL 2 and use VSCode Remote as your editor."]}),"\n",(0,i.jsx)(n.p,{children:"This document assumes that you are using Linux, without the limitations of specific Linux distributions. If you insist on using Windows/MacOS, you may need some tricks to make it work for you (For example, some make targets may fail depending on the environment)."}),"\n",(0,i.jsx)(n.h2,{id:"configuration-requirements",children:"Configuration Requirements"}),"\n",(0,i.jsx)(n.p,{children:"Before configuring, it is recommended that you install the development tools listed below, most of them may already be installed in your environment:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.gnu.org/software/make/",children:"make"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.docker.com/install/",children:"docker"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://go.dev/doc/install",children:"golang"}),", ",(0,i.jsx)(n.code,{children:"v1.18"})," or later versions"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://gcc.gnu.org/",children:"gcc"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://helm.sh/",children:"helm"}),", ",(0,i.jsx)(n.code,{children:"v3.9.0"})," or later versions"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://minikube.sigs.k8s.io/docs/start/",children:"minikube"})}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Optional:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://nodejs.org/en/",children:"nodejs"})," and ",(0,i.jsx)(n.a,{href:"https://pnpm.io/",children:"pnpm"}),", for developing Chaos Dashboard"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"compiling-chaos-mesh",children:"Compiling Chaos Mesh"}),"\n",(0,i.jsx)(n.p,{children:"After installing, follow the steps below to compile Chaos Mesh."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Clone the Chaos Mesh repository to your local server:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/chaos-mesh/chaos-mesh.git\ncd chaos-mesh\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Make sure that ",(0,i.jsx)(n.a,{href:"https://docs.docker.com/install/",children:"Docker"})," is installed and running."]}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsx)(n.p,{children:"Chaos Mesh relies on Docker to build container images, this is for consistency with the production environment."})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Compile Chaos Mesh:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"UI=1 make image\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"UI=1"})," means that we will compile the user interface of Chaos Dashboard, if you don't need it, you can omit this env."]})}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["If you want to specify the tag of the image, you can use ",(0,i.jsx)(n.code,{children:"UI=1 make IMAGE_TAG=dev image"}),"."]})}),"\n",(0,i.jsx)(n.p,{children:"After compiling, you should get the following container images:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-dashboard:latest"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-mesh:latest"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-daemon:latest"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"run-chaos-mesh-in-local-minkube-kubernetes-cluster",children:"Run Chaos Mesh in local minkube Kubernetes cluster"}),"\n",(0,i.jsx)(n.p,{children:"Now you can run Chaos Mesh in a local Kubernetes cluster after compiling."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Start a local Kubernetes cluster with minkube:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"minikube start\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Load container images into minikube:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"minikube image load ghcr.io/chaos-mesh/chaos-dashboard:latest\nminikube image load ghcr.io/chaos-mesh/chaos-mesh:latest\nminikube image load ghcr.io/chaos-mesh/chaos-daemon:latest\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Install Chaos Mesh by Helm:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"helm upgrade --install chaos-mesh-debug ./helm/chaos-mesh --namespace=chaos-mesh-debug --create-namespace\n"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.admonition,{type:"tip",children:[(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"minikube image load"})," would cost lots of time, so here is a trick to avoid load images again and again during development. Using docker from minikube node instead of host's docker:"]}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:'minikube start --mount --mount-string "$(pwd):$(pwd)"\neval $(minikube -p minikube docker-env)\nUI=1 make image\n'})})]}),"\n",(0,i.jsx)(n.h2,{id:"debug-chaos-mesh-in-local-environment",children:"Debug Chaos Mesh in local environment"}),"\n",(0,i.jsxs)(n.p,{children:["We could use ",(0,i.jsx)(n.a,{href:"https://github.com/go-delve/delve",children:"delve"})," with remote debugging to debug the Chaos Mesh in local environment."]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Compile Chaos Mesh with ",(0,i.jsx)(n.code,{children:"DEBUG=1"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"UI=1 DEBUG=1 make image\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Load container images into minikube:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"minikube image load ghcr.io/chaos-mesh/chaos-mesh:latest\nminikube image load ghcr.io/chaos-mesh/chaos-daemon:latest\nminikube image load ghcr.io/chaos-mesh/chaos-dashboard:latest\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Install Chaos Mesh and enable Remote Debugging:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"helm upgrade --install chaos-mesh-debug ./helm/chaos-mesh --namespace=chaos-mesh-debug --create-namespace --set chaosDlv.enable=true --set controllerManager.leaderElection.enabled=false\n"})}),"\n",(0,i.jsxs)(n.admonition,{type:"note",children:[(0,i.jsxs)(n.p,{children:["To ensure high availability, Chaos Mesh turns on ",(0,i.jsx)(n.code,{children:"leader-election"})," feature by default and will create 3 replicas for ",(0,i.jsx)(n.code,{children:"chaos-controller-manager"}),". We will use ",(0,i.jsx)(n.code,{children:"controllerManager.leaderElection.enabled=false"})," to ensure that Chaos Mesh only creates 1 instance of ",(0,i.jsx)(n.code,{children:"chaos-controller-manager"})," for easier debugging."]}),(0,i.jsxs)(n.p,{children:["For more details, see ",(0,i.jsx)(n.a,{href:"/docs/next/production-installation-using-helm#step-4-install-chaos-mesh-in-different-environments",children:"Install Chaos Mesh in different environments"}),"."]})]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Setup Port-Forwarding and Configure IDE To Connect the Remote Debugger:"}),"\n",(0,i.jsxs)(n.p,{children:["We could use ",(0,i.jsx)(n.code,{children:"kubectl port-forward"})," to forward the delve debugging server to a local port."]}),"\n",(0,i.jsxs)(n.p,{children:["For example, if we want to debug ",(0,i.jsx)(n.code,{children:"chaos-controller-manger"}),", we could execute the following command:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"kubectl -n chaos-mesh-debug port-forward chaos-controller-manager-766dc8488d-7n5bq 58000:8000\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Then we could access the remote delve debugger server with ",(0,i.jsx)(n.code,{children:"127.0.0.1:58000"}),"."]}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["We always use ",(0,i.jsx)(n.code,{children:"8000"})," in the pod for serving the delve debug server, that's a convention. You could find that in helm templates files."]})}),"\n",(0,i.jsx)(n.p,{children:"Then we could configure our favorite IDE to connect to the remote debugger, below are some examples:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["For Goland, see ",(0,i.jsx)(n.a,{href:"https://www.jetbrains.com/help/go/attach-to-running-go-processes-with-debugger.html#attach-to-a-process-on-a-remote-machine",children:"Attach to running Go processes with the debugger#Attach to a process on a remote machine"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["For VSCode, see ",(0,i.jsx)(n.a,{href:"https://github.com/golang/vscode-go/blob/master/docs/debugging.md#remote-debugging",children:"vscode-go - Debugging#Remote Debugging"}),"."]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["For more detailed information, see ",(0,i.jsx)(n.a,{href:"https://github.com/chaos-mesh/chaos-mesh/blob/master/images/chaos-dlv/README.md",children:"README.md for container image chaos-dlv"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"whats-next",children:"What's Next"}),"\n",(0,i.jsxs)(n.p,{children:["After finishing the above preparation, you can try to ",(0,i.jsx)(n.a,{href:"/docs/next/add-new-chaos-experiment-type",children:"Add a New Chaos Experiment Type"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"faq",children:"FAQ"}),"\n",(0,i.jsxs)(n.h3,{id:"run-make-fail-with-error-obtaining-vcs-status-exit-status-128-in-macos",children:["Run make fail with ",(0,i.jsx)(n.code,{children:"error obtaining VCS status: exit status 128"})," in MacOS"]}),"\n",(0,i.jsxs)(n.p,{children:["The reason is related to ",(0,i.jsx)(n.a,{href:"https://github.blog/2022-04-12-git-security-vulnerability-announced/",children:"https://github.blog/2022-04-12-git-security-vulnerability-announced/"}),". It's recommended you to read it first."]}),"\n",(0,i.jsxs)(n.p,{children:["Chaos Mesh will start the container (",(0,i.jsx)(n.code,{children:"dev-env"})," or ",(0,i.jsx)(n.code,{children:"build-env"}),") with the current user (when you call ",(0,i.jsx)(n.code,{children:"make"}),"). You can find the appropriate ",(0,i.jsx)(n.code,{children:"--user"})," flag in ",(0,i.jsx)(n.a,{href:"https://github.com/chaos-mesh/chaos-mesh/blob/813b650c02e0b065ae5c4707725c346929ab1847/build/get_env_shell.py#L81C10-L81C10",children:"get_env_shell.py#L81C10-L81C10"}),". So when Git is looking for a top-level ",(0,i.jsx)(n.code,{children:".git"})," directory, it will stop if its directory traversal changes ownership from the current user."]}),"\n",(0,i.jsxs)(n.p,{children:["A temporary solution for now is to comment out the line of ",(0,i.jsx)(n.code,{children:"--user"}),"."]})]})}function d(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},7463:(e,n,s)=>{s.d(n,{Z:()=>a,a:()=>r});var i=s(50959);const o={},t=i.createContext(o);function r(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),i.createElement(t.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkchaos_mesh_website=self.webpackChunkchaos_mesh_website||[]).push([[6434],{32785:(e,n,s)=>{s.r(n),s.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>d,frontMatter:()=>t,metadata:()=>a,toc:()=>c});var i=s(11527),o=s(7463);const t={title:"Configure the Development Environment"},r=void 0,a={id:"configure-development-environment",title:"Configure the Development Environment",description:"This document describes how to configure a local development environment for Chaos Mesh.",source:"@site/docs/configure-development-environment.md",sourceDirName:".",slug:"/configure-development-environment",permalink:"/docs/next/configure-development-environment",draft:!1,unlisted:!1,editUrl:"https://github.com/chaos-mesh/website/edit/master/docs/configure-development-environment.md",tags:[],version:"current",frontMatter:{title:"Configure the Development Environment"},sidebar:"docs",previous:{title:"Developer Guide Overview",permalink:"/docs/next/developer-guide-overview"},next:{title:"Add a New Chaos Experiment Type",permalink:"/docs/next/add-new-chaos-experiment-type"}},l={},c=[{value:"Configuration Requirements",id:"configuration-requirements",level:2},{value:"Compiling Chaos Mesh",id:"compiling-chaos-mesh",level:2},{value:"Run Chaos Mesh in local minkube Kubernetes cluster",id:"run-chaos-mesh-in-local-minkube-kubernetes-cluster",level:2},{value:"Debug Chaos Mesh in local environment",id:"debug-chaos-mesh-in-local-environment",level:2},{value:"What's Next",id:"whats-next",level:2},{value:"FAQ",id:"faq",level:2},{value:"Run make fail with error obtaining VCS status: exit status 128
in MacOS",id:"run-make-fail-with-error-obtaining-vcs-status-exit-status-128-in-macos",level:3}];function h(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",h3:"h3",li:"li",ol:"ol",p:"p",pre:"pre",strong:"strong",ul:"ul",...(0,o.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(n.p,{children:"This document describes how to configure a local development environment for Chaos Mesh."}),"\n",(0,i.jsxs)(n.p,{children:["Most components of Chaos Mesh are ",(0,i.jsx)(n.strong,{children:"only designed for Linux"}),", so we suggest that you also configure your development environment to run on Linux. For example, use a virtual machine or WSL 2 and use VSCode Remote as your editor."]}),"\n",(0,i.jsx)(n.p,{children:"This document assumes that you are using Linux, without the limitations of specific Linux distributions. If you insist on using Windows/MacOS, you may need some tricks to make it work for you (For example, some make targets may fail depending on the environment)."}),"\n",(0,i.jsx)(n.h2,{id:"configuration-requirements",children:"Configuration Requirements"}),"\n",(0,i.jsx)(n.p,{children:"Before configuring, it is recommended that you install the development tools listed below, most of them may already be installed in your environment:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://www.gnu.org/software/make/",children:"make"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://docs.docker.com/install/",children:"docker"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://go.dev/doc/install",children:"golang"}),", ",(0,i.jsx)(n.code,{children:"v1.18"})," or later versions"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://gcc.gnu.org/",children:"gcc"})}),"\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://helm.sh/",children:"helm"}),", ",(0,i.jsx)(n.code,{children:"v3.9.0"})," or later versions"]}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.a,{href:"https://minikube.sigs.k8s.io/docs/start/",children:"minikube"})}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"Optional:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:[(0,i.jsx)(n.a,{href:"https://nodejs.org/en/",children:"nodejs"})," and ",(0,i.jsx)(n.a,{href:"https://pnpm.io/",children:"pnpm"}),", for developing Chaos Dashboard"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"compiling-chaos-mesh",children:"Compiling Chaos Mesh"}),"\n",(0,i.jsx)(n.p,{children:"After installing, follow the steps below to compile Chaos Mesh."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Clone the Chaos Mesh repository to your local server:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"git clone https://github.com/chaos-mesh/chaos-mesh.git\ncd chaos-mesh\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Make sure that ",(0,i.jsx)(n.a,{href:"https://docs.docker.com/install/",children:"Docker"})," is installed and running."]}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsx)(n.p,{children:"Chaos Mesh relies on Docker to build container images, this is for consistency with the production environment."})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Compile Chaos Mesh:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"UI=1 make image\n"})}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"UI=1"})," means that we will compile the user interface of Chaos Dashboard, if you don't need it, you can omit this env."]})}),"\n",(0,i.jsx)(n.admonition,{type:"tip",children:(0,i.jsxs)(n.p,{children:["If you want to specify the tag of the image, you can use ",(0,i.jsx)(n.code,{children:"UI=1 make IMAGE_TAG=dev image"}),"."]})}),"\n",(0,i.jsx)(n.p,{children:"After compiling, you should get the following container images:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-dashboard:latest"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-mesh:latest"})}),"\n",(0,i.jsx)(n.li,{children:(0,i.jsx)(n.code,{children:"ghcr.io/chaos-mesh/chaos-daemon:latest"})}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(n.h2,{id:"run-chaos-mesh-in-local-minkube-kubernetes-cluster",children:"Run Chaos Mesh in local minkube Kubernetes cluster"}),"\n",(0,i.jsx)(n.p,{children:"Now you can run Chaos Mesh in a local Kubernetes cluster after compiling."}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Start a local Kubernetes cluster with minkube:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"minikube start\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Load container images into minikube:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"minikube image load ghcr.io/chaos-mesh/chaos-dashboard:latest\nminikube image load ghcr.io/chaos-mesh/chaos-mesh:latest\nminikube image load ghcr.io/chaos-mesh/chaos-daemon:latest\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Install Chaos Mesh by Helm:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"helm upgrade --install chaos-mesh-debug ./helm/chaos-mesh --namespace=chaos-mesh-debug --create-namespace\n"})}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.admonition,{type:"tip",children:[(0,i.jsxs)(n.p,{children:[(0,i.jsx)(n.code,{children:"minikube image load"})," would cost lots of time, so here is a trick to avoid load images again and again during development. Using docker from minikube node instead of host's docker:"]}),(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:'minikube start --mount --mount-string "$(pwd):$(pwd)"\neval $(minikube -p minikube docker-env)\nUI=1 make image\n'})})]}),"\n",(0,i.jsx)(n.h2,{id:"debug-chaos-mesh-in-local-environment",children:"Debug Chaos Mesh in local environment"}),"\n",(0,i.jsxs)(n.p,{children:["We could use ",(0,i.jsx)(n.a,{href:"https://github.com/go-delve/delve",children:"delve"})," with remote debugging to debug the Chaos Mesh in local environment."]}),"\n",(0,i.jsxs)(n.ol,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["Compile Chaos Mesh with ",(0,i.jsx)(n.code,{children:"DEBUGGER=1"}),":"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"UI=1 DEBUGGER=1 make image\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Load container images into minikube:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"minikube image load ghcr.io/chaos-mesh/chaos-mesh:latest\nminikube image load ghcr.io/chaos-mesh/chaos-daemon:latest\nminikube image load ghcr.io/chaos-mesh/chaos-dashboard:latest\n"})}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Install Chaos Mesh and enable Remote Debugging:"}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"helm upgrade --install chaos-mesh-debug ./helm/chaos-mesh --namespace=chaos-mesh-debug --create-namespace --set chaosDlv.enable=true --set controllerManager.leaderElection.enabled=false\n"})}),"\n",(0,i.jsxs)(n.admonition,{type:"note",children:[(0,i.jsxs)(n.p,{children:["To ensure high availability, Chaos Mesh turns on ",(0,i.jsx)(n.code,{children:"leader-election"})," feature by default and will create 3 replicas for ",(0,i.jsx)(n.code,{children:"chaos-controller-manager"}),". We will use ",(0,i.jsx)(n.code,{children:"controllerManager.leaderElection.enabled=false"})," to ensure that Chaos Mesh only creates 1 instance of ",(0,i.jsx)(n.code,{children:"chaos-controller-manager"})," for easier debugging."]}),(0,i.jsxs)(n.p,{children:["For more details, see ",(0,i.jsx)(n.a,{href:"/docs/next/production-installation-using-helm#step-4-install-chaos-mesh-in-different-environments",children:"Install Chaos Mesh in different environments"}),"."]})]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsx)(n.p,{children:"Setup Port-Forwarding and Configure IDE To Connect the Remote Debugger:"}),"\n",(0,i.jsxs)(n.p,{children:["We could use ",(0,i.jsx)(n.code,{children:"kubectl port-forward"})," to forward the delve debugging server to a local port."]}),"\n",(0,i.jsxs)(n.p,{children:["For example, if we want to debug ",(0,i.jsx)(n.code,{children:"chaos-controller-manger"}),", we could execute the following command:"]}),"\n",(0,i.jsx)(n.pre,{children:(0,i.jsx)(n.code,{className:"language-bash",children:"kubectl -n chaos-mesh-debug port-forward chaos-controller-manager-766dc8488d-7n5bq 58000:8000\n"})}),"\n",(0,i.jsxs)(n.p,{children:["Then we could access the remote delve debugger server with ",(0,i.jsx)(n.code,{children:"127.0.0.1:58000"}),"."]}),"\n",(0,i.jsx)(n.admonition,{type:"info",children:(0,i.jsxs)(n.p,{children:["We always use ",(0,i.jsx)(n.code,{children:"8000"})," in the pod for serving the delve debug server, that's a convention. You could find that in helm templates files."]})}),"\n",(0,i.jsx)(n.p,{children:"Then we could configure our favorite IDE to connect to the remote debugger, below are some examples:"}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["For Goland, see ",(0,i.jsx)(n.a,{href:"https://www.jetbrains.com/help/go/attach-to-running-go-processes-with-debugger.html#attach-to-a-process-on-a-remote-machine",children:"Attach to running Go processes with the debugger#Attach to a process on a remote machine"}),"."]}),"\n"]}),"\n",(0,i.jsxs)(n.li,{children:["\n",(0,i.jsxs)(n.p,{children:["For VSCode, see ",(0,i.jsx)(n.a,{href:"https://github.com/golang/vscode-go/blob/master/docs/debugging.md#remote-debugging",children:"vscode-go - Debugging#Remote Debugging"}),"."]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(n.p,{children:["For more detailed information, see ",(0,i.jsx)(n.a,{href:"https://github.com/chaos-mesh/chaos-mesh/blob/master/images/chaos-dlv/README.md",children:"README.md for container image chaos-dlv"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"whats-next",children:"What's Next"}),"\n",(0,i.jsxs)(n.p,{children:["After finishing the above preparation, you can try to ",(0,i.jsx)(n.a,{href:"/docs/next/add-new-chaos-experiment-type",children:"Add a New Chaos Experiment Type"}),"."]}),"\n",(0,i.jsx)(n.h2,{id:"faq",children:"FAQ"}),"\n",(0,i.jsxs)(n.h3,{id:"run-make-fail-with-error-obtaining-vcs-status-exit-status-128-in-macos",children:["Run make fail with ",(0,i.jsx)(n.code,{children:"error obtaining VCS status: exit status 128"})," in MacOS"]}),"\n",(0,i.jsxs)(n.p,{children:["The reason is related to ",(0,i.jsx)(n.a,{href:"https://github.blog/2022-04-12-git-security-vulnerability-announced/",children:"https://github.blog/2022-04-12-git-security-vulnerability-announced/"}),". It's recommended you to read it first."]}),"\n",(0,i.jsxs)(n.p,{children:["Chaos Mesh will start the container (",(0,i.jsx)(n.code,{children:"dev-env"})," or ",(0,i.jsx)(n.code,{children:"build-env"}),") with the current user (when you call ",(0,i.jsx)(n.code,{children:"make"}),"). You can find the appropriate ",(0,i.jsx)(n.code,{children:"--user"})," flag in ",(0,i.jsx)(n.a,{href:"https://github.com/chaos-mesh/chaos-mesh/blob/813b650c02e0b065ae5c4707725c346929ab1847/build/get_env_shell.py#L81C10-L81C10",children:"get_env_shell.py#L81C10-L81C10"}),". So when Git is looking for a top-level ",(0,i.jsx)(n.code,{children:".git"})," directory, it will stop if its directory traversal changes ownership from the current user."]}),"\n",(0,i.jsxs)(n.p,{children:["A temporary solution for now is to comment out the line of ",(0,i.jsx)(n.code,{children:"--user"}),"."]})]})}function d(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(h,{...e})}):h(e)}},7463:(e,n,s)=>{s.d(n,{Z:()=>a,a:()=>r});var i=s(50959);const o={},t=i.createContext(o);function r(e){const n=i.useContext(t);return i.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),i.createElement(t.Provider,{value:n},e.children)}}}]);
\ No newline at end of file
diff --git a/assets/js/runtime~main.d5766bf9.js b/assets/js/runtime~main.6c46243c.js
similarity index 98%
rename from assets/js/runtime~main.d5766bf9.js
rename to assets/js/runtime~main.6c46243c.js
index 30560bd731..6cba31385f 100644
--- a/assets/js/runtime~main.d5766bf9.js
+++ b/assets/js/runtime~main.6c46243c.js
@@ -1 +1 @@
-(()=>{"use strict";var e,c,a,f,b,d={},t={};function r(e){var c=t[e];if(void 0!==c)return c.exports;var a=t[e]={exports:{}};return d[e].call(a.exports,a,a.exports,r),a.exports}r.m=d,e=[],r.O=(c,a,f,b)=>{if(!a){var d=1/0;for(i=0;iUI=1 DEBUG=1 make
UI=1 DEBUGGER=1 make
UI=1 DEBUG=1 make
UI=1 DEBUGGER=1 make
delve with remote debugging to debug the Chaos Mesh in local environment.
Compile Chaos Mesh with DEBUG=1
:
UI=1 DEBUG=1 make image
Compile Chaos Mesh with DEBUGGER=1
:
UI=1 DEBUGGER=1 make image
Load container images into minikube:
diff --git a/docs/configure-enabled-namespace/index.html b/docs/configure-enabled-namespace/index.html index a56b2ba948..0077391fab 100644 --- a/docs/configure-enabled-namespace/index.html +++ b/docs/configure-enabled-namespace/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/create-chaos-mesh-workflow/index.html b/docs/create-chaos-mesh-workflow/index.html index 7fc12247c9..6dea1b5b64 100644 --- a/docs/create-chaos-mesh-workflow/index.html +++ b/docs/create-chaos-mesh-workflow/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/define-chaos-experiment-scope/index.html b/docs/define-chaos-experiment-scope/index.html index 5f273dedc8..535f69b67e 100644 --- a/docs/define-chaos-experiment-scope/index.html +++ b/docs/define-chaos-experiment-scope/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/define-scheduling-rules/index.html b/docs/define-scheduling-rules/index.html index eec4f893e0..3e1bbee4cb 100644 --- a/docs/define-scheduling-rules/index.html +++ b/docs/define-scheduling-rules/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/define-workflow-scheduling-rules/index.html b/docs/define-workflow-scheduling-rules/index.html index 5cc5ca1dc4..a6eb50cd09 100644 --- a/docs/define-workflow-scheduling-rules/index.html +++ b/docs/define-workflow-scheduling-rules/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/developer-guide-overview/index.html b/docs/developer-guide-overview/index.html index 146a871f5f..5fb9ba49e1 100644 --- a/docs/developer-guide-overview/index.html +++ b/docs/developer-guide-overview/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/expose-dashboard-with-ingress/index.html b/docs/expose-dashboard-with-ingress/index.html index 6bd66a91e4..369fbf9951 100644 --- a/docs/expose-dashboard-with-ingress/index.html +++ b/docs/expose-dashboard-with-ingress/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/extend-chaos-daemon-interface/index.html b/docs/extend-chaos-daemon-interface/index.html index bd96a5630e..f0849618a7 100644 --- a/docs/extend-chaos-daemon-interface/index.html +++ b/docs/extend-chaos-daemon-interface/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/extend-chaosd/index.html b/docs/extend-chaosd/index.html index fe843e9343..c07ae8b558 100644 --- a/docs/extend-chaosd/index.html +++ b/docs/extend-chaosd/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/faqs/index.html b/docs/faqs/index.html index 2a5993646a..73c756ab71 100644 --- a/docs/faqs/index.html +++ b/docs/faqs/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/gcp-authentication/index.html b/docs/gcp-authentication/index.html index bfebaf661c..fe0993c0af 100644 --- a/docs/gcp-authentication/index.html +++ b/docs/gcp-authentication/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/glossary/index.html b/docs/glossary/index.html index 0b144387ea..22b823ea35 100644 --- a/docs/glossary/index.html +++ b/docs/glossary/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/go-client/index.html b/docs/go-client/index.html index 80011d6973..cbf9aa9597 100644 --- a/docs/go-client/index.html +++ b/docs/go-client/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/index.html b/docs/index.html index bb47400161..8f1df21bc4 100644 --- a/docs/index.html +++ b/docs/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/inspect-chaos-experiments/index.html b/docs/inspect-chaos-experiments/index.html index 261cb0bef9..001ec2bd7a 100644 --- a/docs/inspect-chaos-experiments/index.html +++ b/docs/inspect-chaos-experiments/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/integrate-chaos-mesh-into-github-actions/index.html b/docs/integrate-chaos-mesh-into-github-actions/index.html index 14ed3660a3..01cb5d143a 100644 --- a/docs/integrate-chaos-mesh-into-github-actions/index.html +++ b/docs/integrate-chaos-mesh-into-github-actions/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/java-client/index.html b/docs/java-client/index.html index f32b6a44c5..7d3b0109ca 100644 --- a/docs/java-client/index.html +++ b/docs/java-client/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/manage-user-permissions/index.html b/docs/manage-user-permissions/index.html index e0e135b384..38eadde165 100644 --- a/docs/manage-user-permissions/index.html +++ b/docs/manage-user-permissions/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/multi-data-center-scenario/index.html b/docs/multi-data-center-scenario/index.html index f1406b099c..1c9291da6c 100644 --- a/docs/multi-data-center-scenario/index.html +++ b/docs/multi-data-center-scenario/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/add-new-chaos-experiment-type/index.html b/docs/next/add-new-chaos-experiment-type/index.html index e4684657ae..1052da30c6 100644 --- a/docs/next/add-new-chaos-experiment-type/index.html +++ b/docs/next/add-new-chaos-experiment-type/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/basic-features/index.html b/docs/next/basic-features/index.html index 02faa5e415..f9868f43b2 100644 --- a/docs/next/basic-features/index.html +++ b/docs/next/basic-features/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/chaos-engineering-principles/index.html b/docs/next/chaos-engineering-principles/index.html index f514e131d3..b10b2f7011 100644 --- a/docs/next/chaos-engineering-principles/index.html +++ b/docs/next/chaos-engineering-principles/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/chaosctl-tool/index.html b/docs/next/chaosctl-tool/index.html index 5a78a4b247..010432c661 100644 --- a/docs/next/chaosctl-tool/index.html +++ b/docs/next/chaosctl-tool/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/chaosd-overview/index.html b/docs/next/chaosd-overview/index.html index 93d37ea65d..771b865d1f 100644 --- a/docs/next/chaosd-overview/index.html +++ b/docs/next/chaosd-overview/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/chaosd-search-recover/index.html b/docs/next/chaosd-search-recover/index.html index 6356ed11fd..f159139375 100644 --- a/docs/next/chaosd-search-recover/index.html +++ b/docs/next/chaosd-search-recover/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/check-workflow-status/index.html b/docs/next/check-workflow-status/index.html index dcc1cdd2ac..c08204a394 100644 --- a/docs/next/check-workflow-status/index.html +++ b/docs/next/check-workflow-status/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/clean-up-chaos-experiments/index.html b/docs/next/clean-up-chaos-experiments/index.html index ed472aee7c..7c2d11ff67 100644 --- a/docs/next/clean-up-chaos-experiments/index.html +++ b/docs/next/clean-up-chaos-experiments/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/common/quick-run/index.html b/docs/next/common/quick-run/index.html index 443c4fb76c..b903c2c138 100644 --- a/docs/next/common/quick-run/index.html +++ b/docs/next/common/quick-run/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/common/verify-installation/index.html b/docs/next/common/verify-installation/index.html index 192f6a875a..2c6f1a3222 100644 --- a/docs/next/common/verify-installation/index.html +++ b/docs/next/common/verify-installation/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/configure-development-environment/index.html b/docs/next/configure-development-environment/index.html index 20cf92c30f..5eddaf2061 100644 --- a/docs/next/configure-development-environment/index.html +++ b/docs/next/configure-development-environment/index.html @@ -12,7 +12,7 @@ - + @@ -78,8 +78,8 @@Compile Chaos Mesh with DEBUG=1
:
UI=1 DEBUG=1 make image
Compile Chaos Mesh with DEBUGGER=1
:
UI=1 DEBUGGER=1 make image
Load container images into minikube:
diff --git a/docs/next/configure-enabled-namespace/index.html b/docs/next/configure-enabled-namespace/index.html index 9a87776bb7..982c8baf76 100644 --- a/docs/next/configure-enabled-namespace/index.html +++ b/docs/next/configure-enabled-namespace/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/create-chaos-mesh-workflow/index.html b/docs/next/create-chaos-mesh-workflow/index.html index 647cb5a425..f2c4cead10 100644 --- a/docs/next/create-chaos-mesh-workflow/index.html +++ b/docs/next/create-chaos-mesh-workflow/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/define-chaos-experiment-scope/index.html b/docs/next/define-chaos-experiment-scope/index.html index fd4f597e9b..eeb1619e97 100644 --- a/docs/next/define-chaos-experiment-scope/index.html +++ b/docs/next/define-chaos-experiment-scope/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/define-scheduling-rules/index.html b/docs/next/define-scheduling-rules/index.html index d8903e544d..1d46f32dc2 100644 --- a/docs/next/define-scheduling-rules/index.html +++ b/docs/next/define-scheduling-rules/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/define-workflow-scheduling-rules/index.html b/docs/next/define-workflow-scheduling-rules/index.html index c8f6fac113..78282f53c0 100644 --- a/docs/next/define-workflow-scheduling-rules/index.html +++ b/docs/next/define-workflow-scheduling-rules/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/developer-guide-overview/index.html b/docs/next/developer-guide-overview/index.html index 83e2e69f8f..0d301c21a2 100644 --- a/docs/next/developer-guide-overview/index.html +++ b/docs/next/developer-guide-overview/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/expose-dashboard-with-ingress/index.html b/docs/next/expose-dashboard-with-ingress/index.html index 93803c2660..d8058a71cc 100644 --- a/docs/next/expose-dashboard-with-ingress/index.html +++ b/docs/next/expose-dashboard-with-ingress/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/extend-chaos-daemon-interface/index.html b/docs/next/extend-chaos-daemon-interface/index.html index cc87bafe04..163bfeb7c2 100644 --- a/docs/next/extend-chaos-daemon-interface/index.html +++ b/docs/next/extend-chaos-daemon-interface/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/extend-chaosd/index.html b/docs/next/extend-chaosd/index.html index 1663c13037..8b24fb0988 100644 --- a/docs/next/extend-chaosd/index.html +++ b/docs/next/extend-chaosd/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/faqs/index.html b/docs/next/faqs/index.html index 47042c92ed..747e95817c 100644 --- a/docs/next/faqs/index.html +++ b/docs/next/faqs/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/gcp-authentication/index.html b/docs/next/gcp-authentication/index.html index e9177ea12d..225863cb84 100644 --- a/docs/next/gcp-authentication/index.html +++ b/docs/next/gcp-authentication/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/glossary/index.html b/docs/next/glossary/index.html index 5220238d83..7d856a476a 100644 --- a/docs/next/glossary/index.html +++ b/docs/next/glossary/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/go-client/index.html b/docs/next/go-client/index.html index d1d0d250d9..e5b57b7c40 100644 --- a/docs/next/go-client/index.html +++ b/docs/next/go-client/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/index.html b/docs/next/index.html index 0c5357e976..85b72e4735 100644 --- a/docs/next/index.html +++ b/docs/next/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/inspect-chaos-experiments/index.html b/docs/next/inspect-chaos-experiments/index.html index 45ddbac3dc..b5157eea8e 100644 --- a/docs/next/inspect-chaos-experiments/index.html +++ b/docs/next/inspect-chaos-experiments/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/integrate-chaos-mesh-into-github-actions/index.html b/docs/next/integrate-chaos-mesh-into-github-actions/index.html index d1677a2362..f1d3648762 100644 --- a/docs/next/integrate-chaos-mesh-into-github-actions/index.html +++ b/docs/next/integrate-chaos-mesh-into-github-actions/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/java-client/index.html b/docs/next/java-client/index.html index 211e40fb3c..3808e195f0 100644 --- a/docs/next/java-client/index.html +++ b/docs/next/java-client/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/manage-user-permissions/index.html b/docs/next/manage-user-permissions/index.html index 18c4257b2a..c00029074f 100644 --- a/docs/next/manage-user-permissions/index.html +++ b/docs/next/manage-user-permissions/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/multi-data-center-scenario/index.html b/docs/next/multi-data-center-scenario/index.html index d162e19689..5d8c106739 100644 --- a/docs/next/multi-data-center-scenario/index.html +++ b/docs/next/multi-data-center-scenario/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/offline-installation/index.html b/docs/next/offline-installation/index.html index a29ca70ff0..d919f6ac89 100644 --- a/docs/next/offline-installation/index.html +++ b/docs/next/offline-installation/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/persistence-dashboard/index.html b/docs/next/persistence-dashboard/index.html index 54be6cc849..7ec1908a1c 100644 --- a/docs/next/persistence-dashboard/index.html +++ b/docs/next/persistence-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/production-installation-using-helm/index.html b/docs/next/production-installation-using-helm/index.html index eea1da7001..c2e5f5a965 100644 --- a/docs/next/production-installation-using-helm/index.html +++ b/docs/next/production-installation-using-helm/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/python-client/index.html b/docs/next/python-client/index.html index 6d9c78f25f..134913bb5f 100644 --- a/docs/next/python-client/index.html +++ b/docs/next/python-client/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/quick-start/index.html b/docs/next/quick-start/index.html index b57511db4a..12b5a52a38 100644 --- a/docs/next/quick-start/index.html +++ b/docs/next/quick-start/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/release-0.0.8/index.html b/docs/next/release-0.0.8/index.html index 7d4ce2603f..41313e47a5 100644 --- a/docs/next/release-0.0.8/index.html +++ b/docs/next/release-0.0.8/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/release-0.0.9/index.html b/docs/next/release-0.0.9/index.html index 91f4257dc2..6055c49d00 100644 --- a/docs/next/release-0.0.9/index.html +++ b/docs/next/release-0.0.9/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/release-1.0.0/index.html b/docs/next/release-1.0.0/index.html index 2bf1a418dd..1bd9d0ff3c 100644 --- a/docs/next/release-1.0.0/index.html +++ b/docs/next/release-1.0.0/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/release-2.0.0/index.html b/docs/next/release-2.0.0/index.html index 82994dfa74..bfa8ca1373 100644 --- a/docs/next/release-2.0.0/index.html +++ b/docs/next/release-2.0.0/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/release-2.5-tracking/index.html b/docs/next/release-2.5-tracking/index.html index 0376cbee02..ab69b8f854 100644 --- a/docs/next/release-2.5-tracking/index.html +++ b/docs/next/release-2.5-tracking/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/release-cycle/index.html b/docs/next/release-cycle/index.html index 9dcd381055..0c4f72025d 100644 --- a/docs/next/release-cycle/index.html +++ b/docs/next/release-cycle/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/remote-cluster-management/index.html b/docs/next/remote-cluster-management/index.html index 15511f9635..11a001a94f 100644 --- a/docs/next/remote-cluster-management/index.html +++ b/docs/next/remote-cluster-management/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/run-a-chaos-experiment/index.html b/docs/next/run-a-chaos-experiment/index.html index 3e9e636080..3123b14e3a 100644 --- a/docs/next/run-a-chaos-experiment/index.html +++ b/docs/next/run-a-chaos-experiment/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/run-serial-or-parallel-experiments/index.html b/docs/next/run-serial-or-parallel-experiments/index.html index 9e15169c01..914adf6837 100644 --- a/docs/next/run-serial-or-parallel-experiments/index.html +++ b/docs/next/run-serial-or-parallel-experiments/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/rust-client/index.html b/docs/next/rust-client/index.html index 83282d454b..48aeff00cc 100644 --- a/docs/next/rust-client/index.html +++ b/docs/next/rust-client/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/send-http-request-on-workflow/index.html b/docs/next/send-http-request-on-workflow/index.html index 7d2d7204ff..488abf336f 100644 --- a/docs/next/send-http-request-on-workflow/index.html +++ b/docs/next/send-http-request-on-workflow/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-aws-chaos/index.html b/docs/next/simulate-aws-chaos/index.html index 8388b86a69..dc1f2c9ec7 100644 --- a/docs/next/simulate-aws-chaos/index.html +++ b/docs/next/simulate-aws-chaos/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-azure-chaos/index.html b/docs/next/simulate-azure-chaos/index.html index 51824ac930..f490d6a21a 100644 --- a/docs/next/simulate-azure-chaos/index.html +++ b/docs/next/simulate-azure-chaos/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-block-chaos-on-kubernetes/index.html b/docs/next/simulate-block-chaos-on-kubernetes/index.html index ed70f5eaee..ff03f8bba1 100644 --- a/docs/next/simulate-block-chaos-on-kubernetes/index.html +++ b/docs/next/simulate-block-chaos-on-kubernetes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-disk-pressure-in-physical-nodes/index.html b/docs/next/simulate-disk-pressure-in-physical-nodes/index.html index aa423e109a..39c352bf51 100644 --- a/docs/next/simulate-disk-pressure-in-physical-nodes/index.html +++ b/docs/next/simulate-disk-pressure-in-physical-nodes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-dns-chaos-on-kubernetes/index.html b/docs/next/simulate-dns-chaos-on-kubernetes/index.html index e5de5128b8..70f578b0bf 100644 --- a/docs/next/simulate-dns-chaos-on-kubernetes/index.html +++ b/docs/next/simulate-dns-chaos-on-kubernetes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-file-chaos-in-physical-nodes/index.html b/docs/next/simulate-file-chaos-in-physical-nodes/index.html index 36414ffebe..593431215c 100644 --- a/docs/next/simulate-file-chaos-in-physical-nodes/index.html +++ b/docs/next/simulate-file-chaos-in-physical-nodes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-gcp-chaos/index.html b/docs/next/simulate-gcp-chaos/index.html index 26da32d46a..605029a722 100644 --- a/docs/next/simulate-gcp-chaos/index.html +++ b/docs/next/simulate-gcp-chaos/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-heavy-stress-in-physical-nodes/index.html b/docs/next/simulate-heavy-stress-in-physical-nodes/index.html index d28f251402..efcaf3fd1e 100644 --- a/docs/next/simulate-heavy-stress-in-physical-nodes/index.html +++ b/docs/next/simulate-heavy-stress-in-physical-nodes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-heavy-stress-on-kubernetes/index.html b/docs/next/simulate-heavy-stress-on-kubernetes/index.html index 8e4fe7e636..eb59096167 100644 --- a/docs/next/simulate-heavy-stress-on-kubernetes/index.html +++ b/docs/next/simulate-heavy-stress-on-kubernetes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-host-console-in-physical-nodes/index.html b/docs/next/simulate-host-console-in-physical-nodes/index.html index 837f242017..8e6ec2c139 100644 --- a/docs/next/simulate-host-console-in-physical-nodes/index.html +++ b/docs/next/simulate-host-console-in-physical-nodes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-http-chaos-on-kubernetes/index.html b/docs/next/simulate-http-chaos-on-kubernetes/index.html index 9ed76a9954..d270c12293 100644 --- a/docs/next/simulate-http-chaos-on-kubernetes/index.html +++ b/docs/next/simulate-http-chaos-on-kubernetes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-io-chaos-on-kubernetes/index.html b/docs/next/simulate-io-chaos-on-kubernetes/index.html index 36ebfcd1b5..38a3c26417 100644 --- a/docs/next/simulate-io-chaos-on-kubernetes/index.html +++ b/docs/next/simulate-io-chaos-on-kubernetes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-jvm-application-chaos-in-physical-nodes/index.html b/docs/next/simulate-jvm-application-chaos-in-physical-nodes/index.html index 3817a18b73..90ae67837d 100644 --- a/docs/next/simulate-jvm-application-chaos-in-physical-nodes/index.html +++ b/docs/next/simulate-jvm-application-chaos-in-physical-nodes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-jvm-application-chaos/index.html b/docs/next/simulate-jvm-application-chaos/index.html index 7d99d26c4a..381e24fd99 100644 --- a/docs/next/simulate-jvm-application-chaos/index.html +++ b/docs/next/simulate-jvm-application-chaos/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-kernel-chaos-on-kubernetes/index.html b/docs/next/simulate-kernel-chaos-on-kubernetes/index.html index 194c884ee8..ae2fb71ef4 100644 --- a/docs/next/simulate-kernel-chaos-on-kubernetes/index.html +++ b/docs/next/simulate-kernel-chaos-on-kubernetes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-network-chaos-in-physical-nodes/index.html b/docs/next/simulate-network-chaos-in-physical-nodes/index.html index 0c17136afe..74aa86c47e 100644 --- a/docs/next/simulate-network-chaos-in-physical-nodes/index.html +++ b/docs/next/simulate-network-chaos-in-physical-nodes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-network-chaos-on-kubernetes/index.html b/docs/next/simulate-network-chaos-on-kubernetes/index.html index 2b1db311ef..e0ec8aa892 100644 --- a/docs/next/simulate-network-chaos-on-kubernetes/index.html +++ b/docs/next/simulate-network-chaos-on-kubernetes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-physical-machine-chaos/index.html b/docs/next/simulate-physical-machine-chaos/index.html index 80ee48e598..1a014224ec 100644 --- a/docs/next/simulate-physical-machine-chaos/index.html +++ b/docs/next/simulate-physical-machine-chaos/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-pod-chaos-on-kubernetes/index.html b/docs/next/simulate-pod-chaos-on-kubernetes/index.html index f45fb22429..6e4c7d5867 100644 --- a/docs/next/simulate-pod-chaos-on-kubernetes/index.html +++ b/docs/next/simulate-pod-chaos-on-kubernetes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-process-chaos-in-physical-nodes/index.html b/docs/next/simulate-process-chaos-in-physical-nodes/index.html index ded39aa579..742857b3d9 100644 --- a/docs/next/simulate-process-chaos-in-physical-nodes/index.html +++ b/docs/next/simulate-process-chaos-in-physical-nodes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-redis-chaos-on-physical-nodes/index.html b/docs/next/simulate-redis-chaos-on-physical-nodes/index.html index 99964d46cf..cb86df9353 100644 --- a/docs/next/simulate-redis-chaos-on-physical-nodes/index.html +++ b/docs/next/simulate-redis-chaos-on-physical-nodes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-time-chaos-on-kubernetes/index.html b/docs/next/simulate-time-chaos-on-kubernetes/index.html index d5465f75e3..aec3dafe7b 100644 --- a/docs/next/simulate-time-chaos-on-kubernetes/index.html +++ b/docs/next/simulate-time-chaos-on-kubernetes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/simulate-time-chaos-on-physical-nodes/index.html b/docs/next/simulate-time-chaos-on-physical-nodes/index.html index 7de48dfce1..540e2da82c 100644 --- a/docs/next/simulate-time-chaos-on-physical-nodes/index.html +++ b/docs/next/simulate-time-chaos-on-physical-nodes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/status-check-in-workflow/index.html b/docs/next/status-check-in-workflow/index.html index 96af8779cb..2357f41160 100644 --- a/docs/next/status-check-in-workflow/index.html +++ b/docs/next/status-check-in-workflow/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/troubleshooting-guide/index.html b/docs/next/troubleshooting-guide/index.html index 5cf52aec42..7a6438a823 100644 --- a/docs/next/troubleshooting-guide/index.html +++ b/docs/next/troubleshooting-guide/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/uninstallation/index.html b/docs/next/uninstallation/index.html index ea9fffc40a..c258dc4871 100644 --- a/docs/next/uninstallation/index.html +++ b/docs/next/uninstallation/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/upgrade-from-2.1-to-2.2/index.html b/docs/next/upgrade-from-2.1-to-2.2/index.html index eb6e43052e..93d4833978 100644 --- a/docs/next/upgrade-from-2.1-to-2.2/index.html +++ b/docs/next/upgrade-from-2.1-to-2.2/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/upgrade-to-2.0/index.html b/docs/next/upgrade-to-2.0/index.html index b80df2547b..3c06b2331a 100644 --- a/docs/next/upgrade-to-2.0/index.html +++ b/docs/next/upgrade-to-2.0/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/use-argo-to-orchestrate-chaos-experiments/index.html b/docs/next/use-argo-to-orchestrate-chaos-experiments/index.html index ae277c3a5e..e154b6d0ef 100644 --- a/docs/next/use-argo-to-orchestrate-chaos-experiments/index.html +++ b/docs/next/use-argo-to-orchestrate-chaos-experiments/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/next/use-grafana-data-source/index.html b/docs/next/use-grafana-data-source/index.html index b8e9792db9..ac71635a1a 100644 --- a/docs/next/use-grafana-data-source/index.html +++ b/docs/next/use-grafana-data-source/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/offline-installation/index.html b/docs/offline-installation/index.html index 41ea1ef8e4..32b617f12f 100644 --- a/docs/offline-installation/index.html +++ b/docs/offline-installation/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/persistence-dashboard/index.html b/docs/persistence-dashboard/index.html index 9d588ed209..809a7d8f2e 100644 --- a/docs/persistence-dashboard/index.html +++ b/docs/persistence-dashboard/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/production-installation-using-helm/index.html b/docs/production-installation-using-helm/index.html index 46b32f6280..4f0b3ace78 100644 --- a/docs/production-installation-using-helm/index.html +++ b/docs/production-installation-using-helm/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/python-client/index.html b/docs/python-client/index.html index be2ec62e54..e2a3c4e810 100644 --- a/docs/python-client/index.html +++ b/docs/python-client/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/quick-start/index.html b/docs/quick-start/index.html index 201542049b..3640a4df5f 100644 --- a/docs/quick-start/index.html +++ b/docs/quick-start/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/release-0.0.8/index.html b/docs/release-0.0.8/index.html index 25c9bf98eb..7e18fa1069 100644 --- a/docs/release-0.0.8/index.html +++ b/docs/release-0.0.8/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/release-0.0.9/index.html b/docs/release-0.0.9/index.html index e72214211e..2487adbb86 100644 --- a/docs/release-0.0.9/index.html +++ b/docs/release-0.0.9/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/release-1.0.0/index.html b/docs/release-1.0.0/index.html index 178012cb78..a601e70db0 100644 --- a/docs/release-1.0.0/index.html +++ b/docs/release-1.0.0/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/release-2.0.0/index.html b/docs/release-2.0.0/index.html index e4d7aad076..e0a4fca93c 100644 --- a/docs/release-2.0.0/index.html +++ b/docs/release-2.0.0/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/release-2.5-tracking/index.html b/docs/release-2.5-tracking/index.html index 9724c71658..e7a1c4e8fb 100644 --- a/docs/release-2.5-tracking/index.html +++ b/docs/release-2.5-tracking/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/release-cycle/index.html b/docs/release-cycle/index.html index bb58a2c1ae..781e2fb3cc 100644 --- a/docs/release-cycle/index.html +++ b/docs/release-cycle/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/remote-cluster-management/index.html b/docs/remote-cluster-management/index.html index 5c65482fdc..18160461ca 100644 --- a/docs/remote-cluster-management/index.html +++ b/docs/remote-cluster-management/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/run-a-chaos-experiment/index.html b/docs/run-a-chaos-experiment/index.html index 0649659cb4..8cd9ecfdf9 100644 --- a/docs/run-a-chaos-experiment/index.html +++ b/docs/run-a-chaos-experiment/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/run-serial-or-parallel-experiments/index.html b/docs/run-serial-or-parallel-experiments/index.html index 4105a1c7ad..f0dabb15c5 100644 --- a/docs/run-serial-or-parallel-experiments/index.html +++ b/docs/run-serial-or-parallel-experiments/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/rust-client/index.html b/docs/rust-client/index.html index 01d21895da..2261b9e81f 100644 --- a/docs/rust-client/index.html +++ b/docs/rust-client/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/send-http-request-on-workflow/index.html b/docs/send-http-request-on-workflow/index.html index 9c260c66eb..1644b56a7d 100644 --- a/docs/send-http-request-on-workflow/index.html +++ b/docs/send-http-request-on-workflow/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-aws-chaos/index.html b/docs/simulate-aws-chaos/index.html index f9d80a4118..bad4571f7e 100644 --- a/docs/simulate-aws-chaos/index.html +++ b/docs/simulate-aws-chaos/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-azure-chaos/index.html b/docs/simulate-azure-chaos/index.html index 2d1e3600b0..f605723210 100644 --- a/docs/simulate-azure-chaos/index.html +++ b/docs/simulate-azure-chaos/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-block-chaos-on-kubernetes/index.html b/docs/simulate-block-chaos-on-kubernetes/index.html index 9423c11539..b105bfe127 100644 --- a/docs/simulate-block-chaos-on-kubernetes/index.html +++ b/docs/simulate-block-chaos-on-kubernetes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-disk-pressure-in-physical-nodes/index.html b/docs/simulate-disk-pressure-in-physical-nodes/index.html index bc575a922d..08424d0fe1 100644 --- a/docs/simulate-disk-pressure-in-physical-nodes/index.html +++ b/docs/simulate-disk-pressure-in-physical-nodes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-dns-chaos-on-kubernetes/index.html b/docs/simulate-dns-chaos-on-kubernetes/index.html index 378559de23..f9027d3b54 100644 --- a/docs/simulate-dns-chaos-on-kubernetes/index.html +++ b/docs/simulate-dns-chaos-on-kubernetes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-file-chaos-in-physical-nodes/index.html b/docs/simulate-file-chaos-in-physical-nodes/index.html index 7947f8d10b..54e07aa54e 100644 --- a/docs/simulate-file-chaos-in-physical-nodes/index.html +++ b/docs/simulate-file-chaos-in-physical-nodes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-gcp-chaos/index.html b/docs/simulate-gcp-chaos/index.html index 9b2190b6a6..3305d15846 100644 --- a/docs/simulate-gcp-chaos/index.html +++ b/docs/simulate-gcp-chaos/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-heavy-stress-in-physical-nodes/index.html b/docs/simulate-heavy-stress-in-physical-nodes/index.html index c3ec5a6245..8cbbe80188 100644 --- a/docs/simulate-heavy-stress-in-physical-nodes/index.html +++ b/docs/simulate-heavy-stress-in-physical-nodes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-heavy-stress-on-kubernetes/index.html b/docs/simulate-heavy-stress-on-kubernetes/index.html index 75224da028..6b04417a6f 100644 --- a/docs/simulate-heavy-stress-on-kubernetes/index.html +++ b/docs/simulate-heavy-stress-on-kubernetes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-host-console-in-physical-nodes/index.html b/docs/simulate-host-console-in-physical-nodes/index.html index a6976ce29d..19dccfc7f3 100644 --- a/docs/simulate-host-console-in-physical-nodes/index.html +++ b/docs/simulate-host-console-in-physical-nodes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-http-chaos-on-kubernetes/index.html b/docs/simulate-http-chaos-on-kubernetes/index.html index 09248a8bf2..e653772a53 100644 --- a/docs/simulate-http-chaos-on-kubernetes/index.html +++ b/docs/simulate-http-chaos-on-kubernetes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-io-chaos-on-kubernetes/index.html b/docs/simulate-io-chaos-on-kubernetes/index.html index d4a7d842fd..842cbee191 100644 --- a/docs/simulate-io-chaos-on-kubernetes/index.html +++ b/docs/simulate-io-chaos-on-kubernetes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-jvm-application-chaos-in-physical-nodes/index.html b/docs/simulate-jvm-application-chaos-in-physical-nodes/index.html index b258834743..d98574b52c 100644 --- a/docs/simulate-jvm-application-chaos-in-physical-nodes/index.html +++ b/docs/simulate-jvm-application-chaos-in-physical-nodes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-jvm-application-chaos/index.html b/docs/simulate-jvm-application-chaos/index.html index e06711adc1..2d3deefd0e 100644 --- a/docs/simulate-jvm-application-chaos/index.html +++ b/docs/simulate-jvm-application-chaos/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-kernel-chaos-on-kubernetes/index.html b/docs/simulate-kernel-chaos-on-kubernetes/index.html index 29e90bd05f..9de4a0aa7c 100644 --- a/docs/simulate-kernel-chaos-on-kubernetes/index.html +++ b/docs/simulate-kernel-chaos-on-kubernetes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-network-chaos-in-physical-nodes/index.html b/docs/simulate-network-chaos-in-physical-nodes/index.html index 007836c5bd..de65144cd6 100644 --- a/docs/simulate-network-chaos-in-physical-nodes/index.html +++ b/docs/simulate-network-chaos-in-physical-nodes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-network-chaos-on-kubernetes/index.html b/docs/simulate-network-chaos-on-kubernetes/index.html index 6fd4057d2b..899684e2d1 100644 --- a/docs/simulate-network-chaos-on-kubernetes/index.html +++ b/docs/simulate-network-chaos-on-kubernetes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-physical-machine-chaos/index.html b/docs/simulate-physical-machine-chaos/index.html index 425f250b35..ae2c0e4b59 100644 --- a/docs/simulate-physical-machine-chaos/index.html +++ b/docs/simulate-physical-machine-chaos/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-pod-chaos-on-kubernetes/index.html b/docs/simulate-pod-chaos-on-kubernetes/index.html index 00c8337940..2039e5b1a2 100644 --- a/docs/simulate-pod-chaos-on-kubernetes/index.html +++ b/docs/simulate-pod-chaos-on-kubernetes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-process-chaos-in-physical-nodes/index.html b/docs/simulate-process-chaos-in-physical-nodes/index.html index 11dd746ddf..806f80d844 100644 --- a/docs/simulate-process-chaos-in-physical-nodes/index.html +++ b/docs/simulate-process-chaos-in-physical-nodes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-redis-chaos-on-physical-nodes/index.html b/docs/simulate-redis-chaos-on-physical-nodes/index.html index d2a4ea60fa..765e478822 100644 --- a/docs/simulate-redis-chaos-on-physical-nodes/index.html +++ b/docs/simulate-redis-chaos-on-physical-nodes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-time-chaos-on-kubernetes/index.html b/docs/simulate-time-chaos-on-kubernetes/index.html index b8eb3d5809..6b0af8ba58 100644 --- a/docs/simulate-time-chaos-on-kubernetes/index.html +++ b/docs/simulate-time-chaos-on-kubernetes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/simulate-time-chaos-on-physical-nodes/index.html b/docs/simulate-time-chaos-on-physical-nodes/index.html index 454f9100ea..f0d2a56393 100644 --- a/docs/simulate-time-chaos-on-physical-nodes/index.html +++ b/docs/simulate-time-chaos-on-physical-nodes/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/status-check-in-workflow/index.html b/docs/status-check-in-workflow/index.html index d7e81ca9ae..8205c83ecb 100644 --- a/docs/status-check-in-workflow/index.html +++ b/docs/status-check-in-workflow/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/troubleshooting-guide/index.html b/docs/troubleshooting-guide/index.html index 3d57deda87..f2c943b21e 100644 --- a/docs/troubleshooting-guide/index.html +++ b/docs/troubleshooting-guide/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/uninstallation/index.html b/docs/uninstallation/index.html index 6ec2672652..ffc6114934 100644 --- a/docs/uninstallation/index.html +++ b/docs/uninstallation/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/upgrade-from-2.1-to-2.2/index.html b/docs/upgrade-from-2.1-to-2.2/index.html index 3b2ee16539..a3af203acb 100644 --- a/docs/upgrade-from-2.1-to-2.2/index.html +++ b/docs/upgrade-from-2.1-to-2.2/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/upgrade-to-2.0/index.html b/docs/upgrade-to-2.0/index.html index 8597d0b6ac..c5f9a016e9 100644 --- a/docs/upgrade-to-2.0/index.html +++ b/docs/upgrade-to-2.0/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/use-argo-to-orchestrate-chaos-experiments/index.html b/docs/use-argo-to-orchestrate-chaos-experiments/index.html index c526e7f83b..552af6c7f1 100644 --- a/docs/use-argo-to-orchestrate-chaos-experiments/index.html +++ b/docs/use-argo-to-orchestrate-chaos-experiments/index.html @@ -12,7 +12,7 @@ - + diff --git a/docs/use-grafana-data-source/index.html b/docs/use-grafana-data-source/index.html index cc5038b647..dac8735be1 100644 --- a/docs/use-grafana-data-source/index.html +++ b/docs/use-grafana-data-source/index.html @@ -12,7 +12,7 @@ - + diff --git a/index.html b/index.html index 4e40016ce5..d8baeae3f8 100644 --- a/index.html +++ b/index.html @@ -12,7 +12,7 @@ - + diff --git a/search/index.html b/search/index.html index 818a2a9919..c7cdb04ccc 100644 --- a/search/index.html +++ b/search/index.html @@ -12,7 +12,7 @@ - + diff --git a/supported-releases/index.html b/supported-releases/index.html index 7b64e594db..3712d77367 100644 --- a/supported-releases/index.html +++ b/supported-releases/index.html @@ -12,7 +12,7 @@ - + diff --git a/versions/index.html b/versions/index.html index 4c8bc59700..d72b38931f 100644 --- a/versions/index.html +++ b/versions/index.html @@ -12,7 +12,7 @@ - +