area(Getting Started): 📝 Added all the sections and sub sections in Getting Started 📝 (#60)

* area(Getting Started): 📝 Added all the sections and sub sections in Getting Started 📝

Signed-off-by: Sayan Mondal <sayan@chaosnative.com>
This commit is contained in:
Sayan Mondal 2021-07-26 08:49:41 +05:30 committed by GitHub
parent 228b1b8498
commit e4d7b07bf0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 580 additions and 325 deletions

View File

@ -55,6 +55,7 @@ ArgoCD
argoproj
argowf
args
atleast
AUT
auth
AUTH
@ -696,6 +697,7 @@ workflowtemplates
xcvc
wp
yaml
YAMLs
yml
zk
Zokeeper
@ -707,6 +709,7 @@ Worklfow
LitmusPortal
abc
litmusctl
LitmusCTL
subcommand
Litmusctl
gz

View File

@ -1,33 +0,0 @@
---
id: getstarted
title: Getting Started with Litmus
sidebar_label: Pre-requisites
---
---
## Pre-requisites
- Kubernetes 1.15 or later.
- Persistent volume of 20GB
Recommend to have a Persistent volume(PV) of 20GB, You can start with 1GB for test purposes as well. This PV is used as persistent storage to store the chaos config and chaos-metrics in the Portal. By default, litmus install would use the default storage class to allocate the PV. Provide this value
- Helm3 or Kubectl
## Getting Started
Running chaos on your application involves the following steps:
[Install Litmus](litmus-install-cluster-mode)
[How to Create and Run a Workflow](create-workflow)
[Observe ChaosResults](observe-workflow)
<hr/>
## Join our community
If you have not joined our community, do join us [here](https://app.slack.com/client/T09NY5SBT/CNXNB0ZTN).

View File

@ -0,0 +1,18 @@
---
id: agents
title: Agents
sidebar_label: Agents
---
An Agent in Litmus is nothing but the target cluster where Chaos would be injected via Litmus. There should always be atleast one or more than one Agents connected to the Litmus Control Plane. Each individual Agent can be chosen to be the Target Agent for Chaos Injection.
## Types of Agent
In Litmus the Agents can be classified into two types
- <span style={{color: '#5B44BA'}}><b>Self Agent</b></span>
- <span style={{color: '#5B44BA'}}><b>External Agent</b></span>
As part of the Litmus installation, a Self Agent would be registered as a default Agent in the Control Plane. The same cluster where Litmus is installed is chosen as the Self Agent by the installer. From the Control Plane you can now induce chaos into this Self Agent and observe the results.
Since the Chaos Control Plane is Cross Cloud, you can connect multiple external Kubernetes agents to the same with the help of the command line utility <span style={{color: '#5B44BA'}}><b>litmusctl</b></span>. Once connected you can manage, monitor, observe and induce chaos from the Control Plane to the respective agent.

View File

@ -0,0 +1,15 @@
---
id: basic-requirements
title: Prerequisites
sidebar_label: Basic Requirements
---
Before deploying LitmusChaos, make sure the following items are there
- Kubernetes 1.15 or later
- A Persistent volume of 20GB
>Recommend to have a Persistent volume(PV) of 20GB, You can start with 1GB for test purposes as well. This PV is used as persistent storage to store the chaos config and chaos-metrics in the Portal. By default, litmus install would use the default storage class to allocate the PV. Provide this value
- [Helm3](https://v3.helm.sh/) or [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl)

View File

@ -0,0 +1,7 @@
---
id: agent-install
title: Agent Installation
sidebar_label: Agent Install
---
## Coming Soon

View File

@ -0,0 +1,51 @@
---
id: chaos-control-plane
title: Chaos Control Plane
sidebar_label: Chaos Control Plane
---
---
The <span style={{color: '#5B44BA'}}>**Chaos Control Plane**</span> is a single source of truth to control all the different Chaos Activities happening around Litmus. From the Control Plane you get the freedom to manage every single part of Litmus and shape your workflows exactly the way you want it.
The **Control Plane comes pre-packaged** as a part of LitmusChaos installation and can be easily accessed via <span style={{color: '#5B44BA'}}>Ingress, NodePort</span> or <span style={{color: '#5B44BA'}}>LoadBalancer</span>. Since Litmus has Cross-Cloud support, you get seamless access to the Plane irrespective of where you deploy it.
>[Get a broader view of which Platforms are supported by Litmus](https://github.com/litmuschaos/litmus/tree/master/litmus-portal#platforms-support)
The Chaos Control Plane gives you access to a plethora of features, the major ones include
- Workflow Creation
<span style={{color: '#909191'}}>
<ul>
<li>From Templates, Custom Workflows from Scratch (using ChaosHubs), From pre-created YAMLs</li>
<li>Chaos Experiments Sequence Control (Parallel as well as Sequential steps creation)</li>
<li>Creation of either Singular or Cron Workflows as Schedules</li>
<li>Attaching priority to Chaos Experiments based on your use cases</li>
</ul>
</span>
- Users & Teams
<span style={{color: '#909191'}}>
<ul>
<li>Creation of Users with Role Based Access Control</li>
<li>Creating a Team of multiple Users</li>
<li>Authenticating Users</li>
</ul>
</span>
- Monitoring & Observability
<span style={{color: '#909191'}}>
<ul>
<li>Connect a Data Source (from any Agent) and monitor workflows</li>
<li>Visualize workflow run statistics and aggregated schedules</li>
<li>Compare two or more Workflows</li>
<li>Upload shared/downloadable dashboards available in the community</li>
<li>Edit queries, Tune dashboards to create a custom one from scratch</li>
<li>Monitor effect of chaos in real time with interleaved events and metrics from Prometheus Datasource</li>
</ul>
</span>
- Workflow Management
<span style={{color: '#909191'}}>
<ul>
<li>Rolling out automated changes using GitOps</li>
<li>Allowing image addition from custom image server (both public and private)</li>
<li>Measure and Analyse the Resilience Score of each workflow</li>
</ul>
</span>

View File

@ -0,0 +1,166 @@
---
id: cluster-scope-installation
title: Litmus Cluster Scope Installation
sidebar_label: Cluster Scope
---
---
## Prerequisites
Before deploying LitmusChaos, make sure the [prerequisites](basic-requirements) are met.
## Installation
Installation of Litmus can be done using either of the below methods
- [Helm3](#install-litmus-using-helm) chart
- [Kubectl](#install-litmus-using-kubectl) yaml spec file
### Install Litmus using Helm
The helm chart will install all the required service account configuration and chaos control plane.
The following steps will help you install litmus via helm.
#### Step-1: Add the litmus helm repository
```bash
helm repo add litmuschaos https://litmuschaos.github.io/litmus-helm/
helm repo list
```
#### Step-2: Create the namespace on which you want to install Litmus
- The litmus infra components will be placed in this namespace.
> The chaos control plane can be placed in any namespace, in this case we are using `litmus` as the namespace of our choice.
```bash
kubectl create ns <LITMUS_PORTAL_NAMESPACE>
```
#### Step-3: Install the litmus chaos control plane
```bash
helm install chaos litmuschaos/litmus-2-0-0-beta --namespace=<LITMUS_PORTAL_NAMESPACE> --devel
```
<span style={{color: 'green'}}><b>Expected Output</b></span>
```
NAME: chaos
LAST DEPLOYED: Tue Jun 15 19:20:09 2021
NAMESPACE: <LITMUS_PORTAL_NAMESPACE>
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thank you for installing litmus-2-0-0-beta 😀
Your release is named chaos and its installed to namespace: litmus.
Visit https://docs.litmuschaos.io/docs/getstarted/ to find more info.
```
> **Note:** Litmus uses Kubernetes CRDs to define chaos intent. Helm3 handles CRDs better than Helm2. Before you start running a chaos experiment, verify if Litmus is installed correctly.
### **Install Litmus using kubectl **
#### **Create the namespace on which you want to install Litmus**
```bash
kubectl create ns <LITMUS_PORTAL_NAMESPACE>
```
#### **Install Litmus**
Applying the manifest file will install all the required service account configuration and chaos control plane.
```bash
kubectl apply -f https://litmuschaos.github.io/litmus/2.0.0-Beta/litmus-2.0.0-Beta.yaml -n <LITMUS_PORTAL_NAMESPACE>
```
---
## **Verify your installation**
**Verify if the frontend, server, and database pods are running**
- Check the pods in the namespace where you installed Litmus:
```bash
kubectl get pods -n <LITMUS_PORTAL_NAMESPACE>
```
<span style={{color: 'green'}}><b>Expected Output</b></span>
```bash
NAME READY STATUS RESTARTS AGE
litmusportal-frontend-97c8bf86b-mx89w 1/1 Running 2 6m24s
litmusportal-server-5cfbfc88cc-m6c5j 2/2 Running 2 6m19s
mongo-0 1/1 Running 0 6m16s
```
- Check the services running in the namespace where you installed Litmus:
```bash
kubectl get svc -n <LITMUS_PORTAL_NAMESPACE>
```
<span style={{color: 'green'}}><b>Expected Output</b></span>
```bash
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
litmusportal-frontend-service NodePort 10.100.105.154 <none> 9091:30229/TCP 7m14s
litmusportal-server-service NodePort 10.100.150.175 <none> 9002:30479/TCP,9003:31949/TCP 7m8s
mongo-service ClusterIP 10.100.226.179 <none> 27017/TCP 7m6s
```
## Resources
#### Videos
<iframe width="560" height="315" src="https://www.youtube.com/embed/rOrKegj5ePI" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
#### Blogs
<table>
<tr>
<td>
<a href="https://dev.to/litmus-chaos/getting-started-with-litmus-2-0-in-google-kubernetes-engine-4obf">
<img width={300} src="https://res.cloudinary.com/practicaldev/image/fetch/s--zqwPPulX--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vklusi3v61g28ospmpck.png" />
<br />
<div style={{width: "300px"}}>
Getting Started with Litmus 2.0 in Google Kubernetes Engine
</div>
</a>
</td>
<td>
<a href="https://dev.to/avaakash/getting-started-with-litmus-2-0-in-azure-kubernetes-service-13f3">
<img width={300} src="https://res.cloudinary.com/practicaldev/image/fetch/s--2AubMs-V--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8c9oa4s10q3zbj9ew7eu.png" />
<br />
<div style={{width: "300px"}}>
Getting Started with LitmusChaos 2.0 in Azure Kubernetes Service
</div>
</a>
</td>
</tr>
<tr>
<td>
<a href="https://blog.mayadata.io/get-started-with-litmuschaos-in-minutes">
<img width={300} src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fmma.prnewswire.com%2Fmedia%2F736824%2FMayaData_Logo.jpg%3Fp%3Dtwitter&f=1&nofb=1" />
<br />
<div style={{width: "300px"}}>
Get Started with LitmusChaos in Minutes
</div>
</a>
</td>
</tr>
</table>
## Learn More
- [Install Litmus in Namespace Scope](namespace-scope-installation)
- [Setup Endpoints and Access Litmus without Ingress](setup-without-ingress)
- [Setup Endpoints and Access Litmus with Ingress](setup-with-ingress)

View File

@ -0,0 +1,7 @@
---
id: learning-litmus
title: Various Ways of Learning Litmus
sidebar_label: Learning Litmus
---
## Coming Soon

View File

@ -1,29 +1,20 @@
---
id: agent-install
title: Litmus Chaos Agent Install
sidebar_label: Chaos Agent
id: litmusctl
title: LitmusCTL
sidebar_label: LitmusCTL
---
In Litmus the Agents can be classified as two types
- Self Agent
- External Agent
As part of Litmus installation by default, a self cluster would be registered as Agent in the Portal. From Portal you induce chaos into self cluster and observe the results from the Portal.
As you are aware by now, Portal is a Cross Cloud Chaos Control plane. That is you can connect multiple external kubernetes agents to this portal. Once connected you can manage the chaos from the Portal that is you can induce chaos into this agent from the Portal and observe the results from the Portal. Using the command line utility _litmusctl_ you can connect the external agents to the Portal.
# Litmusctl
## Litmusctl
Litmusctl is a command line interface to manage LitmusPortal services.
## Requirements
### Requirements
The litmusctl CLI requires the following things:
- Kubeconfig - litmusctl needs the kubeconfig of the k8s cluster where we need to connect litmus agents. The CLI currently uses the default path of kubeconfig i.e. `~/.kube/config`.
## Installation
### Installation
To install the latest version of litmusctl follow the below steps:
@ -77,7 +68,7 @@ chmod +x litmusctl
sudo mv litmusctl /usr/local/bin/litmusctl
```
## Basic Commands
### Basic Commands
litmusctl CLI command has the following structure:
@ -91,7 +82,7 @@ To get the version of the litmusctl CLI:
litmusctl version
```
### Connecting an agent
#### Connecting an agent
To connect Litmus Chaos agent:
@ -102,9 +93,10 @@ litmusctl agent connect
Next, you need to enter LitmusPortal details to login into your LitmusPortal account. Fields to be filled in:
**LitmusPortal UI URL:** Enter the URL used to access the Litmus Portal UI.
Example, http://172.17.0.2:31696/
**Username:** Enter your LitmusPortal username.
> For Example `http://172.17.0.2:31696/`
**Username:** Enter your LitmusPortal username.<br />
**Password:** Enter your LitmusPortal password.
```bash
@ -144,7 +136,6 @@ Next, select the installation mode. In case the selected mode was a Cluster ther
Next, enter the details of the new agent.
Fields to filled in:
**Agent Name:** Enter the name for the new agent.
**Agent Description:** Fill in details about the agent.

View File

@ -1,29 +1,23 @@
---
id: litmus-install-namespace-mode
title: Litmus Chaos Control Plane (Namespace Mode)
sidebar_label: Control Plane (Namespace Mode)
id: namespace-scope-installation
title: Litmus Namespace Scope Installation
sidebar_label: Namespace Scope
---
---
<iframe width="560" height="315" src="https://www.youtube.com/embed/rOrKegj5ePI" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
## Prerequisites
## Pre-requisites
- Kubernetes 1.15 or later.
- Recommend to have a Persistent volume(PV) of 20GB, You can start with 1GB for test purposes as well. This PV is used as persistent storage to store the chaos config and chaos-metrics in the Portal. By default, litmus would use the default storage class to allocate the PV.
- Helm3 or Kubectl
Before deploying LitmusChaos, make sure the [prerequisites](basic-requirements) are met.
## Installation
Installation of Litmus can be done using either of the below methods
- [Helm3](#helm_install) chart or
- [Kubectl](#kubectl_install) yaml spec file
- [Helm3](#install-litmus-using-helm) chart
- [Kubectl](#install-litmus-using-kubectl) yaml spec file
### <a name="kubectl_install"> </a>**Install Litmus using Helm **
### **Install Litmus using Helm **
The helm chart will install all the required service account configuration and chaos control plane.
@ -36,20 +30,41 @@ helm repo add litmuschaos https://litmuschaos.github.io/litmus-helm/
helm repo list
```
#### Step-2: Create the litmus namespace
#### Step-2: Create the namespace on which you want to install Litmus <span style={{color: '#909191'}}><b>[Required only if namespace isn't there]</b></span>
- The litmus infra components will be placed in this namespace.
**Note**: The chaos control plane can be placed in any namespace, though it is typically placed in "litmus".
The Litmus infra components will be placed in this namespace.
```bash
kubectl create ns litmus
kubectl create ns <LITMUS_PORTAL_NAMESPACE>
```
#### Step-3: Install the litmus chaos control plane
> The chaos control plane can be placed in any namespace, though it is typically placed in `litmus`. Ignore if you already have the namespace where you want to install Litmus created.
#### Step-3: Install the required Litmus CRDs
The cluster-admin or an equivalent user with the right permissions are required to install the CRDs upfront.
```bash
helm install chaos litmuschaos/litmus-2-0-0-beta --namespace=litmus --devel --set portalScope=namespace
kubectl apply -f https://raw.githubusercontent.com/litmuschaos/litmus/master/litmus-portal/litmus-portal-crds.yml
```
<span style={{color: 'green'}}><b>Expected Output</b></span>
```bash
customresourcedefinition.apiextensions.k8s.io/clusterworkflowtemplates.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/cronworkflows.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/workflows.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/workflowtemplates.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/chaosengines.litmuschaos.io created
customresourcedefinition.apiextensions.k8s.io/chaosexperiments.litmuschaos.io created
customresourcedefinition.apiextensions.k8s.io/chaosresults.litmuschaos.io created
customresourcedefinition.apiextensions.k8s.io/eventtrackerpolicies.eventtracker.litmuschaos.io created
```
#### Step-4: Install the litmus chaos control plane
```bash
helm install chaos litmuschaos/litmus-2-0-0-beta --namespace=<LITMUS_PORTAL_NAMESPACE> --devel --set portalScope=namespace
```
<span style={{color: 'green'}}><b>Expected Output</b></span>
@ -57,14 +72,14 @@ helm install chaos litmuschaos/litmus-2-0-0-beta --namespace=litmus --devel --se
```bash
NAME: chaos
LAST DEPLOYED: Tue Jun 15 19:20:09 2021
NAMESPACE: litmus
NAMESPACE: <LITMUS_PORTAL_NAMESPACE>
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thank you for installing litmus-2-0-0-beta 😀
Your release is named chaos and its installed to namespace: litmus.
Your release is named chaos and its installed to namespace: <LITMUS_PORTAL_NAMESPACE>.
Visit https://docs.litmuschaos.io/docs/getstarted/ to find more info.
@ -72,40 +87,27 @@ Visit https://docs.litmuschaos.io/docs/getstarted/ to find more info.
> **Note:** Litmus uses Kubernetes CRDs to define chaos intent. Helm3 handles CRDs better than Helm2. Before you start running a chaos experiment, verify if Litmus is installed correctly.
- The cluster-admin or an equivalent user with the right permissions are required to install them CRDs upfront. To apply LitmusCRDs:
### **Install Litmus using kubectl **
```bash
kubectl apply -f https://raw.githubusercontent.com/litmuschaos/litmus/master/litmus-portal/litmus-portal-crds.yml
```
<span style={{color: 'green'}}><b>Expected Output</b></span>
```bash
customresourcedefinition.apiextensions.k8s.io/clusterworkflowtemplates.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/cronworkflows.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/workflows.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/workflowtemplates.argoproj.io created
customresourcedefinition.apiextensions.k8s.io/chaosengines.litmuschaos.io created
customresourcedefinition.apiextensions.k8s.io/chaosexperiments.litmuschaos.io created
customresourcedefinition.apiextensions.k8s.io/chaosresults.litmuschaos.io created
customresourcedefinition.apiextensions.k8s.io/eventtrackerpolicies.eventtracker.litmuschaos.io created
```
### <a name="kubectl_install"> </a>**Install Litmus using kubectl **
#### **Install Litmus**
- Set the namespace on which you want to install litmus.
#### **Set the namespace on which you want to install Litmus**
```bash
export LITMUS_PORTAL_NAMESPACE="<namespace>"
kubectl get ns ${LITMUS_PORTAL_NAMESPACE}
# If the namespace is not already present
# then create the target namespace
kubectl create ns ${LITMUS_PORTAL_NAMESPACE}
```
- The cluster-admin or an equivalent user with the right permissions are required to install them CRDs upfront. To apply LitmusCRDs:
> If the namespace is not already present then create the target namespace `kubectl create ns ${LITMUS_PORTAL_NAMESPACE}` or `kubectl create ns <Your Namespace>`
<span style={{color: 'green'}}><b>Expected Output</b></span>
```bash
NAME STATUS AGE
<LITMUS_PORTAL_NAMESPACE> Active 79m
```
#### **Install the required Litmus CRDs**
The cluster-admin or an equivalent user with the right permissions are required to install the CRDs upfront.
```bash
kubectl apply -f https://raw.githubusercontent.com/litmuschaos/litmus/master/litmus-portal/litmus-portal-crds.yml
@ -124,16 +126,19 @@ customresourcedefinition.apiextensions.k8s.io/chaosresults.litmuschaos.io create
customresourcedefinition.apiextensions.k8s.io/eventtrackerpolicies.eventtracker.litmuschaos.io created
```
- Replace namespace with the target namespace.
#### **Install Litmus**
Applying the manifest file will install all the required service account configuration and chaos control plane.
```bash
export LITMUS_PORTAL_NAMESPACE="<namespace>"
curl https://raw.githubusercontent.com/litmuschaos/litmus/master/docs/2.0.0-Beta/litmus-namespaced-2.0.0-Beta.yaml --output litmus-portal-namespaced-K8s-template.yml
envsubst < litmus-portal-namespaced-K8s-template.yml >
${LITMUS_PORTAL_NAMESPACE}-ns-scoped-litmus-portal-manifest.yml
kubectl apply -f ${LITMUS_PORTAL_NAMESPACE}-ns-scoped-litmus-portal-manifest.yml -n ${LITMUS_PORTAL_NAMESPACE}
```
> You need to export the namespace in order for the above step to work `export LITMUS_PORTAL_NAMESPACE="<namespace>"`. Ignore if already done in the first step.
<span style={{color: 'green'}}><b>Expected Output</b></span>
```bash
@ -149,18 +154,20 @@ statefulset.apps/mongo created
service/mongo-service created
```
---
## **Verify your installation**
**Verify if the frontend, server, and database pods are running**
- Check the pods in litmus namespace:
- Check the pods in the namespace where you installed Litmus:
```bash
kubectl get pods -n litmus
kubectl get pods -n <LITMUS_PORTAL_NAMESPACE>
```
<span style={{color: 'green'}}><b>Expected Output</b></span>
```bash
NAME READY STATUS RESTARTS AGE
litmusportal-frontend-97c8bf86b-mx89w 1/1 Running 2 6m24s
@ -168,10 +175,10 @@ service/mongo-service created
mongo-0 1/1 Running 0 6m16s
```
- Check the services running in litmus namespace:
- Check the services running in the namespace where you installed Litmus:
```bash
kubectl get svc -n litmus
kubectl get svc -n <LITMUS_PORTAL_NAMESPACE>
```
<span style={{color: 'green'}}><b>Expected Output</b></span>
@ -183,44 +190,50 @@ service/mongo-service created
mongo-service ClusterIP 10.100.226.179 <none> 27017/TCP 7m6s
```
<br />
## Resources
## **Setup the Portal**
#### Videos
To setup and login to Litmus Portal expand the available services just created and copy the `PORT` of the `litmusportal-frontend-service` service
<iframe width="560" height="315" src="https://www.youtube.com/embed/rOrKegj5ePI" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
```bash
kubectl get svc -n litmus
```
#### Blogs
<span style={{color: 'green'}}><b>Expected Output</b></span>
<table>
<tr>
<td>
<a href="https://dev.to/litmus-chaos/getting-started-with-litmus-2-0-in-google-kubernetes-engine-4obf">
<img width={300} src="https://res.cloudinary.com/practicaldev/image/fetch/s--zqwPPulX--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vklusi3v61g28ospmpck.png" />
<br />
<div style={{width: "300px"}}>
Getting Started with Litmus 2.0 in Google Kubernetes Engine
</div>
</a>
</td>
<td>
<a href="https://dev.to/avaakash/getting-started-with-litmus-2-0-in-azure-kubernetes-service-13f3">
<img width={300} src="https://res.cloudinary.com/practicaldev/image/fetch/s--2AubMs-V--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8c9oa4s10q3zbj9ew7eu.png" />
<br />
<div style={{width: "300px"}}>
Getting Started with LitmusChaos 2.0 in Azure Kubernetes Service
</div>
</a>
</td>
</tr>
<tr>
<td>
<a href="https://blog.mayadata.io/get-started-with-litmuschaos-in-minutes">
<img width={300} src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fmma.prnewswire.com%2Fmedia%2F736824%2FMayaData_Logo.jpg%3Fp%3Dtwitter&f=1&nofb=1" />
<br />
<div style={{width: "300px"}}>
Get Started with LitmusChaos in Minutes
</div>
</a>
</td>
</tr>
</table>
```bash
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
chaos-litmus-portal-mongo ClusterIP 10.104.107.117 <none> 27017/TCP 2m
litmusportal-frontend-service NodePort 10.101.81.70 <none> 9091:30385/TCP 2m
litmusportal-server-service NodePort 10.108.151.79 <none> 9002:32456/TCP,9003:31160/TCP 2m
```
## Learn More
> **Note**: In this case, the PORT for `litmusportal-frontend-service` is `30385`. Yours will be different.
### **Accessing the Portal**
Once you have the PORT copied in your clipboard, simply use your NodeIP and PORT in this manner `<NodeIP>:<PORT>` to access the portal.
For example:
```yaml
http://172.17.0.3:30385/
```
> Where `172.17.0.3` is my NodeIP and `30385` is the frontend service PORT. You can also use a LoadBalancer if not NodePort, the only change would be to provide a `<LoadBalancerIP>:<PORT>`
You should be able to see the Login Page of Litmus. The **default credentials** are
```yaml
Username: admin
Password: litmus
```
<img src={require('./assets/login.png').default} width="800" />
- [Install Litmus in Namespace Scope](namespace-scope-installation)
- [Setup Endpoints and Access Litmus without Ingress](setup-without-ingress)
- [Setup Endpoints and Access Litmus with Ingress](setup-with-ingress)

View File

@ -0,0 +1,7 @@
---
id: run-your-first-workflow
title: Run your First Chaos Workflow in 5 minutes
sidebar_label: Run Your First Workflow
---
## Coming Soon

View File

@ -1,36 +1,36 @@
---
id: litmus-with-ingress
id: setup-with-ingress
title: Install LitmusPortal with Ingress
sidebar_label: Litmus with Ingress
sidebar_label: Setup With Ingress
---
---
### Install LitmusPortal with Ingress
## Prerequisites
Before setting up endpoint with Ingress make sure the [Litmus Chaos Control Plane](chaos-control-plane) is installed in either one of these scopes
- [Cluster Scope](cluster-scope-installation)
- [Namespace Scope](namespace-scope-installation)
## Install LitmusPortal with Ingress
With Litmus-2.0.0-Beta3, LitmusPortal can be installed with ingress.
In the following doc, we will use the Nginx ingress controller for ingress setup.
1. Install the litmus chaos control plane
1. By default, the service type is `NodePort`. For Ingress, we need to change the service type to `ClusterIP` in the following services.
```bash
kubectl apply -f https://litmuschaos.github.io/litmus/2.0.0-Beta/litmus-2.0.0-Beta.yaml
```
- `litmusportal-frontend-service`
- `litmusportal-server-service`
2. By default, the service type is NodePort. For Ingress, we need to change the service type to ClusterIP in the following services.
* litmusportal-frontend-service
* litmusportal-server-service
2. Install Nginx Ingress Controller along with Kubernetes RBAC roles and bindings, please refer [here](https://kubernetes.github.io/ingress-nginx/deploy/#installation-guide)
> - If you're changing ingress name from **litmus-ingress** to a different name, make sure to update the **INGRESS_NAME** environment variable in the litmusportal-server deployment
> - Set the environment variable **INGRESS** as true in the litmusportal-server deployment.
3. Install Nginx Ingress Controller along with Kubernetes RBAC roles and bindings, please refer [here](https://kubernetes.github.io/ingress-nginx/deploy/#installation-guide)
### With HTTP
**Note:**
* If you're changing ingress name from **litmus-ingress** to a different name, make sure to update the **INGRESS_NAME** environment variable in the litmusportal-server deployment
* Set the environment variable **INGRESS** as true in the litmusportal-server deployment.
#### With HTTP
4. Sample litmus ingress manifest With HTTP
Sample litmus ingress manifest With HTTP
```yaml
apiVersion: extensions/v1beta1
@ -42,7 +42,7 @@ metadata:
name: litmus-ingress
spec:
rules:
- host: "<HOST-NAME>"
- host: '<HOST-NAME>'
http:
paths:
- backend:
@ -61,9 +61,9 @@ spec:
kubectl apply -f <litmus_ingress_manifest> -n <PORTAL_NAMESPACE>
```
#### With HTTPS
### With HTTPS
4. Install CertManager
1. Install CertManager
```bash
kubectl create namespace cert-manager
@ -71,7 +71,7 @@ helm repo add jetstack https://charts.jetstack.io
helm install cert-manager jetstack/cert-manager --namespace cert-manager --create-namespace --version v1.3.0 --set installCRDs=true
```
5. Install LetsEncrypt Cluster Issuer
2. Install LetsEncrypt Cluster Issuer
```yaml
apiVersion: cert-manager.io/v1alpha2
@ -90,7 +90,7 @@ spec:
class: nginx
```
6. Sample Litmus Portal Ingress Manifest with HTTPS
3. Sample Litmus Portal Ingress Manifest with HTTPS
```yaml
apiVersion: extensions/v1beta1
@ -106,7 +106,7 @@ metadata:
namespace: litmus
spec:
rules:
- host: "<HOST-NAME>"
- host: '<HOST-NAME>'
http:
paths:
- backend:
@ -121,9 +121,41 @@ spec:
pathType: ImplementationSpecific
tls:
- hosts:
- "<HOST-NAME>"
- '<HOST-NAME>'
secretName: litmuspreview-tls-secret
```
```bash
kubectl apply -f <litmus_ingress_manifest> -n <PORTAL_NAMESPACE>
```
## Resources
<table>
<tr>
<td>
<a href="https://dev.to/hjgraca/aks-ingress-with-nginx-and-key-vault-certificates-2kma">
<img width={300} src="https://res.cloudinary.com/practicaldev/image/fetch/s--RyQOqlJg--/c_imagga_scale,f_auto,fl_progressive,h_420,q_auto,w_1000/https://dev-to-uploads.s3.amazonaws.com/i/o13zbbtdr3nen2ikv734.jpg" />
<br />
<div style={{width: "300px"}}>
AKS ingress with nginx and Key Vault certificates
</div>
</a>
</td>
<td>
<a href="https://kubernetes.io/docs/concepts/services-networking/ingress/">
<img width={300} src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fwww.mirantis.com%2Fwp-content%2Fuploads%2F2018%2F03%2Ffirst-beta-version-of-kubernetes-1-10-is-here-your-chance-to-provide-feedback.jpg&f=1&nofb=1" />
<br />
<div style={{width: "300px"}}>
Ingress
</div>
</a>
</td>
</tr>
</table>
## Learn More
- [Setup Endpoints and Access Litmus without Ingress](setup-without-ingress)
- [Install Litmus in Namespace Scope](namespace-scope-installation)
- [Install Litmus in Cluster Scope](cluster-scope-installation)

View File

@ -0,0 +1,111 @@
---
id: setup-without-ingress
title: Setting up Endpoints without Ingress
sidebar_label: Setup without Ingress
---
## Prerequisites
Before setting up endpoint with Ingress make sure the [Litmus Chaos Control Plane](chaos-control-plane) is installed in either one of these scopes
- [Cluster Scope](cluster-scope-installation)
- [Namespace Scope](namespace-scope-installation)
## **With NodePort**
To setup and login to Litmus Portal expand the available services just created and copy the `PORT` of the `litmusportal-frontend-service` service
```bash
kubectl get svc -n <LITMUS_PORTAL_NAMESPACE>
```
<span style={{color: 'green'}}><b>Expected Output</b></span>
```bash
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
chaos-litmus-portal-mongo ClusterIP 10.104.107.117 <none> 27017/TCP 2m
litmusportal-frontend-service NodePort 10.101.81.70 <none> 9091:30385/TCP 2m
litmusportal-server-service NodePort 10.108.151.79 <none> 9002:32456/TCP,9003:31160/TCP 2m
```
> **Note**: In this case, the PORT for `litmusportal-frontend-service` is `30385`. Yours will be different.
## **With LoadBalancer**
To setup and login to Litmus Portal with LoadBalancer, patch the Frontend Service `litmusportal-frontend-service` and expose the External IP.
```bash
kubectl patch svc litmusportal-frontend-service -p '{"spec": {"type": "LoadBalancer"}}' -n <LITMUS_PORTAL_NAMESPACE>
```
<span style={{color: 'green'}}><b>Expected Output</b></span>
```bash
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
chaos-litmus-portal-mongo ClusterIP 10.104.107.117 <none> 27017/TCP 2m
litmusportal-frontend-service NodePort 10.101.81.70 <none> 9091:30385/TCP 2m
litmusportal-server-service NodePort 10.108.151.79 <none> 9002:32456/TCP,9003:31160/TCP 2m
```
## **Accessing the Portal**
Once you have the PORT copied in your clipboard, simply use your IP and PORT in this manner `<IP>:<PORT>` to access the portal.
For example:
```yaml
http://172.17.0.3:30385/
```
> Where `172.17.0.3` is my NodeIP and `30385` is the frontend service PORT. If using a LoadBalancer, the only change would be to provide a `<LoadBalancerIP>:<PORT>`
You should be able to see the Login Page of Litmus. The **default credentials** are
```yaml
Username: admin
Password: litmus
```
<img src={require('./assets/login.png').default} width="800" />
## Resources
<table>
<tr>
<td>
<a href="https://kubernetes.io/docs/concepts/services-networking/service/#nodeport">
<img width={300} src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fwww.mirantis.com%2Fwp-content%2Fuploads%2F2018%2F03%2Ffirst-beta-version-of-kubernetes-1-10-is-here-your-chance-to-provide-feedback.jpg&f=1&nofb=1" />
<br />
<div style={{width: "300px"}}>
NodePort
</div>
</a>
</td>
<td>
<a href="https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer">
<img width={300} src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fwww.mirantis.com%2Fwp-content%2Fuploads%2F2018%2F03%2Ffirst-beta-version-of-kubernetes-1-10-is-here-your-chance-to-provide-feedback.jpg&f=1&nofb=1" />
<br />
<div style={{width: "300px"}}>
LoadBalancer
</div>
</a>
</td>
</tr>
<tr>
<td>
<a href="https://kubernetes.io/docs/concepts/services-networking/ingress/">
<img width={300} src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fwww.mirantis.com%2Fwp-content%2Fuploads%2F2018%2F03%2Ffirst-beta-version-of-kubernetes-1-10-is-here-your-chance-to-provide-feedback.jpg&f=1&nofb=1" />
<br />
<div style={{width: "300px"}}>
Ingress
</div>
</a>
</td>
</tr>
</table>
## Learn More
- [Setup Endpoints and Access Litmus with Ingress](setup-with-ingress)
- [Install Litmus in Namespace Scope](namespace-scope-installation)
- [Install Litmus in Cluster Scope](cluster-scope-installation)

View File

@ -1,144 +0,0 @@
---
id: litmus-install-cluster-mode
title: Litmus Chaos Control Plane (Cluster Mode)
sidebar_label: Control Plane (Cluster Mode)
---
---
<iframe width="560" height="315" src="https://www.youtube.com/embed/rOrKegj5ePI" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
## Pre-requisites
- Kubernetes 1.15 or later.
- Recommend to have a Persistent volume(PV) of 20GB, You can start with 1GB for test purposes as well. This PV is used as persistent storage to store the chaos config and chaos-metrics in the Portal. By default, litmus would use the default storage class to allocate the PV.
- Helm3 or Kubectl
## Installation
Installation of Litmus can be done using either of the below methods
- [Helm3](#helm_install) chart or
- [Kubectl](#kubectl_install) yaml spec file
### Installation Steps
The helm chart will install all the required service account configuration and chaos control plane.
The following steps will help you install litmus via helm.
#### Step-1: Add the litmus helm repository
```bash
helm repo add litmuschaos https://litmuschaos.github.io/litmus-helm/
helm repo list
```
#### Step-2: Create the litmus namespace
- The litmus infra components will be placed in this namespace.
**Note**: The chaos control plane can be placed in any namespace, though it is typically placed in "litmus".
```bash
kubectl create ns litmus
```
#### Step-3: Install the litmus chaos control plane
```bash
helm install chaos litmuschaos/litmus-2-0-0-beta --namespace=litmus --devel
```
<span style={{color: 'green'}}><b>Expected Output</b></span>
```
NAME: chaos
LAST DEPLOYED: Tue Jun 15 19:20:09 2021
NAMESPACE: litmus
STATUS: deployed
REVISION: 1
TEST SUITE: None
NOTES:
Thank you for installing litmus-2-0-0-beta 😀
Your release is named chaos and its installed to namespace: litmus.
Visit https://docs.litmuschaos.io/docs/getstarted/ to find more info.
```
> **Note:** Litmus uses Kubernetes CRDs to define chaos intent. Helm3 handles CRDs better than Helm2. Before you start running a chaos experiment, verify if Litmus is installed correctly.
### <a name="kubectl_install"> </a>**Install Litmus using kubectl **
#### **Create a Litmus namespace in Kubernetes**
```bash
kubectl create ns litmus
```
#### **Install Litmus**
Applying the manifest file will install all the required service account configuration and chaos control plane.
```bash
kubectl apply -f https://litmuschaos.github.io/litmus/2.0.0-Beta/litmus-2.0.0-Beta.yaml
```
## **Verify your installation**
**Verify if the frontend, server, and database pod are running**
```bash
kubectl get pods -n litmus
```
<span style={{color: 'green'}}><b>Expected Output</b></span>
```bash
chaos-litmus-portal-frontend-ff8b554dc-q5rl4 1/1 Running 0 2m6s
chaos-litmus-portal-mongo-6764cfdd59-c9r56 1/1 Running 0 2m6s
chaos-litmus-portal-server-5ffbccbfff-dknv8 2/2 Running 0 2m6s
```
## **Setup the Portal**
To setup and login to Litmus Portal expand the available services just created and copy the `PORT` of the `litmusportal-frontend-service` service
```bash
kubectl get svc -n litmus
```
<span style={{color: 'green'}}><b>Expected Output</b></span>
```bash
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
chaos-litmus-portal-mongo ClusterIP 10.104.107.117 <none> 27017/TCP 2m
litmusportal-frontend-service NodePort 10.101.81.70 <none> 9091:30385/TCP 2m
litmusportal-server-service NodePort 10.108.151.79 <none> 9002:32456/TCP,9003:31160/TCP 2m
```
> **Note**: In this case, the PORT for `litmusportal-frontend-service` is `30385`. Yours will be different.
### **Accessing the Portal**
Once you have the PORT copied in your clipboard, simply use your NodeIP and PORT in this manner `<NodeIP>:<PORT>` to access the portal.
For example:
```yaml
http://172.17.0.3:30385/
```
> Where `172.17.0.3` is my NodeIP and `30385` is the frontend service PORT. You can also use a LoadBalancer if not NodePort, the only change would be to provide a `<LoadBalancerIP>:<PORT>`
You should be able to see the Login Page of Litmus. The **default credentials** are
```yaml
Username: admin
Password: litmus
```
<img src={require('./assets/login.png').default} width="800" />

View File

@ -8,20 +8,31 @@ module.exports = {
// "feature-definition"
],
'Getting Started': [
'getstarted',
{
Installation: [
'litmus-install-cluster-mode',
'litmus-install-namespace-mode',
'agent-install',
'litmus-with-ingress'
Prerequisites: [
'basic-requirements',
{
Resources: ['chaos-control-plane', 'agents']
}
]
},
'create-workflow',
'observe-workflow',
{
Uninstallation: ['agent-uninstall', 'litmus-uninstall']
}
Installation: [
{
'Control Plane': [
'cluster-scope-installation',
'namespace-scope-installation',
'setup-without-ingress',
'setup-with-ingress'
]
},
{
'Chaos Plane': ['agent-install', 'litmusctl']
}
]
},
'run-your-first-workflow',
'learning-litmus'
],
'User Guide': [
{

View File

@ -8,11 +8,11 @@ body {
margin: 0;
padding: 0;
background: #f4f5f7;
font-size: 1.05rem;
}
a {
text-decoration: none;
color: #000;
}
/* SVGs font work differenly than normal HTML elements. So this rule is required. */