Skip to content

Commit

Permalink
Add "Tutorials" sidebar and create new podtato-head tutorial (#302)
Browse files Browse the repository at this point in the history
* feat: add podtato-head tutorial

Signed-off-by: Suhyen Im <suhyenim.kor@gmail.com>

* feat: update podtato-head tutorial

Signed-off-by: Suhyen Im <suhyenim.kor@gmail.com>

* feat: add description and change tutorial to not use the template

Signed-off-by: Suhyen Im <suhyenim.kor@gmail.com>

* fix: change sidebar label

Signed-off-by: Suhyen Im <suhyenim.kor@gmail.com>

* fix: change subheading

Signed-off-by: Suhyen Im <suhyenim.kor@gmail.com>

* fix: change sidebar label

Signed-off-by: Suhyen Im <suhyenim.kor@gmail.com>

* feat: add tutorials overview

Signed-off-by: Suhyen Im <suhyenim.kor@gmail.com>

* feat: update podtato-head description in overview

Signed-off-by: Suhyen Im <suhyenim.kor@gmail.com>

---------

Signed-off-by: Suhyen Im <suhyenim.kor@gmail.com>
  • Loading branch information
suhyenim authored Jan 13, 2025
1 parent 379de51 commit 5cdca74
Show file tree
Hide file tree
Showing 32 changed files with 287 additions and 0 deletions.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 13 additions & 0 deletions website/docs/tutorials/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
id: overview
title: Overview
sidebar_label: Overview
---

---

The Tutorials section offers hands-on guides for Litmus users to experiment with various tools and environments. This section does not cover the detailed installation steps, which can be found in the [Getting-started](../getting-started/installation.md) section.

### [Let's Start with Podtato-head](podtato-head.md)

This tutorial guides users on how to inject a pod-delete fault into one of the pods in the [podtato-head](https://github.com/cncf/podtato-head) microservice and verify its availability during the chaos.
126 changes: 126 additions & 0 deletions website/docs/tutorials/podtato-head.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
---
id: podtato-head
title: Let's Start with Podtato-head
sidebar_label: Let's Start with Podtato-head
---

---

![podtato-head](../assets/tutorials/podtato-head/podtato-head.png)

In this tutorial, you will inject a pod-delete fault into the `podtato-head-hat` pod of the sample microservices application, [podtato-head](https://github.com/cncf/podtato-head), and check if the pod remains available during the chaos.

## What is Podtato-head?

[Podtato-head](https://github.com/cncf/podtato-head) is a sample application provided by the [CNCF](https://github.com/cncf) designed for practicing Kubernetes and cloud-native environments. This application is composed of several microservices, including frontend, hat, left/right-arm, and left/right-leg. It serves as an environment for experimenting with fault recovery capabilities and testing the system resilience.

## Prerequisites

- Kubernetes 1.18 or later (minimum 2 vCPUs, 8GB RAM, 10GB disk space)
- A Persistent volume of 20GB
- [Kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl)

## Install Podtato-head

1. Install `podtato-head` in the `podtato-kubectl` namespace using the manifest file, which also creates the namespace

```bash
kubectl apply -f https://github.com/podtato-head/podtato-head-app/releases/download/v0.3.3/manifest.yaml
```

2. Add a label to the `podtato-head-hat` deployment

```bash
kubectl label deployment podtato-head-hat app=podtato-head-hat -n podtato-kubectl
```

## Install ChaosCenter

1. Follow the [Getting-started](../getting-started/installation.md) guide to install ChaosCenter

2. Access the ChaosCenter Dashboard

![chaoscenter-dashboard](../assets/tutorials/podtato-head/chaoscenter-dashboard.png)

## Set up Environment

1. Add a new environment
- Environment Name: `local`
- Environment Type: `Production`

![local-environment](../assets/tutorials/podtato-head/local-environment.png)

## Enable Chaos Infrastructure

1. Configure a new chaos infrastructure
- Name: `local`
- Chaos Components Installation: `Cluster-wide access`
- Installation Location (Namespace): `litmus`
- Service Account Name: `litmus`

2. Deploy the new chaos infrastructure

```bash
kubectl apply -f local-litmus-chaos-enable.yml
```

3. Wait until the status changes to `CONNECTED`.

![connected](../assets/tutorials/podtato-head/connected.png)

## Set up Resilience Probe

1. Select **CMD Probe** as the probe type

2. Configure the probe properties and details
- Name: `check-podtato-head-hat-pod`
- Timeout: `10s`
- Interval: `1s`
- Attempt: `1`
- Command: `kubectl get pods -n podtato-kubectl | grep podtato-head-hat | grep Running | wc -l`
- Type: `Int`
- Comparison Criteria: `>`
- Value: `0`

![setup-probe](../assets/tutorials/podtato-head/setup-probe.png)

## Run Chaos Experiment

1. Start a new chaos experiment
- Name: `podtato-head`
- Chaos Infrastructure: `local`
- Builder Type: `Blank Canvas`

![start-chaos-experiment](../assets/tutorials/podtato-head/start-chaos-experiment.png)

2. Add the `pod-delete` chaos fault

![add-pod-delete](../assets/tutorials/podtato-head/add-pod-delete.png)

3. Select the target application for the `pod-delete` chaos fault
- App Kind: `deployment`
- App Namespace: `podtato-kubectl`
- App Label: `app=podtato-head-hat`

![select-target-application](../assets/tutorials/podtato-head/select-target-application.png)

4. Add the probe to the `pod-delete` chaos fault
- Probe Name: `check-podtato-head-hat-pod`
- Mode: `EOT`

![add-probe](../assets/tutorials/podtato-head/add-probe.png)

5. Save and run the chaos experiment

## Conclusion

- Experiment Status: `COMPLETED`
- Resilience Score: `100%`
- Probe Result: `PASSED`

![experiment-result](../assets/tutorials/podtato-head/experiment-result.png)

---

Congratulations! 🎉 You've successfully completed the tutorial.
Continue exploring more tutorials to enjoy your journey with LitmusChaos! 🚀
3 changes: 3 additions & 0 deletions website/sidebars.js
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,9 @@ module.exports = {
{
Integrations: ['integrations/prometheus', 'integrations/grafana', 'integrations/backstage']
},
{
Tutorials: ['tutorials/overview','tutorials/podtato-head']
},
'troubleshooting',
'best-practices',
'glossary',
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
13 changes: 13 additions & 0 deletions website/versioned_docs/version-3.12.0/tutorials/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
id: overview
title: Overview
sidebar_label: Overview
---

---

The Tutorials section offers hands-on guides for Litmus users to experiment with various tools and environments. This section does not cover the detailed installation steps, which can be found in the [Getting-started](../getting-started/installation.md) section.

### [Let's Start with Podtato-head](podtato-head.md)

This tutorial guides users on how to inject a pod-delete fault into one of the pods in the [podtato-head](https://github.com/cncf/podtato-head) microservice and verify its availability during the chaos.
126 changes: 126 additions & 0 deletions website/versioned_docs/version-3.12.0/tutorials/podtato-head.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,126 @@
---
id: podtato-head
title: Let's Start with Podtato-head
sidebar_label: Let's Start with Podtato-head
---

---

![podtato-head](../assets/tutorials/podtato-head/podtato-head.png)

In this tutorial, you will inject a pod-delete fault into the `podtato-head-hat` pod of the sample microservices application, [podtato-head](https://github.com/cncf/podtato-head), and check if the pod remains available during the chaos.

## What is Podtato-head?

[Podtato-head](https://github.com/cncf/podtato-head) is a sample application provided by the [CNCF](https://github.com/cncf) designed for practicing Kubernetes and cloud-native environments. This application is composed of several microservices, including frontend, hat, left/right-arm, and left/right-leg. It serves as an environment for experimenting with fault recovery capabilities and testing the system resilience.

## Prerequisites

- Kubernetes 1.18 or later (minimum 2 vCPUs, 8GB RAM, 10GB disk space)
- A Persistent volume of 20GB
- [Kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl)

## Install Podtato-head

1. Install `podtato-head` in the `podtato-kubectl` namespace using the manifest file, which also creates the namespace

```bash
kubectl apply -f https://github.com/podtato-head/podtato-head-app/releases/download/v0.3.3/manifest.yaml
```

2. Add a label to the `podtato-head-hat` deployment

```bash
kubectl label deployment podtato-head-hat app=podtato-head-hat -n podtato-kubectl
```

## Install ChaosCenter

1. Follow the [Getting-started](../getting-started/installation.md) guide to install ChaosCenter

2. Access the ChaosCenter Dashboard

![chaoscenter-dashboard](../assets/tutorials/podtato-head/chaoscenter-dashboard.png)

## Set up Environment

1. Add a new environment
- Environment Name: `local`
- Environment Type: `Production`

![local-environment](../assets/tutorials/podtato-head/local-environment.png)

## Enable Chaos Infrastructure

1. Configure a new chaos infrastructure
- Name: `local`
- Chaos Components Installation: `Cluster-wide access`
- Installation Location (Namespace): `litmus`
- Service Account Name: `litmus`

2. Deploy the new chaos infrastructure

```bash
kubectl apply -f local-litmus-chaos-enable.yml
```

3. Wait until the status changes to `CONNECTED`.

![connected](../assets/tutorials/podtato-head/connected.png)

## Set up Resilience Probe

1. Select **CMD Probe** as the probe type

2. Configure the probe properties and details
- Name: `check-podtato-head-hat-pod`
- Timeout: `10s`
- Interval: `1s`
- Attempt: `1`
- Command: `kubectl get pods -n podtato-kubectl | grep podtato-head-hat | grep Running | wc -l`
- Type: `Int`
- Comparison Criteria: `>`
- Value: `0`

![setup-probe](../assets/tutorials/podtato-head/setup-probe.png)

## Run Chaos Experiment

1. Start a new chaos experiment
- Name: `podtato-head`
- Chaos Infrastructure: `local`
- Builder Type: `Blank Canvas`

![start-chaos-experiment](../assets/tutorials/podtato-head/start-chaos-experiment.png)

2. Add the `pod-delete` chaos fault

![add-pod-delete](../assets/tutorials/podtato-head/add-pod-delete.png)

3. Select the target application for the `pod-delete` chaos fault
- App Kind: `deployment`
- App Namespace: `podtato-kubectl`
- App Label: `app=podtato-head-hat`

![select-target-application](../assets/tutorials/podtato-head/select-target-application.png)

4. Add the probe to the `pod-delete` chaos fault
- Probe Name: `check-podtato-head-hat-pod`
- Mode: `EOT`

![add-probe](../assets/tutorials/podtato-head/add-probe.png)

5. Save and run the chaos experiment

## Conclusion

- Experiment Status: `COMPLETED`
- Resilience Score: `100%`
- Probe Result: `PASSED`

![experiment-result](../assets/tutorials/podtato-head/experiment-result.png)

---

Congratulations! 🎉 You've successfully completed the tutorial.
Continue exploring more tutorials to enjoy your journey with LitmusChaos! 🚀
6 changes: 6 additions & 0 deletions website/versioned_sidebars/version-3.12.0-sidebars.json
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,12 @@
"integrations/backstage"
]
},
{
"Tutorials": [
"tutorials/overview",
"tutorials/podtato-head"
]
},
"troubleshooting",
"best-practices",
"glossary",
Expand Down

0 comments on commit 5cdca74

Please sign in to comment.