Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add "Tutorials" sidebar and create new podtato-head tutorial #302

Merged
merged 8 commits into from
Jan 13, 2025
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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.
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: 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

## Check Chaos Experiment Results

- 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/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.
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: 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

## Check Chaos Experiment Results

- 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! 🚀
5 changes: 5 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,11 @@
"integrations/backstage"
]
},
{
"Tutorials": [
"tutorials/podtato-head"
]
},
"troubleshooting",
"best-practices",
"glossary",
Expand Down
Loading