<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Sanjay Nathani</title>
    <description>The latest articles on Forem by Sanjay Nathani (@sanjay1611).</description>
    <link>https://forem.com/sanjay1611</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F441798%2F3e33e6b6-c49e-4a39-82a6-65ad003187ee.png</url>
      <title>Forem: Sanjay Nathani</title>
      <link>https://forem.com/sanjay1611</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sanjay1611"/>
    <language>en</language>
    <item>
      <title>Scheduling Chaos: An introduction to the Litmus Chaos Scheduler</title>
      <dc:creator>Sanjay Nathani</dc:creator>
      <pubDate>Fri, 31 Jul 2020 05:45:16 +0000</pubDate>
      <link>https://forem.com/sanjay1611/scheduling-chaos-an-introduction-to-the-litmus-chaos-scheduler-4ca0</link>
      <guid>https://forem.com/sanjay1611/scheduling-chaos-an-introduction-to-the-litmus-chaos-scheduler-4ca0</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Hey all! I am Sanjay Nathani, one of the Contributors to the LitmusChaos Project &amp;amp; a Software Engineer at MayaData. By now, I assume that you are already familiar with the concept of &lt;a href="https://dev.to/umamukkara/chaos-engineering-for-cloud-native-systems-2fjn"&gt;cloud-native chaos engineering&lt;/a&gt; and how the litmuschaos project enables you to achieve it &lt;a href="https://dev.to/uditgaurav/get-started-with-litmuschaos-in-minutes-4ke1"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;As members of the larger chaos engineering community, one of the observations we made while examining the use-cases of different adopters was that chaos needs to be made available as a background service. While random injections via manual execution of the experiments in pre-prod/production (read gamedays) and CI-driven execution on dev environments is still the norm in many cases, there are a lot of organizations adopting a continuous-chaos strategy as part of a shift-left paradigm, in which staging clusters (or equivalent environments that mimic prod characteristics and traffic) are subject to service and infrastructure faults repeatedly in a periodic or random fashion. The goal, in most of these cases, is to observe the resilience of the microservices at various times/operational states. It is common knowledge that the load on the microservices in a cluster varies over the course of its existence - there are peak traffic periods - which may last for few hours in a day or few days in a month, etc., and it is necessary to compare how the KPIs (key performance indicators) fare at different periods upon failures.&lt;/p&gt;

&lt;p&gt;Based on this, we decided to create the chaos-scheduler to inject chaos repeatedly, while providing a flexible schema for developers and SREs by which they can automate chaos runs while being able to define minimum intervals between two instances of chaos or specify the total number of chaos instances across a time range, etc., &lt;/p&gt;

&lt;h2&gt;
  
  
  What is Chaos Scheduler?
&lt;/h2&gt;

&lt;p&gt;The Chaos Scheduler is a Kubernetes controller (built using the Operator-SDK framework)  that reconciles a custom resource called ChaosSchedule, which, essentially, is a higher-level abstraction that embeds within itself the (now-familiar) ChaosEngine template along with a schedule specification. While still an alpha component today, the Chaos Scheduler is seeing adoption already and is poised towards becoming an optional component in the Litmus deployment bundle (helm chart). &lt;/p&gt;

&lt;p&gt;In this blog, let’s take a closer look at the scheduling options provided by the chaos scheduler and how you can give it a spin in your cluster. &lt;/p&gt;

&lt;h2&gt;
  
  
  Dissecting the ChaosSchedule Custom Resource
&lt;/h2&gt;

&lt;p&gt;The ChaosSchedule is the core schema that defines the chaos workflow for a given Application Under Test (AUT) or Node Under Test (NUT). It defines the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Execution Schedule for the experiments&lt;/li&gt;
&lt;li&gt;Template Spec of ChaosEngine detailing the chaos action &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;As mentioned earlier, one of the goals with the Chaos Scheduler was to provide a flexible and rich set of configuration options, for, there is already the standard Kubernetes Cron Job if the requirement is only about repeating the chaos action. As of today, there are 3 ways in which we can schedule the chaos to be injected: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Now: This will trigger the chaos as soon as the ChaosSchedule CR is created and is similar to the on-demand execution model available today.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: litmuschaos.io/v1alpha1
kind: ChaosSchedule
metadata:
  name: schedule-nginx
spec:
  schedule:
    now: true
  engineTemplateSpec:
    appinfo:
      appns: 'default'
      applabel: 'app=nginx'
      appkind: 'deployment'
    # It can be true/false
    annotationCheck: 'true'
    #ex. values: ns1:name=percona,ns2:run=nginx
    auxiliaryAppInfo: ''
    chaosServiceAccount: pod-delete-sa
    monitoring: false
    # It can be delete/retain
    jobCleanUpPolicy: 'delete'
    experiments:
      - name: pod-delete
        spec:
          components:
            env:
              # set chaos duration (in sec) as desired
              - name: TOTAL_CHAOS_DURATION
                value: '30'

              # set chaos interval (in sec) as desired
              - name: CHAOS_INTERVAL
                value: '10'

              # pod failures without '--force' &amp;amp; default terminationGracePeriodSeconds
              - name: FORCE
                value: 'false'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Once: This will schedule the chaos at a specific time denoted by &lt;code&gt;executionTime&lt;/code&gt;.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: litmuschaos.io/v1alpha1
kind: ChaosSchedule
metadata:
  name: schedule-nginx
spec:
  schedule:
    once:
      executionTime: "2020-05-12T05:47:00Z"   #should be modified according to current UTC Time
  engineTemplateSpec:
    appinfo:
      appns: 'default'
      applabel: 'app=nginx'
      appkind: 'deployment'
    # It can be true/false
    annotationCheck: 'true'
    #ex. values: ns1:name=percona,ns2:run=nginx
    auxiliaryAppInfo: ''
    chaosServiceAccount: pod-delete-sa
    monitoring: false
    # It can be delete/retain
    jobCleanUpPolicy: 'delete'
    experiments:
      - name: pod-delete
        spec:
          components:
            env:
              # set chaos duration (in sec) as desired
              - name: TOTAL_CHAOS_DURATION
                value: '30'

              # set chaos interval (in sec) as desired
              - name: CHAOS_INTERVAL
                value: '10'

              # pod failures without '--force' &amp;amp; default terminationGracePeriodSeconds
              - name: FORCE
                value: 'false'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Repeat: This type of schedule will ensure the repeated execution of chaos over a time range. We define the &lt;code&gt;startTime&lt;/code&gt; &amp;amp;  &lt;code&gt;endTime&lt;/code&gt; with a &lt;code&gt;minChaosInterval&lt;/code&gt; specified to ensure a mandatory cool-off period to observe adherence to MTTR (Mean-Time-To-Recover). This option also allows whitelisting/blacklisting days of a week for chaos. 
Here is a sample of how to inject the chaos in this way.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: litmuschaos.io/v1alpha1
kind: ChaosSchedule
metadata:
  name: schedule-nginx
spec:
  schedule:
    repeat:
      startTime: "2020-05-12T05:47:00Z"   #should be modified according to current UTC Time
      endTime: "2020-05-12T05:52:00Z"   #should be modified according to current UTC Time
      minChaosInterval: "2m"   #format should be like "10m" or "2h" accordingly for minutes and   hours
      instanceCount: "2"
      includedDays: "mon,tue,wed"
  engineTemplateSpec:
    appinfo:
      appns: 'default'
      applabel: 'app=nginx'
      appkind: 'deployment'
    # It can be true/false
    annotationCheck: 'true'
    #ex. values: ns1:name=percona,ns2:run=nginx
    auxiliaryAppInfo: ''
    chaosServiceAccount: pod-delete-sa
    monitoring: false
    # It can be delete/retain
    jobCleanUpPolicy: 'delete'
    experiments:
      - name: pod-delete
        spec:
          components:
            env:
              # set chaos duration (in sec) as desired
              - name: TOTAL_CHAOS_DURATION
                value: '30'

              # set chaos interval (in sec) as desired
              - name: CHAOS_INTERVAL
                value: '10'

              # pod failures without '--force' &amp;amp; default terminationGracePeriodSeconds
              - name: FORCE
                value: 'false'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Needless to say, the ChaosSchedule is referenced as the owner of the secondary resources (chaosengine) with Kubernetes DeletePropagation policies ensuring their removal too upon deletion of the ChaosSchedule CR.&lt;/p&gt;

&lt;p&gt;In the subsequent section, let us view the steps involved in setting up a demo environment to try out the Chaos Scheduler. &lt;/p&gt;
&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;In this section, let us view the steps involved in setting up a demo environment to try out the Chaos Scheduler. &lt;/p&gt;
&lt;h3&gt;
  
  
  Install Litmus Chaos Operator, RBAC and CRDs
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f https://litmuschaos.github.io/pages/litmus-operator-latest.yaml

namespace/litmus created
serviceaccount/litmus created
clusterrole.rbac.authorization.k8s.io/litmus created
clusterrolebinding.rbac.authorization.k8s.io/litmus created
deployment.apps/chaos-operator-ce 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

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Install Chaos Scheduler and it's CRDs
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f https://raw.githubusercontent.com/litmuschaos/chaos-scheduler/master/deploy/crds/chaosschedule_crd.yaml

customresourcedefinition.apiextensions.k8s.io/chaosschedules.litmuschaos.io created
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f https://raw.githubusercontent.com/litmuschaos/chaos-scheduler/master/deploy/chaos-scheduler.yaml

deployment.apps/chaos-scheduler created
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Create the pod delete Chaos Experiment in default namespace
&lt;/h3&gt;

&lt;p&gt;NOTE: In this example, I intend to inject chaos on a single replica Nginx deployment running in the default namespace. Modify according to your environment.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f https://raw.githubusercontent.com/litmuschaos/chaos-charts/1.4.0/charts/generic/pod-delete/experiment.yaml

chaosexperiment.litmuschaos.io/pod-delete created
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Setup the RBAC for execute the pod-delete chaos
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f https://raw.githubusercontent.com/litmuschaos/chaos-charts/1.4.0/charts/generic/pod-delete/rbac.yaml

serviceaccount/pod-delete-sa created
role.rbac.authorization.k8s.io/pod-delete-sa created
rolebinding.rbac.authorization.k8s.io/pod-delete-sa created
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Annotate your application to enable chaos
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl annotate deploy/nginx-deployment litmuschaos.io/chaos="true"

deployment.extensions/nginx-deployment annotated
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Before proceeding let's see whether all the things are up and running successfully or not.
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Chaos Scheduler and Chaos Operator should be running perfectly
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   kubectl get po -n litmus

   chaos-operator-ce-5cd5894879-k7wgz   1/1     Running   0          
   10m
   chaos-scheduler-84fcccb5bd-mjpnj     1/1     Running   0          
   10m
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Ensure the Service Accounts for scheduler and operator are created
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   kubectl get sa -n litmus

   default     1         10m
   litmus      1         10m
   scheduler   1         10m
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Ensure the service account for the intended experiment is created successfully
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   kubectl get sa

   default         1         10m
   pod-delete-sa   1         10m
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Now we can safely move further&lt;/p&gt;
&lt;h3&gt;
  
  
  Create a ChaosSchedule yaml with the application and experiment information along with the scheduling logic
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apiVersion: litmuschaos.io/v1alpha1
kind: ChaosSchedule
metadata:
name: schedule-nginx
namespace: litmus
spec:
    schedule:
        repeat:
startTime: "2020-05-12T05:47:00Z"   #should be modified according to current UTC Time
 endTime: "2020-05-12T05:52:00Z"   #should be modified according to current UTC Time
 minChaosInterval: "2m"   #format should be like "10m" or "2h" accordingly for minutes   and   hours
 instanceCount: "2"
 includedDays: "mon,tue,wed"
engineTemplateSpec:
  appinfo:
    appns: 'default'
    applabel: 'app=nginx'
    appkind: 'deployment'
  # It can be true/false
  annotationCheck: 'true'
  #ex. values: ns1:name=percona,ns2:run=nginx
  auxiliaryAppInfo: ''
  chaosServiceAccount: pod-delete-sa
  monitoring: false
  # It can be delete/retain
  jobCleanUpPolicy: 'delete'
  experiments:
    - name: pod-delete
      spec:
        components:
          env:
            # set chaos duration (in sec) as desired
            - name: TOTAL_CHAOS_DURATION
              value: '30'

            # set chaos interval (in sec) as desired
            - name: CHAOS_INTERVAL
              value: '10'

            # pod failures without '--force' &amp;amp; default terminationGracePeriodSeconds
            - name: FORCE
              value: 'false'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Create a ChaosSchedule custom resource
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f chaos-schedule.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Watch the injection of chaos at any point of time
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;watch kubectl get pod 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Describe the ChaosSchedule for the details of chaos injection.
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl describe chaosschedule schedule-nginx

Name:         schedule-nginx
Namespace:    default
Labels:       &amp;lt;none&amp;gt;
Annotations:  API Version:  litmuschaos.io/v1alpha1
Kind:         ChaosSchedule
Metadata:
  Creation Timestamp:  2020-05-14T08:44:32Z
  Generation:          3
  Resource Version:    899464
  Self Link:           /apis/litmuschaos.io/v1alpha1/namespaces/default/chaosschedules/  schedule-nginx
  UID:                 347fb7e6-2c9d-428e-9ce1-42bdcfdab37d
Spec:
  Chaos Service Account:  
  Engine Template Spec:
    Appinfo:
      Appkind:              deployment
      Applabel:             app=nginx
      Appns:                default
    Chaos Service Account:  litmus
    Components:
      Runner:
    Experiments:
      Name:  pod-delete
      Spec:
        Components:
        Rank:             0
    Job Clean Up Policy:  retain
  Schedule:
    Repeat:
      End Time:            2020-05-12T05:52:00Z
      Included Days:       Mon,Tue,Wed
      Instance Count:      2
      Min Chaos Interval:  2m
      Start Time:          2020-05-12T05:47:00Z
  Schedule State:        active
Status:
  Active:
    API Version:       litmuschaos.io/v1alpha1
    Kind:              ChaosEngine
    Name:              schedule-nginx
    Namespace:         default
    Resource Version:  899463
    UID:               14f49857-8879-4129-a5b9-a3a592149725
  Last Schedule Time:  2020-05-14T08:44:32Z
  Schedule:
    Start Time:              2020-05-14T08:44:32Z
    Status:                  running
    Total Instances:         1
Events:
  Type    Reason            Age   From             Message
  ----    ------            ----  ----             -------
  Normal  SuccessfulCreate  39s   chaos-scheduler  Created engine schedule-nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Halting ChaosSchedule
&lt;/h2&gt;

&lt;p&gt;At any point of time we can halt a chaosschedule which simply means stopping the further execution of chaos. Here is the way to halt the chaosschedule.&lt;br&gt;
Power of halting a schedule comes into action when we do not want to disturb the production cluster or an application at some point of time because of some important activity(migration) going on. We can halt the schedule without putting in the efforts of deleting and recreating the schedule.&lt;/p&gt;

&lt;p&gt;Change the &lt;code&gt;spec.ScheduleState&lt;/code&gt; to &lt;code&gt;halt&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;spec:
    scheduleState: halt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;With the Chaos Scheduler the user is not burdened with trying to re-apply chaosengine manifests or remember to do chaos at different times by himself/herself and instead only has to compare execution results! As you read this, the Chaos Scheduler is being improved to support randomized execution within a time range. So, more power coming your way!! Do try out the steps and let us know what you feel about the scheduler and what use-cases it must support! &lt;/p&gt;

&lt;p&gt;Are you an SRE or a Kubernetes enthusiast? Does Chaos Engineering excite you? Join Our Community #litmus channel in &lt;a href="https://kubernetes.slack.com/messages/CNXNB0ZTN" rel="noopener noreferrer"&gt;Kubernetes Slack&lt;/a&gt;&lt;br&gt;
Contribute to LitmusChaos and share your feedback on &lt;a href="https://github.com/litmuschaos/litmus" rel="noopener noreferrer"&gt;Github&lt;/a&gt;&lt;br&gt;
If you like LitmusChaos, become one of the many stargazers &lt;a href="https://github.com/litmuschaos/litmus/stargazers" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/litmuschaos" rel="noopener noreferrer"&gt;
        litmuschaos
      &lt;/a&gt; / &lt;a href="https://github.com/litmuschaos/litmus" rel="noopener noreferrer"&gt;
        litmus
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Litmus helps  SREs and developers practice chaos engineering in a Cloud-native way. Chaos experiments are published at the ChaosHub  (https://hub.litmuschaos.io). Community notes is at https://hackmd.io/a4Zu_sH4TZGeih-xCimi3Q
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://avatars.githubusercontent.com/u/49853472?s=200&amp;amp;v=4"&gt;&lt;img alt="LitmusChaos" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Favatars.githubusercontent.com%2Fu%2F49853472%3Fs%3D200%26v%3D4" width="200"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;&lt;a href="https://litmuschaos.io/" rel="nofollow noopener noreferrer"&gt;LitmusChaos&lt;/a&gt;&lt;/h1&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Open Source Chaos Engineering Platform&lt;/h3&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="https://slack.litmuschaos.io" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/48844a2a28b222b400e3fbeb358770903bdcb4db693ac67fae37db71869352f6/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f536c61636b2d4a6f696e2d707572706c65" alt="Slack Channel"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/litmuschaos/litmus/actions/workflows/push.yml/badge.svg?branch=master"&gt;&lt;img src="https://github.com/litmuschaos/litmus/actions/workflows/push.yml/badge.svg?branch=master" alt="GitHub Workflow"&gt;&lt;/a&gt;
&lt;a href="https://hub.docker.com/r/litmuschaos/chaos-operator" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/2a2ae2b0d21ae55811e5da33f40b76a4aa18cd37d027ab13c5f3a4b6230ef55b/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f70756c6c732f6c69746d75736368616f732f6368616f732d6f70657261746f722e737667" alt="Docker Pulls"&gt;&lt;/a&gt;
&lt;a href="https://github.com/litmuschaos/litmus/stargazers" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/e87b930f5b0b40039776ad0d255d62735311c7d7228bb7615d7408161915c0b2/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f6c69746d75736368616f732f6c69746d75733f7374796c653d736f6369616c" alt="GitHub stars"&gt;&lt;/a&gt;
&lt;a href="https://github.com/litmuschaos/litmus/issues" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/2f66885a8b6af96fe90f93b8aa9085f6065fb43e9c0a4a602219a01e7a142548/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f6c69746d75736368616f732f6c69746d7573" alt="GitHub issues"&gt;&lt;/a&gt;
&lt;a href="https://twitter.com/LitmusChaos" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/6425eb889e05cdadcf0db2a952db7e9dda44ca3df091c5ca9feea8515a2ac44f/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f6c69746d75736368616f733f7374796c653d736f6369616c" alt="Twitter Follow"&gt;&lt;/a&gt;
&lt;a href="https://www.bestpractices.dev/projects/3202" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/a8d5ed826be562a3339ce503c6ff3f4ab2cc63227b18ba5f65648fdb3ca04eec/68747470733a2f2f7777772e626573747072616374696365732e6465762f70726f6a656374732f333230322f6261646765" alt="OpenSSF Best Practices"&gt;&lt;/a&gt;
&lt;a href="https://app.fossa.io/projects/git%2Bgithub.com%2Flitmuschaos%2Flitmus?ref=badge_shield" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/848851b5714a120bc84e06ebdb121f455a4a472a782a90d6f4efb681fa9be392/68747470733a2f2f6170702e666f7373612e696f2f6170692f70726f6a656374732f6769742532426769746875622e636f6d2532466c69746d75736368616f732532466c69746d75732e7376673f747970653d736869656c64" alt="FOSSA Status"&gt;&lt;/a&gt;
&lt;a href="https://www.youtube.com/channel/UCa57PMqmz_j0wnteRa9nCaw" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/8420bd8ea7dfc02f130445cdcf5f3adec631ea57f9682afc56af5940cc5ca044/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f596f75547562652d5375627363726962652d726564" alt="YouTube Channel"&gt;&lt;/a&gt;
&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;&lt;em&gt;Read this in &lt;a href="https://github.com/litmuschaos/litmustranslations/TRANSLATIONS.md" rel="noopener noreferrer"&gt;other languages&lt;/a&gt;.&lt;/em&gt;&lt;/h4&gt;
&lt;/div&gt;

&lt;p&gt;&lt;a href="https://github.com/litmuschaos/litmustranslations/README-ko.md" rel="noopener noreferrer"&gt;🇰🇷&lt;/a&gt; &lt;a href="https://github.com/litmuschaos/litmustranslations/README-chn.md" rel="noopener noreferrer"&gt;🇨🇳&lt;/a&gt; &lt;a href="https://github.com/litmuschaos/litmustranslations/README-pt-br.md" rel="noopener noreferrer"&gt;🇧🇷&lt;/a&gt; &lt;a href="https://github.com/litmuschaos/litmustranslations/README-hi.md" rel="noopener noreferrer"&gt;🇮🇳&lt;/a&gt;&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Overview&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;LitmusChaos is an open source Chaos Engineering platform that enables teams to identify weaknesses &amp;amp; potential outages in infrastructures by
inducing chaos tests in a controlled way. Developers &amp;amp; SREs can practice Chaos Engineering with LitmusChaos as it is easy to use, based on modern
Chaos Engineering principles &amp;amp; community collaborated. It is 100% open source &amp;amp; a CNCF project.&lt;/p&gt;

&lt;p&gt;LitmusChaos takes a cloud-native approach to create, manage and monitor chaos. The platform itself runs as a set of microservices and uses Kubernetes
custom resources (CRs) to define the chaos intent, as well as the steady state hypothesis.&lt;/p&gt;

&lt;p&gt;At a high-level, Litmus comprises of:&lt;/p&gt;


&lt;ul&gt;

&lt;li&gt;

&lt;strong&gt;Chaos Control Plane&lt;/strong&gt;: A centralized chaos management tool called chaos-center, which helps construct, schedule and visualize Litmus chaos workflows&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Chaos Execution Plane Services&lt;/strong&gt;: Made up of a…&lt;/li&gt;

&lt;/ul&gt;
&lt;/div&gt;
&lt;br&gt;
  &lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/litmuschaos/litmus" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;
 

</description>
      <category>kubernetes</category>
      <category>litmuschaos</category>
      <category>chaosengineering</category>
      <category>docker</category>
    </item>
  </channel>
</rss>
