<?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>DEV Community: Karthik Satchitanand</title>
    <description>The latest articles on DEV Community by Karthik Satchitanand (@ksatchit).</description>
    <link>https://dev.to/ksatchit</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%2F405355%2Fd8cd976f-14a5-4a9a-94e2-4d1ec0d3f8a0.jpeg</url>
      <title>DEV Community: Karthik Satchitanand</title>
      <link>https://dev.to/ksatchit</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ksatchit"/>
    <language>en</language>
    <item>
      <title>Chaos Engineering With Harness CI/CD Pipelines</title>
      <dc:creator>Karthik Satchitanand</dc:creator>
      <pubDate>Fri, 06 May 2022 14:57:02 +0000</pubDate>
      <link>https://dev.to/litmus-chaos/chaos-engineering-with-harness-cicd-pipelines-1dn0</link>
      <guid>https://dev.to/litmus-chaos/chaos-engineering-with-harness-cicd-pipelines-1dn0</guid>
      <description>&lt;h1&gt;
  
  
  Left-Shift Of Chaos Engineering
&lt;/h1&gt;

&lt;p&gt;The emergence of the cloud-native paradigm and an ever-increasing adoption of Kubernetes has brought with it the challenges of re-architecting applications: to be distributed, loosely coupled, and containerized (read: &lt;a href="https://en.wikipedia.org/wiki/Microservices" rel="noopener noreferrer"&gt;microservices&lt;/a&gt;). It has also brought in new ways of dealing with “operational” aspects such as deployments and upgrades, storage provisioning (in case of stateful components), maintaining high availability, scaling, recovery, etc., Kubernetes, as the overarching orchestration system provides multiple choices and approaches for implementing these. However, this brings in significant complexity. &lt;/p&gt;

&lt;p&gt;Organizations migrating to Kubernetes typically face the need to test different kinds of failure scenarios and learn about their systems and processes deeply, through repeated experimentation - to build confidence before they hit production. This has contributed to a “shift-left” approach in chaos engineering, with increased usage of chaos within CI/CD pipelines. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjkavrq8lmgy37sfsljh9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjkavrq8lmgy37sfsljh9.png" alt=" " width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  LitmusChaos Improves Support For CI/CD
&lt;/h1&gt;

&lt;p&gt;The litmus community has seen a significant upsurge in the usage of chaos experiments within pipelines, in some cases even before the build/deployment artifacts are merged into the main source of truth (executed on transient PR environments) and in most cases as part of the continuous deployment process, wherein the build artifacts are pushed to a staging environment wherein they are subject to “sanity chaos”.  &lt;/p&gt;

&lt;p&gt;While the project did provide some initial (limited) support and presented use cases around this area as part of its 1.x releases viz. Gitlab templates &amp;amp; Github chaos actions, there was still a pending need to support fully featured chaos scenarios which allows all experiment tunables along with hypothesis validation using Litmus probes in CI/CD pipelines. In other words,  support for the execution of workflows that can be managed and viewed from the Chaos-Center. &lt;/p&gt;

&lt;p&gt;Recent versions of Litmus (v2.8.0+) provides a set of refactored/standardized APIs to trigger workflows from a pipeline, while also allowing the visualization and management of chaos workflows launched with specific metadata (&lt;code&gt;cluster_id&lt;/code&gt; &amp;amp; &lt;code&gt;controller-instanceid&lt;/code&gt; labels) in the Chaos-Center. &lt;/p&gt;

&lt;p&gt;In this post, let's take a quick peek at an example of chaos being executed from a Harness CI/CD pipeline. &lt;/p&gt;

&lt;h1&gt;
  
  
  Harness CI/CD
&lt;/h1&gt;

&lt;p&gt;Harness Continuous Delivery as a Service platform provides a simple and secure way for engineering and DevOps teams to release applications faster, safer, and more secure. Harness automates the entire CI/CD process, which helps build, test, and deploy improved features more quickly. It uses machine learning to detect the quality of deployments and automatically roll back failed ones, saving time, and reducing customer scripting and manual oversight. It provides enterprise-grade security at every step throughout the CI/CD pipeline. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9x2s8gtn4hv5cw1l623r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9x2s8gtn4hv5cw1l623r.png" alt=" " width="800" height="362"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is a quick reference to how you can set up a &lt;a href="https://ngdocs.harness.io/article/x0d77ktjw8-ci-pipeline-quickstart" rel="noopener noreferrer"&gt;build&lt;/a&gt; and &lt;a href="https://ngdocs.harness.io/article/knunou9j30-kubernetes-cd-quickstart" rel="noopener noreferrer"&gt;deploy&lt;/a&gt; pipeline using Harness. &lt;/p&gt;

&lt;p&gt;As explained in detail in the aforementioned reference, Harness carries out the build and deploy steps via jobs executed through a Delegate - a service you run in your VPC. It speaks to the Harness manager, the main control plane managing the individual pipeline instances. You could use the Harness SaaS platform or its on-premise installation to implement the pipelines. &lt;/p&gt;

&lt;h1&gt;
  
  
  Chaos Experiments In Harness Pipelines
&lt;/h1&gt;

&lt;p&gt;Chaos within a Harness pipeline can be added as a dedicated stage post the deployment stage, with the results of the chaos experiment determining the success of your pipeline with an appropriately defined custom failure strategy:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F74m1qk0xpwa98ivwz2z7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F74m1qk0xpwa98ivwz2z7.png" alt=" " width="711" height="615"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcx8b8eboo8kfnfsiip3o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcx8b8eboo8kfnfsiip3o.png" alt=" " width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;or as a step within the deployment stage itself, with the ability to rollback deployment in case a chaos run against it is not found to provide desired results. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwj0q9houhy1n2bhkkqq6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwj0q9houhy1n2bhkkqq6.png" alt=" " width="800" height="494"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwv5wvz9i644ac80e72zt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwv5wvz9i644ac80e72zt.png" alt=" " width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Within the chaos steps defined in the above pipelines, one could invoke the &lt;a href="https://litmuschaos.github.io/litmus/graphql/v2.9.0/api.html" rel="noopener noreferrer"&gt;Litmus API&lt;/a&gt; to trigger a chaos workflow that is configured with the right fault (experiment) &amp;amp; validation (probes) combinations, apart from desired runtime properties (duration, node selectors, tolerations, resources, etc.,). The prerequisite is to have the authentication tokens extracted prior to the construction of the API invocation in the pipeline. &lt;/p&gt;

&lt;p&gt;Such a chaos workflow template can either be hand-crafted and used as a payload within the API call,  or, still simpler, be pre-constructed on the Chaos-Center so that it can be re-triggered from the pipeline using the &lt;code&gt;workflow_id&lt;/code&gt; reference. &lt;br&gt;
An alternative mechanism is to perform a kubectl apply operation of the workflow manifest downloaded after its creation from the Chaos-Center (this model is intended to support those users who prefer having a golden copy of the chaos scenario definition alongside the deployment artifacts). The status and success of such workflow executions can be tracked via kubectl commands or via litmus API. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9g8olnyrfnp1oomtjh9t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9g8olnyrfnp1oomtjh9t.png" alt=" " width="800" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;While chaos experimentation as part of SRE-driven gamedays will continue to exist as the chaos engineering practice continues to get adopted by more organizations, its consumption is set to increase manifold in the developer community on account of its inclusion in the CI/CD pipelines, what with the culture of developers owning build-to-deploy for their code changes. &lt;/p&gt;

&lt;p&gt;Through this post, we have shown an example of how popular CI/CD platforms like Harness are embracing the concept of chaos experimentation and bringing it into the ambit of the pipeline world. You can see the explanation in action in this demo by &lt;a href="https://twitter.com/neelanjanmanna" rel="noopener noreferrer"&gt;Neelanjan&lt;/a&gt;, provided during the &lt;a href="https://youtu.be/NbI_UuENZYU?t=4520" rel="noopener noreferrer"&gt;Cloud Native Scale meetup&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>ChaosNative Joins Harness!</title>
      <dc:creator>Karthik Satchitanand</dc:creator>
      <pubDate>Tue, 22 Mar 2022 13:03:28 +0000</pubDate>
      <link>https://dev.to/ksatchit/chaosnative-joins-harness-1efh</link>
      <guid>https://dev.to/ksatchit/chaosnative-joins-harness-1efh</guid>
      <description>&lt;p&gt;Today, we are thrilled to announce to the LitmusChaos community that ChaosNative, the primary sponsor of the LitmusChaos project, is joining &lt;a href="https://harness.io/"&gt;Harness&lt;/a&gt; to extend scalable chaos engineering to enterprises.&lt;/p&gt;

&lt;p&gt;LitmusChaos was born out of a need to improve resiliency and build confidence in cloud-native services in production. What started out as an effort to provide out-of-the-box chaos experiments for Kubernetes-based microservices, eventually grew into an end-to-end framework to carry out chaos engineering on a wide variety of application and infrastructure targets, with support for multi-tenancy, SLO validation, and custom workflows, amongst other features. In the last 4 years since the project started, Litmus saw a continuous growth of community involvement in usage, code contributions, and feedback. Achieving the CNCF incubating status is a testament to Litmus’ maturity in adoption, and it is now at a stage where there is a massive opportunity to explore and identify new use cases for chaos engineering in cloud-native DevOps. &lt;/p&gt;

&lt;p&gt;All along, we believed that there is a lot to be done to make chaos engineering commonplace in DevOps. We kept saying - It is not just for Ops. Litmus has seen tremendous growth in the past year mainly in its use in CI/CD pipelines. The sentiment of shift-left has received significant validation within the community, with several related use cases involving Litmus being presented in conferences such as KubeCon, CDCon &amp;amp; Chaos Carnival! We believe that by joining hands with the Harness team - who bring in deep expertise and a rich understanding of the CI/CD domain, we shall take this movement forward with increased focus and help developers identify issues much quicker and earlier in the delivery cycle. By being part of Harness, our efforts to take chaos engineering to developers are going to be accelerated.   &lt;/p&gt;

&lt;p&gt;Having said that, we are ever-more committed to improving the core, i.e., the chaos orchestration services, and fault library to support our existing users and cater to the SRE community. We expect to contribute many new features to Litmus that aid SREs, including better support for disconnected or air-gapped environments, improved observability via events &amp;amp; audit logs, chaos user mapping with Kubernetes/platform service accounts, integration with secrets management platforms, hooks to incident response systems and guided gameday orchestration. &lt;/p&gt;

&lt;p&gt;As part of Harness, we will continue to help maintain the community-first values of Litmus, while delivering on important roadmap items around integrations, newer fault injections/experiments, and an improved chaos dashboard. &lt;/p&gt;

&lt;p&gt;The team will remain active advocates of cloud-native chaos engineering, with no changes to the monthly meetups, workshops, and participation in CNCF events. What is more, we are even working towards a certification around Litmus, as part of efforts to spread chaos engineering knowledge, so stay tuned! &lt;/p&gt;

&lt;p&gt;We are thankful to the LitmusChaos users, our early adopter customers at ChaosNative, CNCF, and the chaos engineering community at large for their support and Harness for giving us the opportunity to continue our mission together! &lt;/p&gt;

&lt;p&gt;(Uma Mukkara &amp;amp; Karthik Satchitanand: Co-creators and Maintainers of LitmusChaos &amp;amp; Co-Founders of ChaosNative)&lt;/p&gt;

</description>
      <category>litmuschaos</category>
      <category>devops</category>
      <category>kubernetes</category>
      <category>chaosengineering</category>
    </item>
    <item>
      <title>LitmusChaos in 2021: The Year In Review</title>
      <dc:creator>Karthik Satchitanand</dc:creator>
      <pubDate>Wed, 29 Dec 2021 04:10:08 +0000</pubDate>
      <link>https://dev.to/litmus-chaos/litmuschaos-in-2021-the-year-in-review-38cl</link>
      <guid>https://dev.to/litmus-chaos/litmuschaos-in-2021-the-year-in-review-38cl</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;Year-end retrospectives are an interesting topic. Much as it helps dwell on things accomplished, it also generates excitement (and nervous energy) about what is to come. In this short post (there is much to write individually on the topics referenced), I shall be making an attempt to encapsulate the progress LitmusChaos as a project &amp;amp; the litmus community as a whole made over the past year. Before we get there, my heartfelt &lt;strong&gt;thank you&lt;/strong&gt; to all our users &amp;amp; adopters, contributors, as well as CNCF for helping us along in our journey. Your feedback, involvement, and mentorship are what keep us going.  &lt;/p&gt;

&lt;p&gt;I have tried to bucket some of the important milestones we achieved, based on their nature, and, in the process paint an overall picture of the growth of the project. These wouldn’t have been possible without valid criticism and healthy debates from/with the community. &lt;/p&gt;

&lt;h1&gt;
  
  
  Features &amp;amp; Releases
&lt;/h1&gt;

&lt;h2&gt;
  
  
  LitmusChaos 2.0
&lt;/h2&gt;

&lt;p&gt;At the end of last year, we had begun to play with the idea of a “Litmus Portal”, essentially a dashboard that would help orchestrate chaos and simplify the learning curve in preparing chaos custom resources (CRs) for a given scenario. Over time, the scope of the portal went beyond this initial requirement to become a full-blown control plane that can: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Help create complex scenarios using workflows &lt;/li&gt;
&lt;li&gt;Manage chaos across target environments (other clusters, namespaces)&lt;/li&gt;
&lt;li&gt;Delegate chaos operations to teams &lt;/li&gt;
&lt;li&gt;Leverage dedicated chaos artifact sources (you could use git to load/commit workflows from/into the chaos center)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This precipitated a major release (2.0) in August, after remaining in beta for nearly 6 months, a phase during which we learned more about user expectations around such capabilities. The decision to bump up the version was taken after we observed a collective acceptance and alignment of the community towards the newer way of approaching chaos compared to what was in use until then. Having said that, 2.0 is built on the same core, with users free to directly consume the chaos operator as before. &lt;/p&gt;

&lt;h2&gt;
  
  
  Support for Containerd, CRI-O
&lt;/h2&gt;

&lt;p&gt;As the Kubernetes community moves on from docker as the container runtime, there was a growing need to support network, resource stress, and other experiments for other popular runtimes (growing usage of Litmus in OpenShift environments was another trigger). Today, Litmus natively supports choosing the desired runtime as an experiment tunable. &lt;/p&gt;

&lt;h2&gt;
  
  
  Better Blast Radius Control
&lt;/h2&gt;

&lt;p&gt;As chaos adoption grew last year, so did the use-cases and requirements around how to make fault injection ever so granular. Especially on Kubernetes. While randomized failures are at the core of the traditional chaos engineering practice, it now operates against a heavily filtered dataset. Litmus added support for the percentage-based selection of pods,  (satisfying the given namespace: workload label: node label constraints), nodes &amp;amp; cloud resources apart from the ability to pick out a chaos target by name. &lt;/p&gt;

&lt;h2&gt;
  
  
  Improved Hypothesis Validation via richer Probe Schema
&lt;/h2&gt;

&lt;p&gt;Automated chaos experiments becoming more mainstream resulted in several enhancement requests around the basic probe functionality Litmus provided in earlier versions. Newer capabilities &amp;amp; thereby a richer schema has been added to HTTP, command, K8s &amp;amp; Prometheus probes with more in the works. They are being used for performing custom validations within experiments, making the experiment verdicts more meaningful. &lt;/p&gt;

&lt;h2&gt;
  
  
  Non-Kubernetes Experiments
&lt;/h2&gt;

&lt;p&gt;Multiple organizations that adopted chaos engineering invariably had a mixed or hybrid environment, with services residing in different substrates - Kubernetes (self-hosted, managed/cloud), vanilla VMware VMs, or cloud instances, and in some cases bare-metal servers. When Litmus was picked by their teams (teams which are increasingly Kubernetes-native/aware) the ask from them was to enable the same platform and provide similar UX to perform chaos against non-Kubernetes targets to have a centralized view of chaos and resilience across different services. This resulted in an increased focus on experiments targeting VMs, disks on different cloud providers (VMware, Azure, GCP, AWS). This is an area that is a work in progress and should see more features/experiments come the new year. &lt;/p&gt;

&lt;h1&gt;
  
  
  Community
&lt;/h1&gt;

&lt;p&gt;At the heart of any open-source project is the community, and Litmus witnessed great community growth in 2021. We added 18 new adopters, across cloud-native end-users, vendors, solution providers, and other open-source projects too. The end-of-month Saturday meetups saw more interest/attendance, the slack channel grew to include nearly five times what it was around this time last year. Contributions (of all types, code, docs, tests, helm charts) started coming in bigger numbers - leading to four newer maintainers (including folks from the adopting organizations). We partnered with members from the user community to deliver KubeCon talks featuring Litmus in the &lt;a href="https://www.youtube.com/watch?v=_DgCc4-BLW8" rel="noopener noreferrer"&gt;KubeCon EU ‘21&lt;/a&gt; &amp;amp; &lt;a href="https://www.youtube.com/watch?v=fOgDZfZrFGg&amp;amp;t=1s" rel="noopener noreferrer"&gt;KubeCon NA’ 21&lt;/a&gt;. We were pleasantly surprised to view presentations about it from &lt;a href="https://youtu.be/btGFt5-37hs?t=738" rel="noopener noreferrer"&gt;other chaos advocates&lt;/a&gt; and see it featured in a &lt;a href="https://www.youtube.com/watch?v=KGbw2c40q9Q&amp;amp;list=PLj6h78yzYM2Nd1U4RMhv7v88fdiFqeYAP&amp;amp;t=823s" rel="noopener noreferrer"&gt;Keynote&lt;/a&gt; that discussed reliability! &lt;/p&gt;

&lt;p&gt;The year also saw the birth of a CNCF initiative to further the field of chaos engineering in a cloud-native environment: &lt;a href="https://github.com/cncf/chaosengineering-wg/" rel="noopener noreferrer"&gt;Chaos Engineering Working Group&lt;/a&gt;, of which litmus maintainers and community members are an important part. &lt;/p&gt;

&lt;h1&gt;
  
  
  Chaos Carnival
&lt;/h1&gt;

&lt;p&gt;As the community grew, we realized it was also an indicator of the increasing adoption of chaos as a practice. Reliability is no longer an afterthought and while Litmus is playing an important role in this area, it isn’t the only one. Also, we felt a necessity to tap into the community to bring about more facets of chaos engineering and resilience, especially around aspects such as culture, processes, and allied technical topics such as observability, security et al. We decided to bring people to a common forum to discuss these and thereby spread knowledge to equip newer entrants to chaos engineering &amp;amp; strengthen practitioners with more data points. Thus was born the &lt;a href="https://www.youtube.com/channel/UCDoH57pQWHU0MCm6Y5Y3LhA/playlists" rel="noopener noreferrer"&gt;Chaos Carnival&lt;/a&gt;. Organized majorly by members from the Litmus Community, with generous help from sponsors, the event brought together some of the best minds in the SRE, DevOps &amp;amp; Chaos Engineering space to share their expertise. &lt;/p&gt;

&lt;h1&gt;
  
  
  Looking Ahead: What 2022 Brings
&lt;/h1&gt;

&lt;p&gt;For starters, we are putting together the &lt;a href="https://chaoscarnival.io/" rel="noopener noreferrer"&gt;second edition&lt;/a&gt; of the chaos carnival with an awesome list of topics and speakers. We hope you will enjoy it! &lt;/p&gt;

&lt;p&gt;Coming back to the project, increased support for diverse non-Kubernetes targets, simplified integrations with observability &amp;amp; CI/CD platforms remain a priority, not to mention more chaos types within Kubernetes.  However, we also aim to place emphasis on security-related features (we got started last year by defining PSPs &amp;amp; Kyverno policies you could use with Litmus, apart from moving to more secure container images) that are an important enterprise need for adoption. Stay tuned to this space for more information on what these are!&lt;/p&gt;

&lt;p&gt;Finally, we are working towards moving further (beyond sandbox) along the ladder within the CNCF ecosystem and making the community more vibrant - so that the litmus user can experience a richer chaoslib, better chaos orchestration &amp;amp; integrations, higher quality, faster patches/enhancements, and better support.  &lt;/p&gt;

&lt;p&gt;Thanks for reading this article! &lt;/p&gt;

</description>
      <category>litmuschaos</category>
      <category>testing</category>
      <category>devops</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>LitmusChaos at Kubecon EU '21</title>
      <dc:creator>Karthik Satchitanand</dc:creator>
      <pubDate>Wed, 19 May 2021 15:48:27 +0000</pubDate>
      <link>https://dev.to/litmus-chaos/litmuschaos-at-kubecon-eu-21-5963</link>
      <guid>https://dev.to/litmus-chaos/litmuschaos-at-kubecon-eu-21-5963</guid>
      <description>&lt;p&gt;KubeCon is veritably a festival for the tech community nowadays, and this is a sentiment that I have expressed several times before, but cannot tire of repeating! The sheer diversity of content (organized into a neat set of tracks), the announcements &amp;amp; launches, predictions, and panel discussions, all add to the excitement. I even managed to get my young nephew interested in the Cloud Native world by ordering the Phippy &amp;amp; friends buildable set with my Speaker giveaway! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fowfs7o8h7yuzgrv9ikdb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fowfs7o8h7yuzgrv9ikdb.png" alt="Alt Text" width="361" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For us, as members of the LitmusChaos project &amp;amp; the broader cloud native chaos engineering community, this edition of Kubecon EU '21  turned out to be sweeter still.  &lt;/p&gt;

&lt;p&gt;The predictions made ahead of the event by Cheryl Hung, VP, Ecosystem at CNCF, where she noted the growing interest in chaos, set the ball rolling (and this came on the back of similar observations made by Liz Rice, the chair of CNCF’s Technical Oversight Committee (ToC) at the November 2020 Kubecon): &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn5ym4sj0ng3fpkxms86l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn5ym4sj0ng3fpkxms86l.png" alt="image" width="585" height="456"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;From inside CNCF I have a unique insight into cloud native tech, DevOps and ecosystem. Here’s what I see coming next!&lt;a href="https://t.co/KeqcQCC3E7" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://t.co/KeqcQCC3E7" rel="noopener noreferrer"&gt;https://t.co/KeqcQCC3E7&lt;/a&gt; &lt;a href="https://t.co/e7uoq0aXXz" rel="noopener noreferrer"&gt;pic.twitter.com/e7uoq0aXXz&lt;/a&gt;&lt;/p&gt;— Cheryl Hung (@oicheryl) &lt;a href="https://twitter.com/oicheryl/status/1374419739489886212?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;March 23, 2021&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;p&gt;This added to the organic interest that Litmus as a project has gathered in the CNCF community, and resulted in some wonderful responses to the various presentations/talks that it featured in. All this led to newer slack members, appreciative messages from those that grokked the project, more questions on what’s coming &amp;amp; roadmap, quick feedback from folks that tried it, and some cool issues and PRs in the process! &lt;/p&gt;

&lt;p&gt;In this blog post, let us do a quick round-up of the talks/sessions where Litmus “appeared”. Some of the perspectives expressed are instructive and definitely hold value for us at the project. I have also tried to capture all the buzz (via tweets, of course) around Litmus and provide links to the awesome presentations around the project.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Round-Up
&lt;/h1&gt;

&lt;p&gt;First up, was the whirlwind sandbox projects tour by Justin Cormack, CTO, Docker,  where he &lt;a href="https://youtu.be/XmMbzBuCuYw?t=462" rel="noopener noreferrer"&gt;introduced Litmus&lt;/a&gt; as a way to package &amp;amp; perform your own custom chaos experiments. The talk prompted some awesome cloud-native advocates &amp;amp; tech-gurus to recall some deep dives on the project that had been performed in recent times! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx2nyw1ifkqioxoqzjn2i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx2nyw1ifkqioxoqzjn2i.png" alt="image" width="596" height="579"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;This year we've been taking a deep dive into the CNCF Sandbox on our blog, and so far we've covered &lt;a href="https://twitter.com/kubevirt?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@kubevirt&lt;/a&gt;, &lt;a href="https://twitter.com/LitmusChaos?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@LitmusChaos&lt;/a&gt; and &lt;a href="https://twitter.com/telepresenceio?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@telepresenceio&lt;/a&gt;. But &lt;a href="https://twitter.com/justincormack?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@justincormack&lt;/a&gt; just blew us out of the water running through all 50 projects in 15min! &lt;a href="https://twitter.com/hashtag/KubeCon?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#KubeCon&lt;/a&gt;&lt;a href="https://t.co/qh9eVE4q3N" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://t.co/qh9eVE4q3N" rel="noopener noreferrer"&gt;https://t.co/qh9eVE4q3N&lt;/a&gt;&lt;/p&gt;— LiveWyer (@LiveWyerUK) &lt;a href="https://twitter.com/LiveWyerUK/status/1389891093605634051?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;May 5, 2021&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbsya2xo9tfausglwj4xe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbsya2xo9tfausglwj4xe.png" alt="image" width="578" height="247"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://twitter.com/LitmusChaos?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@LitmusChaos&lt;/a&gt; &lt;a href="https://t.co/U405GfALZZ" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://t.co/U405GfALZZ" rel="noopener noreferrer"&gt;https://t.co/U405GfALZZ&lt;/a&gt;&lt;/p&gt;— David McKay (&lt;a class="mentioned-user" href="https://dev.to/rawkode"&gt;@rawkode&lt;/a&gt;) &lt;a href="https://twitter.com/rawkode/status/1389873545497522176?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;May 5, 2021&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;p&gt;Our KubeCon talk, on &lt;a href="https://www.youtube.com/watch?v=_DgCc4-BLW8" rel="noopener noreferrer"&gt;Putting Chaos into Continuous Delivery to increase Application resilience&lt;/a&gt; along with the fantastic team at Keptn, was well attended with many questions on the philosophy of automated chaos. For those interested, there is more coming on the integration with Keptn, including some very cool use cases around auto-remediation!  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhv6nhb95njhy3c7p34vm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhv6nhb95njhy3c7p34vm.png" alt="image" width="594" height="466"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;Key takeaways from the talk! 😍&lt;br&gt;Glad to have &lt;a href="https://twitter.com/KitopiHQ?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@KitopiHQ&lt;/a&gt; as an adopter of both &lt;a href="https://twitter.com/keptnProject?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@keptnProject&lt;/a&gt; &amp;amp; &lt;a href="https://twitter.com/LitmusChaos?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@LitmusChaos&lt;/a&gt;.&lt;br&gt;&lt;br&gt;This establishes a process of continuously evaluating resiliency! &lt;a href="https://t.co/Rs8QvoKogk" rel="noopener noreferrer"&gt;pic.twitter.com/Rs8QvoKogk&lt;/a&gt;&lt;/p&gt;— LitmusChaos (Chaos Engineering for Kubernetes) (&lt;a class="mentioned-user" href="https://dev.to/litmuschaos"&gt;@litmuschaos&lt;/a&gt;) &lt;a href="https://twitter.com/LitmusChaos/status/1390245923633078275?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;May 6, 2021&lt;/a&gt;
&lt;/blockquote&gt;  

&lt;p&gt;Alois Reitbauer (&lt;a href="https://twitter.com/AloisReitbauer" rel="noopener noreferrer"&gt;https://twitter.com/AloisReitbauer&lt;/a&gt;), co-chair of the CNCF SIG-App Delivery, presented &lt;a href="https://youtu.be/74VpVe-pZx0?t=1481" rel="noopener noreferrer"&gt;some interesting findings in this space&lt;/a&gt;, with Chaos Engineering &amp;amp; Litmus getting special mention. He discussed some common experimentation trends, and how organizations are embracing a shift left approach with chaos. And what better than validation of these thoughts from the experts at Gitlab! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb26krhjk0q8o24iyhmt0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb26krhjk0q8o24iyhmt0.png" alt="image" width="591" height="456"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;Chaos Engineering. I'm here for it. Shift left in CI/CD. 🙌&lt;a href="https://twitter.com/hashtag/KubeCon?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#KubeCon&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/CloudNativeCon?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#CloudNativeCon&lt;/a&gt; &lt;a href="https://t.co/YeS8YFJkgr" rel="noopener noreferrer"&gt;pic.twitter.com/YeS8YFJkgr&lt;/a&gt;&lt;/p&gt;— Michael Friedrich, go SLO ... conf 📈🇦🇹 (&lt;a class="mentioned-user" href="https://dev.to/dnsmichi"&gt;@dnsmichi&lt;/a&gt;) &lt;a href="https://twitter.com/dnsmichi/status/1389936157853618182?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;May 5, 2021&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;p&gt;Next up was probably the &lt;a href="https://youtu.be/btGFt5-37hs?t=740" rel="noopener noreferrer"&gt;most interesting demo&lt;/a&gt; (one that followed a nice intro/whiteboard session) involving litmus in the Kubecon. Saiyam (Civo) &amp;amp; Karthik (Verica) presented how one could leverage the GitOps &amp;amp; Event-triggered chaos features in the Litmus platform to test the sanity of the changes made to your application deployments on the cluster. It also had some cool takeaways on how you should approach chaos engineering &amp;amp; up your reliability game.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1v2g9wtlxlztuzk91r6i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1v2g9wtlxlztuzk91r6i.png" alt="image" width="597" height="710"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;The demo included -&amp;gt; &lt;a href="https://twitter.com/LitmusChaos?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@LitmusChaos&lt;/a&gt;, &lt;a href="https://twitter.com/CivoCloud?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@CivoCloud&lt;/a&gt; Kubernetes, &lt;a href="https://twitter.com/PrometheusIO?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@PrometheusIO&lt;/a&gt; and black box exporter &lt;a href="https://twitter.com/grafana?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@grafana&lt;/a&gt;, &lt;a href="https://twitter.com/fluxcd?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@fluxcd&lt;/a&gt;, &lt;a href="https://twitter.com/github?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@github&lt;/a&gt; actions!&lt;br&gt;&lt;br&gt;Repo -&amp;gt; &lt;a href="https://t.co/dHrXYESCd9" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://t.co/dHrXYESCd9" rel="noopener noreferrer"&gt;https://t.co/dHrXYESCd9&lt;/a&gt; &lt;a href="https://t.co/7Gd35fmmj1" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://t.co/7Gd35fmmj1" rel="noopener noreferrer"&gt;https://t.co/7Gd35fmmj1&lt;/a&gt;&lt;/p&gt;— Saiyam Pathak (@SaiyamPathak) &lt;a href="https://twitter.com/SaiyamPathak/status/1390290962748903434?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;May 6, 2021&lt;/a&gt;
&lt;/blockquote&gt;  

&lt;p&gt;In between the various talks, we had the opportunity to hold the Office Hours (thanks a ton to the CNCF for organizing this) where community members, first time users got a chance to learn about the project &amp;amp; the advanced ones to probe us on the roadmap :). What better than waking up to messages like this from folks that attended the office hours: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpj85heqmmdf7nbj0kaxu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpj85heqmmdf7nbj0kaxu.png" alt="image" width="589" height="295"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://twitter.com/hashtag/Chaos?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#Chaos&lt;/a&gt; &lt;a href="https://twitter.com/LitmusChaos?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@LitmusChaos&lt;/a&gt; was a big surprise for me in &lt;a href="https://twitter.com/hashtag/kubeconEU?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#kubeconEU&lt;/a&gt;. They have an excellent solution for controlled and scheduled chaos validation in production environments for many services running on K8s. Great solution for Disaster Recovery and self healing tests&lt;/p&gt;— Matheus Fidelis @ 127.0.0.1 (&lt;a class="mentioned-user" href="https://dev.to/fidelissauro"&gt;@fidelissauro&lt;/a&gt;) &lt;a href="https://twitter.com/fidelissauro/status/1389564772866220033?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;May 4, 2021&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;p&gt;Amidst all this, we had our SIG-Docs lead &lt;a href="https://twitter.com/Divya_Mohan02" rel="noopener noreferrer"&gt;@Divya_Mohan02&lt;/a&gt; &lt;a href="https://www.youtube.com/watch?v=445UZFpbG90&amp;amp;list=PLHgdNuGxrJt0ZHXZlIxDi6DTdfJbXGFo1&amp;amp;index=15" rel="noopener noreferrer"&gt;participating&lt;/a&gt; in the awesome DoKC Day (Data on Kubernetes Community), where she shared her contribution journey in LitmusChaos, what it means to break things intentionally &amp;amp; how folks can get involved with the project. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu18f4r4mrivyvmig6gsg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu18f4r4mrivyvmig6gsg.png" alt="image" width="584" height="289"&gt;&lt;/a&gt;&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;"The art of intentionally breaking things"=chaos engineering/the title of &lt;a href="https://twitter.com/Divya_Mohan02?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@Divya_Mohan02&lt;/a&gt;'s talk about her experience working with &lt;a href="https://twitter.com/LitmusChaos?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@LitmusChaos&lt;/a&gt; &lt;a href="https://t.co/T3BlkKqXEX" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://t.co/T3BlkKqXEX" rel="noopener noreferrer"&gt;https://t.co/T3BlkKqXEX&lt;/a&gt;&lt;/p&gt;— Data on K8s Community (&lt;a class="mentioned-user" href="https://dev.to/dokcommunity"&gt;@dokcommunity&lt;/a&gt;) &lt;a href="https://twitter.com/DoKcommunity/status/1390222135851950083?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;May 6, 2021&lt;/a&gt;
&lt;/blockquote&gt;  
&lt;h1&gt;
  
  
  Looking Ahead
&lt;/h1&gt;

&lt;p&gt;While we feel chaos engineering &amp;amp; LitmusChaos project’s approach towards it has been validated, &lt;strong&gt;there is much work to do &amp;amp; improve&lt;/strong&gt;. The impending Litmus 2.0 launch is expected to improve the experience of users along with a host of useful features. Having said that, What are the aspects you are most interested in seeing Litmus get better at, features you’d like to include or integrations you’d like to see? &lt;/p&gt;

&lt;p&gt;Feel free to get involved in these discussions on our slack channel or post your thoughts into the Github discussions ! &lt;/p&gt;




&lt;p&gt;Are you an SRE, developer, or a Kubernetes enthusiast? Does Chaos Engineering excite you? Join our community on &lt;a href="https://slack.litmuschaos.io/" rel="noopener noreferrer"&gt;Slack&lt;/a&gt; For detailed discussions &amp;amp; regular updates On Chaos Engineering For Kubernetes.&lt;/p&gt;

&lt;p&gt;Check out the LitmusChaos &lt;a href="https://github.com/litmuschaos/litmus" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt; and do share your feedback. Submit a pull request if you identify any necessary changes.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>cloudnative</category>
      <category>litmuschaos</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Observability Considerations in Chaos: The Metrics Story</title>
      <dc:creator>Karthik Satchitanand</dc:creator>
      <pubDate>Wed, 03 Mar 2021 18:03:39 +0000</pubDate>
      <link>https://dev.to/litmus-chaos/observability-considerations-in-chaos-the-metrics-story-6cb</link>
      <guid>https://dev.to/litmus-chaos/observability-considerations-in-chaos-the-metrics-story-6cb</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Some of the recent queries from members of the litmuschaos community have been around how they can observe the impact of chaos. The frequency of these queries coupled with the feedback we got from several litmus users (&lt;a href="https://github.com/litmuschaos/litmus/issues/1902" rel="noopener noreferrer"&gt;like the SREs at F5 Networks&lt;/a&gt;) resulted in some interesting features and also triggered off several meetup appearances discussing precisely this: “Observability Considerations in Chaos Engineering”. This blog (and a few that will follow) is a summarization of those discussions and an attempt to define what observability means in the context of chaos &amp;amp; what hooks litmus provides in this area. &lt;/p&gt;

&lt;p&gt;What we will not do is define either observability (read this &lt;a href="https://copyconstruct.medium.com/monitoring-in-the-time-of-cloud-native-c87c7a5bfa3e" rel="noopener noreferrer"&gt;extremely insightful blog&lt;/a&gt; by Cindy Sridharan) or chaos (we have done this ad-nauseam in the other litmus blogs) individually :) &lt;/p&gt;

&lt;h2&gt;
  
  
  Observability in Chaos Engineering
&lt;/h2&gt;

&lt;p&gt;Observability ties in with chaos engineering in a couple of major ways: &lt;/p&gt;

&lt;h5&gt;
  
  
  (A) Chaos testing of your Observability infrastructure
&lt;/h5&gt;

&lt;p&gt;Are you getting the right metrics, is all information logged correctly, do you have the notifications/alerts arriving as expected?. It is often the easiest way to introduce a chaos engineering practice in an organization. And this is a view shared by many devops engineers we have spoken to over the years. The value demonstrated here gives the stakeholders the confidence to try it on real business applications sooner rather than later. Having said that, if the business app happens to be an observability solution - even better ;) &lt;/p&gt;

&lt;h5&gt;
  
  
  (B) Observability infra as supportive tooling to visualize chaos &amp;amp; validate the hypothesis
&lt;/h5&gt;

&lt;p&gt;Chaos experimentation is a lot about hypothesizing around the application and/or infrastructure behavior, controlling blast radius &amp;amp; measuring SLOs. SREs love to visualize the impact of chaos - either actively (live) or recorded (as with automated chaos tests)&lt;/p&gt;

&lt;p&gt;Point (A) is more about process, culture, and engineering ethos while (B) is a technical requirement asked of the chaos-framework with respect to what hooks it provides for generating observability data &amp;amp; also consuming it from the environment it is deployed into. &lt;/p&gt;

&lt;p&gt;We have had some interesting use cases of (A) in the litmus community - notably Zebrium using it to verify if their ML-based autonomous monitoring solution functions effectively and Intuit using litmus to test the resilience of their Prometheus &amp;amp; Wavefront cluster add-ons. &lt;/p&gt;

&lt;p&gt;As far as (B) goes, until quite recently (a few months past) Chaos (K8s) Events was the only observability element generated by Litmus microservices (metrics were mostly rudimentary) and the users needed additional aids such as the Heptio event router to convert these Kubernetes events into metrics in order to bring them onto their dashboards. There have been some cool developments since. &lt;/p&gt;

&lt;p&gt;Let me explain them in more detail. &lt;/p&gt;

&lt;h2&gt;
  
  
  Improved Litmus Chaos Exporter to create &lt;em&gt;Chaos-Interleaved&lt;/em&gt; dashboards
&lt;/h2&gt;

&lt;p&gt;Chaos interleaved dashboards (i.e., instrumented app dashboards/panels with prom functions on chaos metrics in order to indicate the period of chaos injection/experiment execution) is something that &lt;a href="https://dev.to/ksatchit/monitoring-litmus-chaos-experiments-198a"&gt;has been in practice&lt;/a&gt; and, like mentioned previously, used the event router. While this did help, it was by no means a perfect solution - as upstream implementations of the event-router didn’t have the desired event filtering capabilities (leading to more space on the TSDB) and events are relatively ephemeral entities that disappear from the etcd after a specified period of time. As a result, the &lt;a href="https://github.com/litmuschaos/chaos-exporter" rel="noopener noreferrer"&gt;chaos exporter&lt;/a&gt; was improved to generate more meaningful metrics to indicate the state &amp;amp; results of the chaos experiments - the source being a richer (schema-wise) ChaosResult CR. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fph7wjm221gjzmww5ad2p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fph7wjm221gjzmww5ad2p.png" alt="image" width="800" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These metrics (especially &lt;em&gt;litmuschaos_awaited_experiments&lt;/em&gt;) can be used to annotate your dashboards to view the application behavior during the chaos period. Here is a sample Kafka dashboard interleaved with chaos metrics: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2j4csvvb80mc631vynsw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2j4csvvb80mc631vynsw.png" alt="image" width="800" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can find references for this dashboard &lt;a href="https://github.com/chaoscarnival/bootcamps/blob/main/day1-kafkaChaos/grafana/kafka-jmx.json" rel="noopener noreferrer"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Automated Validation of Hypothesis
&lt;/h2&gt;

&lt;p&gt;Oftentimes, chaos experiments are automated and there is a need to record application behavior (and any other environmental factors worth observing, depending on the usecase) to determine whether an experiment was successful in proving a “Hypothesis”. The hypothesis can be defined as the expectation you, the chaos practitioner (developer, SRE) have from your system under the chaotic condition it is subjected to. Typically, it involves the following: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;(a) Defining a Steady State for your application/infrastructure &lt;/li&gt;
&lt;li&gt;(b) Anticipated deviation from Steady State &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It may also involve other expectations around (a) &amp;amp; (b) such as expected MTTD (mean time for detection of failures and beginning of recovery flow within a self-healing infrastructure), MTTR (Mean Time to Recover and get back to Steady-State and Optimal Operational Characteristics). These details are typically expressed as application metrics via respective exporters/plugins. &lt;/p&gt;

&lt;p&gt;It is also possible to have other notions of Steady-State - the range can be as diverse as availability of a downstream microservice, custom app status retrieved via dedicated CLI, values for different status fields on Kubernetes Custom Resources (especially with operators doing lifecycle management of apps), etc., (you can find more details about this &lt;a href="https://dev.to/ispeakc0de/declarative-approach-to-chaos-hypothesis-using-litmus-probes-5157"&gt;here&lt;/a&gt;). However, for a majority of the cases, these tend to be auxiliary checks over the course of an experiment, with the core constraints of the steady-state hypothesis revolving around app metrics.&lt;/p&gt;

&lt;p&gt;The &lt;a href="https://docs.litmuschaos.io/docs/litmus-probe/#promprobe" rel="noopener noreferrer"&gt;promProbe&lt;/a&gt; was introduced to address this very requirement. With this probe, users can define an expected value (or range) for app metrics (that are queried from a Prometheus end-point) via promQL queries at various stages of the experiment execution (before/after chaos OR through the chaos period). The success of the probe determines the eventual “verdict” of the experiment. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F59spmwv3ocdjrun2wjy5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F59spmwv3ocdjrun2wjy5.png" alt="image" width="800" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can find references for this probe definition &lt;a href="https://github.com/chaoscarnival/bootcamps/blob/3b62d5e8f4b4d5034b8627935a840096055db775/day1-kafkaChaos/chaos-workflow/kafka-wf-probe.yaml#L62" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;Observability has many more facets than just metrics: such as logs, traces, events. Analytics too is slowly being drafted in as an element of (or at least at the periphery of) observability in recent times. In subsequent blog posts, we will discuss what Litmus has to offer in these areas and what improvements we are looking at. &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;/p&gt;

</description>
      <category>kubernetes</category>
      <category>monitoring</category>
      <category>litmuschaos</category>
      <category>devops</category>
    </item>
    <item>
      <title>Learn more with Chaos Engineering Bootcamps</title>
      <dc:creator>Karthik Satchitanand</dc:creator>
      <pubDate>Tue, 09 Feb 2021 17:34:09 +0000</pubDate>
      <link>https://dev.to/litmus-chaos/learn-more-with-chaos-engineering-bootcamps-47k8</link>
      <guid>https://dev.to/litmus-chaos/learn-more-with-chaos-engineering-bootcamps-47k8</guid>
      <description>&lt;p&gt;There is an unmistakable buzz and excitement that the &lt;a href="https://chaoscarnival.io" rel="noopener noreferrer"&gt;chaos carnival&lt;/a&gt; is generating, and I just can’t wait for it to begin. While tons of material has been generated about chaos engineering - the what, why &amp;amp; how over the last few years, nothing beats the experience of hearing actual practitioners talk about their learnings. The chaos carnival has an impressive line-up of such speakers and their experiences &amp;amp; accounts will add to the abundant wealth of info out there. As members of the organizing team, and more importantly advocates of cloud-native chaos engineering, we felt this is also a good opportunity to ease people into chaos engineering via simple bootcamps during the break period. &lt;/p&gt;

&lt;p&gt;As the attendees flit through different tracks, they will also have an opportunity to take a low-level, hands-on intro to chaos use cases - that we will accomplish using LitmusChaos. Unlike most demos/intro sessions we have conducted in the past during meetups &amp;amp; conferences, the idea behind these bootcamps is to take an actual real-world application (like Kafka, Percona MySQL) - not a hello service :) - and inject chaos with a well-defined hypothesis around the failure. &lt;/p&gt;

&lt;p&gt;During the session, you will also be introduced to the observability elements in chaos engineering &amp;amp; how experiments both generate as well as consume observability info that helps you to validate the hypothesis. Considering these bootcamps are scheduled during breaks, they will be split into two parts: an instructor-led tutorial explaining each step followed by an optional guided lab that you can join-in to experience, where the participants will be provided access to a pre-packaged Kubernetes cluster environment that has been bootstrapped with the necessary dependencies allowing them to recreate and experience the chaos steps. &lt;/p&gt;

&lt;p&gt;During the tutorial, we will also discuss the KPIs on how you can measure your progress around your efforts on chaos engineering. &lt;/p&gt;

&lt;p&gt;To participate in the bootcamp on Days 1 &amp;amp; 2 of the event, please join &amp;amp; track the announcements in the chaos carnival slack channel. If you’d like to also perform the optional lab exercise, please do reach out via email (&lt;a href="//karthik.s@mayadata.io"&gt;Karthik.s&lt;/a&gt;, &lt;a href="//udit.gaurav@mayadata.io"&gt;Udit Gaurav&lt;/a&gt; or &lt;a href="//shubham.chaudhary@mayadata.io"&gt;Shubham Chaudhary&lt;/a&gt;) or DMs on the &lt;a href="https://chaoscarnival.slack.com/archives/C018Q4T4F2A" rel="noopener noreferrer"&gt;chaos carnival&lt;/a&gt; slack channel. There are a limited set of pre-packaged environments available - the access to which will be emailed on a first-come-first-service basis and stay active for the duration of the lab! &lt;/p&gt;

&lt;p&gt;We hope that these sessions are fun, pique your interest in chaos engineering, reduce your apprehension and inspire you to dig more so you take those bold steps towards application resilience. They would also serve as a nice indicator of the prerequisites needed to kickstart these efforts in your organization. &lt;/p&gt;

</description>
      <category>litmuschaos</category>
      <category>kubernetes</category>
      <category>testing</category>
      <category>devops</category>
    </item>
    <item>
      <title>LitmusChaos: A Reflection On The Past Six Months</title>
      <dc:creator>Karthik Satchitanand</dc:creator>
      <pubDate>Mon, 23 Nov 2020 18:21:46 +0000</pubDate>
      <link>https://dev.to/litmus-chaos/litmuschaos-a-reflection-on-the-past-six-months-d6a</link>
      <guid>https://dev.to/litmus-chaos/litmuschaos-a-reflection-on-the-past-six-months-d6a</guid>
      <description>&lt;p&gt;This blog’s title suggests that it may have arrived a month early. After all, reflections are mostly written at year-end with predictions and goals for the new year. But to those of us accustomed to compartmentalizing our lives around the festival called “KubeCon”, this doesn’t seem out of place. Also, the choice of six months is thanks to the fact that we have been a CNCF sandbox project for (nearly) this duration. While some of us have been lucky to witness first-hand the ongoings in the project from a vantage point as maintainers, we felt the need for us to share them with the larger litmus community. So, this article is going to be a mix of updates as well as opinions/trends we are observing in the cloud-native chaos engineering space, with generous references to specific docs/blog posts/videos highlighting them. &lt;/p&gt;

&lt;h1&gt;
  
  
  The Project Has Grown...
&lt;/h1&gt;

&lt;p&gt;...And how! Thanks in no small part to being accepted as a CNCF sandbox project. While we were convinced of the need for a cloud-native chaos engineering solution (which is what motivated us to start Litmus in the first place), the reach and vibrant nature of the CNCF developer &amp;amp; end-user community amplified the interest in the project leading to increased contributions from developers across different organizations (including RedHat, Intuit, ContainerSolutions, Microsoft, etc.,) as well as new adopters (Okteto, WeScale, NetApp). It also paved the way for greater collaboration &amp;amp; integrations with other projects on the CNCF landscape that are focused on solving different kinds of challenges around application delivery (for ex: Okteto, Argo, Keptn, Spinnaker), about which we shall delve a bit more in subsequent sections. More importantly, it has helped generate more dialogue with diverse folks who are at various stages of the cloud-native journey - right from those that have crossed the chasm &amp;amp; have turned into mature/well-oiled adopters of the paradigm to those that are in the process of re-architecting their applications into microservices and migrating them onto their first Kubernetes staging clusters. The Litmus slack channel has never been more active (it saw a 70%+ increase in members), and we are also grateful for all those on-demand zoom calls and pages-worth slack conversations - it would be an understatement to say that more than 90% of the features/enhancements and fixes that went in during this period were direct end-results of this dialogue. Talk about being community-driven!! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3do1hmvjxyaqcp13ad4c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F3do1hmvjxyaqcp13ad4c.png" alt="Alt Text" width="800" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Evolution Of (Cloud-Native) Chaos Engineering
&lt;/h1&gt;

&lt;p&gt;While the principles around which we helped define the &lt;a href="https://www.cncf.io/blog/2019/11/06/cloud-native-chaos-engineering-enhancing-kubernetes-application-resiliency/" rel="noopener noreferrer"&gt;&lt;em&gt;sub-category&lt;/em&gt;&lt;/a&gt; of cloud-native chaos engineering (a little over a year ago) continue to hold true (validated by the emergence of other projects sharing similar values), we have noticed some developments in this space since. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;These are also things that influenced us as we developed and iterated on the litmus framework, resulting in several new features &amp;amp; integrations.&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Prominent amongst those has been the call for “left-shift” of chaos - which is now being increasingly viewed as part of the delivery pipelines as against something run only in production environments, by SRE or Ops persona. This is definitely an interesting departure from traditionally held views about CE. While the “exploratory” model of chaos engineering with controlled failures on prod &amp;amp; well-defined hypotheses in a gameday setting is still the Nirvana of a mature devops practice, we found an urgent need amongst the community for doing it much earlier in an automated way (read CI/CD pipelines) in the wake of overhauls to application architecture (making it microservices oriented) &amp;amp; their impending/ongoing migration to Kubernetes.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note that this is not to say chaos engineering doesn’t apply to monolithic apps or non-Kubernetes environments, just that the recent shift to a cloud-native mindset has brought about new practices.&lt;/em&gt;&lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;Where do you use or intend to use Chaos Engineering in your Kubernetes architecture?&lt;a href="https://twitter.com/hashtag/chaosengineering?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#chaosengineering&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/Kubernetes?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#Kubernetes&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/cncf?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#cncf&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/DevOps?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#DevOps&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/k8s?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#k8s&lt;/a&gt;&lt;/p&gt;— LitmusChaos (Chaos Engineering for Kubernetes) (&lt;a class="mentioned-user" href="https://dev.to/litmuschaos"&gt;@litmuschaos&lt;/a&gt;) &lt;a href="https://twitter.com/LitmusChaos/status/1274978096106532864?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;June 22, 2020&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;p&gt;A &lt;a href="https://youtu.be/s-8HwXMdeMk?t=786" rel="noopener noreferrer"&gt;panel discussion&lt;/a&gt; we curated recently to dig more perspective around this topic and other trends in this space was especially enlightening. So have been the conversations with different users (the persona ranging from application developers to people classifying themselves as “devops engineers” focused on delivery tooling, QA architects, SREs, VPs &amp;amp; CTOs). Here is a summarization: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reliability verification is needed right from the earliest stages of application/platform development. Something that is being termed as the “Chaos First” principle &lt;/li&gt;
&lt;/ul&gt;


&lt;blockquote&gt;
&lt;p&gt;Chaos first is a really important principle. It’s too hard to add resilience to a finished project. Needs to be a gate for deployment in the first place. &lt;a href="https://t.co/xi98y8JZpJ" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://t.co/xi98y8JZpJ" rel="noopener noreferrer"&gt;https://t.co/xi98y8JZpJ&lt;/a&gt;&lt;/p&gt;— adrian cockcroft (&lt;a class="mentioned-user" href="https://dev.to/adrianco"&gt;@adrianco&lt;/a&gt;) &lt;a href="https://twitter.com/adrianco/status/1201703004014907392?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;December 3, 2019&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Chaos to “test” or unearth issues in the observability frameworks is being increasingly seen as a way to lower the entry-barrier for chaos engineering in many organizations that are generally apprehensive about the idea. Litmus has seen adoption in multiple organizations with this use-case. In some cases, this is the main motivation too (for ex: testing log-based anomaly detection in &lt;a href="https://github.com/litmuschaos/litmus/blob/master/adopters/organizations/zebrium.md#how-do-we-use-litmus" rel="noopener noreferrer"&gt;Zebrium&lt;/a&gt;!)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;There is a definite need identified to bring in methods to define steady-state of systems &amp;amp; hypothesize about the impact of chaos in a declarative way, without which the advantage of a Kubernetes-native/YAML based approach is nullified. This is a prerequisite for automated SLO validation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Organic integrations emerge between cloud-native chaos toolsets &amp;amp; observability frameworks, with native support for chaos events, metrics (and other elements). Observability was &amp;amp; continues to be a prerequisite for chaos engineering. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The “run-everywhere” drive in chaos engineering has brought it to the developer’s doorstep and has become a much-used strategy in dev tests. This, combined with the self-service model where developers are provided “namespaces” with “quotas”, has resulted in the need for chaos frameworks to be “multi-tenant” aware, with implications right from RBACs needed for experimentation to the resource consumption at scale.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;blockquote&gt;
&lt;p&gt;As a Kubernetes-native Chaos Engineering practitioner, how do you believe experiments should be?&lt;br&gt;.&lt;br&gt;.&lt;br&gt;Thoughts from &lt;a href="https://twitter.com/kubernauts?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@kubernauts&lt;/a&gt; ?&lt;a href="https://twitter.com/hashtag/ChaosEngineering?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#ChaosEngineering&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/Kubernetes?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#Kubernetes&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/OSS?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#OSS&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/DevOps?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#DevOps&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/SRE?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#SRE&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/CloudNative?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#CloudNative&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/Docker?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#Docker&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/k8s?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#k8s&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/k8sjp?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#k8sjp&lt;/a&gt;&lt;/p&gt;— LitmusChaos (Chaos Engineering for Kubernetes) (&lt;a class="mentioned-user" href="https://dev.to/litmuschaos"&gt;@litmuschaos&lt;/a&gt;) &lt;a href="https://twitter.com/LitmusChaos/status/1285587689148829696?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;July 21, 2020&lt;/a&gt;
&lt;/blockquote&gt; 

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The control offered by the chaos-frameworks is extremely important to the SRE. That encompasses the flexibility to choose security configuration, isolate chaos resources, abort/stop chaos when needed, and even simplicity in defining new experiments (Hear Andreas Krivas from Container Solutions talking about it based on prod experience in this &lt;a href="https://youtu.be/C57WqBU-Vts?t=647" rel="noopener noreferrer"&gt;user-interview&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Another trend, something that is nascent is the application of chaos engineering to the edge. Kubernetes for the edge is something that has caught on in recent times, and chaos engineering is a natural extension! This calls for newer experiments, multi-arch support &amp;amp; resource-optimized deployments. This &lt;a href="https://github.com/litmuschaos/litmus/blob/master/adopters/organizations/raspbernetes.md" rel="noopener noreferrer"&gt;adoption story&lt;/a&gt; from Michael Fornaro (founder/maintainer of &lt;a href="https://github.com/raspbernetes" rel="noopener noreferrer"&gt;Raspbernetes&lt;/a&gt;) is an early indicator! Something that has driven the litmus e2e team to prioritize platforms such as K3s as part of its e2e suite. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;While Kubernetes native chaos is something that is appreciated and has caught on, the need to inject failures on infrastructure components falling “outside” the ambit of the Kube API continues to be in demand. And probably is ever-more important. This includes support for node-level and disk-level failures, with growing requests for interoperability with different cloud providers. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;blockquote&gt;
&lt;p&gt;Which of these &lt;a href="https://twitter.com/hashtag/Kubernetes?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#Kubernetes&lt;/a&gt; Cluster would you prefer to use in your local development or CI?&lt;br&gt;---&lt;a href="https://twitter.com/LitmusChaos?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@LitmusChaos&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/kind?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#kind&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/microk8s?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#microk8s&lt;/a&gt; &lt;a href="https://twitter.com/kubernetesio?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@kubernetesio&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/Docker?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#Docker&lt;/a&gt;&lt;br&gt; &lt;a href="https://twitter.com/hashtag/k3s?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#k3s&lt;/a&gt; &lt;a href="https://twitter.com/Rancher_Labs?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@Rancher_Labs&lt;/a&gt;&lt;/p&gt;— Udit Gaurav (@udit_gaurav15) &lt;a href="https://twitter.com/udit_gaurav15/status/1306938070466310144?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;September 18, 2020&lt;/a&gt;
&lt;/blockquote&gt; 
&lt;h1&gt;
  
  
  Integrations with Other Projects in the CNCF Landscape
&lt;/h1&gt;

&lt;p&gt;With chaos engineering being accepted as an important cog in the application delivery process (Litmus is part of the App-Delivery SIG in CNCF), it was important that we interface with standard cloud-native mechanisms enabling it. Right from dev-test through CI pipelines, automated validation upon continuous deployment into pre-prod environments (CD) and eventually in production. This resulted in the following integrations, which are expected to undergo a formal release process just as the core chaos framework. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Okteto (DevTest): Okteto simplifies the application development experience and reduces the cycles spent in getting a test image validated on the Kubernetes cluster. It reduces this “inner loop of development” by allowing “in-cluster development”, i.e., helps spin-up a complete dev environment on the cluster itself with access to all the code in your workspace. It has a SaaS offering (Okteto Cloud) that provides Kubernetes namespaces with the option to pull in LitmusChaos control plane so that developers can right away gauge the impact of failures and fix them before hitting CI. You can leverage Okteto’s &lt;a href="https://dev.to/okteto/chaos-engineering-with-litmus-and-okteto-cloud-2p3l"&gt;litmus-enabled preconfigured development&lt;/a&gt; environments to deploy Litmus along with your application with a single click. On the other hand, Okteto is also being actively used for the &lt;a href="https://dev.to/ksatchit/litmus-sdk-devtest-your-chaos-experiments-with-okteto-4dkj"&gt;development of the chaos experiments&lt;/a&gt; themselves!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Gitlab (CI): Running chaos experiments, albeit with “stricter” validations, not unlike failure tests is something that is catching up. Litmus provides &lt;a href="https://dev.to/uditgaurav/litmuschaos-gitlab-remote-templates-6l2"&gt;chaos templates&lt;/a&gt; for Gitlab, an abstraction over the chaos CRDs to extend your regular CI pipelines with new stages to inject various types of faults and validate for a specific application or infra behavior. The usage models here are varied, with some teams opting for quick litmus-based e2e on low-footprint ephemeral clusters such as KIND that can be brought up within the build environment itself, thereby not needing to push test images to a registry v/s more elaborate “retrospective” pipelines running against cloud/hosted K8s clusters after the images are pushed to a test repository. &lt;a href="https://openebs.ci" rel="noopener noreferrer"&gt;openebs.ci&lt;/a&gt; is a great example of the latter.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Argo (Workflows): Argo is an incubating project in CNCF with a suite of sub-projects under its banner (workflows, CD, events, rollouts). Amongst those, the community (notably Intuit) foresaw great value in creating what we are now calling &lt;a href="https://dev.to/ksatchit/chaos-workflows-with-argo-and-litmuschaos-2po5"&gt;“chaos workflows”&lt;/a&gt;, which are essentially argo workflows running one or more experiments, often in combination with tools to generate “real world load”. This enables the creation of complex chaos scenarios (for ex: you could simulate parallel multiple-component failures, chained chaos - i.e., cases where a sequence of certain failures can cause unique issues, etc.,) and imparts greater power to developers and SREs. The chaos workflows are different from vanilla argo workflows in the sense that the status of a workflow is determined by the success of the chaos experiments. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Keptn (CD): Keptn is an open-source cloud-native application life-cycle orchestration tool. An entrant into the CNCF sandbox alongside Litmus, a major use case of Keptn within Kubernetes involves defining a pipeline with one or more stages for deployment, testing, and remediation strategies. It provides a mechanism to implement a Quality Gate for the promotion of applications based on SLO validation. Litmus &lt;a href="https://dev.to/ksatchit/part-1-evaluating-resiliency-with-keptn-and-litmuschaos-30jo"&gt;integrates&lt;/a&gt; with Keptn (via a dedicated &lt;a href="https://github.com/keptn-sandbox/litmus-service" rel="noopener noreferrer"&gt;litmus-service&lt;/a&gt; in the Keptn control plane) to inject chaos into any stage of the Keptn pipeline, especially with background load to simulate real-world behavior, thereby lending greater strength to the SLO eval process. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Spinnaker (CD): In recent times, Spinnaker has introduced the &lt;a href="https://www.armory.io/blog/spinnaker-extensibility-new-heights-plugins/" rel="noopener noreferrer"&gt;plugin&lt;/a&gt; model to extend the capabilities of this popular continuous delivery platform, while keeping a lean core. With an increasing number of organizations using spinnaker for the CD needs, we introduced the &lt;a href="https://www.armory.io/blog/litmuschaos-in-your-spinnaker-pipeline/" rel="noopener noreferrer"&gt;Litmus plugin&lt;/a&gt; that enables the creation of a custom stage for chaos, with the ability to inject different failures on the deployed application and creating opinionated exit checks. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Notable Features We Added
&lt;/h1&gt;

&lt;p&gt;As mentioned earlier, a lot of the new enhancements &amp;amp; features that we added during this period were a result of community requests and roadmap items crafted based on the trends observed. Here is a high-level list of some notable improvements: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The existing experiments were migrated to golang, and (12) newer ones added (including node-level chaos experiments). We also simplified the experiment development process via the &lt;a href="https://github.com/litmuschaos/litmus-go/tree/master/contribute/developer-guide" rel="noopener noreferrer"&gt;litmus-sdk&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;a href="https://docs.litmuschaos.io/docs/chaosengine/" rel="noopener noreferrer"&gt;ChaosEngine&lt;/a&gt; CRD schema has been upgraded significantly to support various properties for the chaos pods, leading to granular control of the experiment (including pod/container-security context, image overrides &amp;amp; secrets, resource requests-limits, pod scheduling via selectors &amp;amp; tolerations, ability to inject custom labels &amp;amp; annotations, etc.,)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Support for chaos on runtimes other than docker (containerd, crio) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://dev.to/ispeakc0de/declarative-approach-to-chaos-hypothesis-using-litmus-probes-5157"&gt;Litmus Probes&lt;/a&gt; were introduced to enable declarative steady-state definition and construct hypotheses &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;a href="https://docs.litmuschaos.io/docs/scheduling/" rel="noopener noreferrer"&gt;Chaos-Scheduler&lt;/a&gt; was made available to help with the execution of continuous background chaos. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Support for newer &lt;a href="https://dev.to/ksatchit/deployment-modes-in-litmuschaos-1bpa"&gt;modes of operation&lt;/a&gt; (admin, namespaced) to enable centralization of chaos &amp;amp; operations in multi-tenant environments respectively &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The CI &amp;amp; e2e practices in the litmus project have improved (though there is much more to be done) over time, with support for multi-arch builds, test runs for pull request validation as well as increased &lt;a href="https://litmuschaos.github.io/litmus-e2e/index" rel="noopener noreferrer"&gt;integration test coverage&lt;/a&gt; for the litmus control plane and chaos experiments. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not least, we also introduced the chaos-bird as our new mascot !! &lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;Hola k8s folks, Unveiling the brand new mascot for Litmus, the Chaos Bird in grand fashion &lt;a href="https://twitter.com/KubeCon_?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@KubeCon_&lt;/a&gt;. The all new website (&lt;a href="https://t.co/hDS6S1xp9d" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://t.co/hDS6S1xp9d" rel="noopener noreferrer"&gt;https://t.co/hDS6S1xp9d&lt;/a&gt;) and ChaosHub (&lt;a href="https://t.co/BA4angVyNu" rel="noopener noreferrer"&gt;&lt;/a&gt;&lt;a href="https://t.co/BA4angVyNu" rel="noopener noreferrer"&gt;https://t.co/BA4angVyNu&lt;/a&gt;) are all about the Chaos Bird unfurling its magic in the cloud-native world!&lt;a href="https://twitter.com/hashtag/chaosengineering?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#chaosengineering&lt;/a&gt; &lt;a href="https://t.co/B3tVsqzwGR" rel="noopener noreferrer"&gt;pic.twitter.com/B3tVsqzwGR&lt;/a&gt;&lt;/p&gt;— Ishan Gupta (&lt;a class="mentioned-user" href="https://dev.to/code_igx"&gt;@code_igx&lt;/a&gt;) &lt;a href="https://twitter.com/code_igx/status/1295323815522656257?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;August 17, 2020&lt;/a&gt;
&lt;/blockquote&gt; 
&lt;h1&gt;
  
  
  Introducing the Litmus Portal
&lt;/h1&gt;

&lt;p&gt;Once we established the fact to ourselves and the community that chaos workflows are the way forward in terms of “scaling” chaos (i.e., increase injections with different “ordering” schemes to form complex scenarios), we decided to simplify this experience for users. After all, constructing YAMLs spanning hundreds of lines by hand is something that is universally detested! Over time, we also learned that “scaling” chaos has other connotations too - such as being able to inject chaos across several “target” clusters from a single “control plane”, extending the chaos execution &amp;amp; analysis to a team or groups of engineers, etc., Not just that, chaos engineering is a lot about visualization, introspection, and analysis of results as against just fault-injection. &lt;/p&gt;

&lt;p&gt;All this resulted in the creation of the &lt;a href="https://github.com/litmuschaos/litmus/tree/master/litmus-portal" rel="noopener noreferrer"&gt;Litmus Portal&lt;/a&gt; which offers a centralized management console to construct, schedule, and visualize chaos workflows on multiple clusters, connected to it via an agent/subscriber. It allows selecting chaos experiments from a trusted/specific git source and offers insights into application/infrastructure resiliency via a “resilience grading” mechanism that allows setting weights to experiment results. It also supports the generation of chaos reports and a git-based auth mechanism to aid chaos execution by teams. The portal is alpha-2 at the time of writing this article and is expected to evolve to include many other features over time.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fr3i5l31z3vpbjot4jbtt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fr3i5l31z3vpbjot4jbtt.png" alt="Alt Text" width="800" height="359"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw6amc2ubbdvy7vuxct9v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw6amc2ubbdvy7vuxct9v.png" alt="Alt Text" width="800" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  State of Governance
&lt;/h1&gt;

&lt;p&gt;One of the areas we made significant strides in this period was project governance. While Litmus had become collaborative and “truly” opensource when the maintainer/project leadership group grew to include &lt;a href="https://github.com/sumitnagal" rel="noopener noreferrer"&gt;Sumit Nagal&lt;/a&gt; (Intuit), &lt;a href="https://github.com/k8s-dev" rel="noopener noreferrer"&gt;Jayesh Kumar&lt;/a&gt;(AWS) &amp;amp; &lt;a href="https://github.com/Jasstkn" rel="noopener noreferrer"&gt;Maria Kotlyarevskaya&lt;/a&gt; (Wrike) apart from the team at MayaData, we were looking for ways to decentralize the planning &amp;amp; maintenance activities of the various sub-projects within Litmus. We also realized, that over time, Litmus was being perceived and used in a variety of use-cases - while some folks in the community were focused on integrations with other tools/frameworks, few were interested in improving observability hooks and yet others wanted to focus on improving the chaos orchestration logic to improve the chaos experience. We also gauged interest amongst some members in learning about and contributing to the project by improving the documentation. &lt;/p&gt;

&lt;p&gt;This led us to create &lt;a href="https://github.com/litmuschaos/litmus/wiki/Special-Interest-Groups" rel="noopener noreferrer"&gt;Special Interest Groups (SIGs)&lt;/a&gt; within the Litmus project (something that CNCF &amp;amp; Kubernetes has implemented to great effect) to allow the community members to align themselves with like-minded individuals and improve the project by defining the direction in which the area/sub-projects should go. Each SIG is composed of a group of community members led by at least two SIG-Chairs who also have the commit bits to a set of github repositories that come under the purview of the area/sub-projects. Each SIG has a set of well-defined Goals, Non-Goals &amp;amp; is also responsible for proposing deliverables for the monthly releases. The SIG teams typically meet once in two weeks to discuss progress, roadmap items and to engage in cool demos/presentations. While some SIGs are formally operational (Documentation, Observability, Orchestration, Integrations), a few others are yet to take off (Deployment, Testing, CI). We hope these will soon be functional! &lt;/p&gt;

&lt;h1&gt;
  
  
  Looking Ahead
&lt;/h1&gt;

&lt;p&gt;We recognize the fact that there is increasing adoption of chaos engineering as a practice across organizations, and sustained improvement is key in ensuring the cloud-native world is able to leverage litmus for their resilience needs successfully. The project &lt;a href="https://github.com/litmuschaos/litmus/blob/master/ROADMAP.md" rel="noopener noreferrer"&gt;roadmap&lt;/a&gt; is continuously being upgraded to hold newer requirements and stability improvements. To this effect, we have been planning a steering committee composed of people from the resilience, observability &amp;amp; application delivery world that can help prioritize features, enrich project/product management practices, and generally help bring real-world experience to improve Litmus in becoming a well-rounded solution! If you are interested, do reach out to us on the &lt;a href="https://slack.litmuschaos.io" rel="noopener noreferrer"&gt;litmus slack&lt;/a&gt; channel. &lt;/p&gt;

&lt;p&gt;So, to summarize, we are looking at the community getting involved in a bigger way in driving the project - via feedback and contributions. Needless to say, we are also focused on moving further along the path as a CNCF project which would accelerate achieving these goals. The next Kubecon is 6 months away, but we &lt;em&gt;will&lt;/em&gt; keep you all posted on what's new in Litmus.&lt;/p&gt;

&lt;p&gt;Before we end this post, it is worth looking at what Liz Rice, the TOC (Technical Oversight Committee) chair at CNCF had to say about chaos engineering! &lt;/p&gt;


&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://twitter.com/hashtag/CNCF?src=hash&amp;amp;ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;#CNCF&lt;/a&gt; TOC chair &lt;a href="https://twitter.com/lizrice?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@lizrice&lt;/a&gt; is sharing the 5 technologies to watch in 2021 according to the TOC:&lt;br&gt;1. Chaos engineering&lt;br&gt;2. &lt;a href="https://twitter.com/kubernetesio?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;@kubernetesio&lt;/a&gt; for the edge&lt;br&gt;3. Service mesh&lt;br&gt;4. Web assembly and eBPF&lt;br&gt;5. Developer + operator experience &lt;a href="https://t.co/aSRDTB0piN" rel="noopener noreferrer"&gt;pic.twitter.com/aSRDTB0piN&lt;/a&gt;&lt;/p&gt;— CNCF (@CloudNativeFdn) &lt;a href="https://twitter.com/CloudNativeFdn/status/1329863326428499971?ref_src=twsrc%5Etfw" rel="noopener noreferrer"&gt;November 20, 2020&lt;/a&gt;
&lt;/blockquote&gt; 



&lt;p&gt;Are you an SRE, developer, or a Kubernetes enthusiast? Does Chaos Engineering excite you? Join our community on &lt;a href="//slack.litmuschaos.io"&gt;Slack&lt;/a&gt; For detailed discussions &amp;amp; regular updates On Chaos Engineering For Kubernetes.&lt;/p&gt;

&lt;p&gt;Check out the LitmusChaos &lt;a href="https://github.com/litmuschaos/litmus" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt; and do share your feedback. Submit a pull request if you identify any necessary changes.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>devops</category>
      <category>sre</category>
      <category>litmuschaos</category>
    </item>
    <item>
      <title>Part-1: Evaluating Resiliency with Keptn and LitmusChaos</title>
      <dc:creator>Karthik Satchitanand</dc:creator>
      <pubDate>Thu, 19 Nov 2020 17:41:55 +0000</pubDate>
      <link>https://dev.to/litmus-chaos/part-1-evaluating-resiliency-with-keptn-and-litmuschaos-30jo</link>
      <guid>https://dev.to/litmus-chaos/part-1-evaluating-resiliency-with-keptn-and-litmuschaos-30jo</guid>
      <description>&lt;h1&gt;
  
  
  Evolution of Chaos Engineering: From Shift-Right to Run-Everywhere
&lt;/h1&gt;

&lt;p&gt;When chaos engineering started gaining ground a few years back as an essential practice to ensure reliability, it brought about a change in the mindset of traditional software practitioners in forcing them to think about “shifting-right”, i.e., testing in production. While this did not intend to replace traditional “shift-left” approaches for testing, it was more about the need for finding out application behavior amidst the vagaries that only a prod environment could offer. And chaos engineering, with its scientific hypothesis-based approach and blast radius principles to control “the extent of chaos”, was (is) seen as the way to go about it. After all, testing in production is not only about fault-injections. It helps unearth more issues than just application misbehavior - around deployment practices, observability mechanisms, incident response, recovery practices, etc., As the SRE role has grown, chaos engineering also has grown as an integral function. Accelerated in no small part due to organizations like Netflix &amp;amp; Amazon publicly sharing their stories and technologies. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpnrgdckuaeisrznuuq78.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fpnrgdckuaeisrznuuq78.png" alt="Alt Text" width="456" height="325"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;However, the emergence of the cloud-native paradigm and an ever-increasing adoption of Kubernetes has brought with it the challenges of re-architecting applications: to be distributed, loosely-coupled (read: microservices) and containerized. It has also brought in new ways of dealing with “operational” aspects such as deployments and upgrades, storage (in case of stateful components), maintaining HA, scaling, recovery, etc., Kubernetes, as the overarching orchestration system provides multiple choices and approaches for implementing these. All this contributes to significant complexity. And with it a lot of apprehensions. &lt;/p&gt;

&lt;p&gt;Organizations that are consciously adopting cloud-native design principles and migrating to Kubernetes as the deployment platform of choice typically face the need to test different kinds of failure scenarios (including those of the Kube ecosystem components themselves) and learn about their application behavior and deployment practices deeply, by hypothesizing &amp;amp; repeated experimentation. And it is often needed to build confidence before they hit production. In recent times, this has contributed to a “shift-left” approach in chaos engineering. With more and more organizations planning for chaos as part of their software delivery process. By that, it means reliability verification as a practice and end-goal, and by extension, chaos experimentation, is now no longer an only-SRE or Ops responsibility. Developers are getting involved too (Note that this doesn’t in any way undermine or replace testing in prod, that is still the ultimate goal of CE) &lt;/p&gt;

&lt;h1&gt;
  
  
  How is Chaos as part of Continuous Delivery different from traditional Failure Testing
&lt;/h1&gt;

&lt;p&gt;One question that arises here is, how is it different from failure testing one would expect the QA teams (or developers wearing a QA hat) to perform. The differences are subtle and it depends on the persona as to how the chaos tooling is employed. Some prominent ones are: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;With chaos engineering, a lot of emphases is placed on the “what”, i.e., service level objectives (SLOs) over the “how”, i.e., application functionality. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Chaos is expected to be done against systems mimicking production (typically called “staging”) environments. Kubernetes helps here: today it is the de-facto development platform as much as it is a deployment platform of choice, which makes it easier to achieve some degree of similarity with prod (via the right mix of scale, simulated traffic, and in cases where permissible - datasets cloned from prod) &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The focus is more about observation and inference rather than a pre-defined/strict “validation”. Having said this, the boundaries are a bit blurred here, and typically “chaos efforts” end up being a mix of both, with a nuanced practice seen to get developed as the organization matures in its journey. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;One of the immediate impacts of this culture is the practice of integrating chaos into continuous delivery (CD) pipelines, with a dedicated stage for running experiments against a suitable pre-prod environment, and the results/findings from the experiment deciding on the promotion of the change (i.e., build artifact - often container images or a deployment/resource specification) into production. The process of gauging these findings is typically around consuming data from different service level indicators (often metrics from sources like Prometheus) and examining it against a predefined SLO. &lt;/p&gt;

&lt;p&gt;In this blog, we introduce you to a means of implementing the above, i.e., executing chaos in CD pipelines with the ability to “gate” your deployments to production based on checks against SLOs. This we achieve using the cloud-native control plane for CD: &lt;a href="https://keptn.sh" rel="noopener noreferrer"&gt;Keptn&lt;/a&gt; &amp;amp; &lt;a href="https://litmuschaos.io" rel="noopener noreferrer"&gt;LitmusChaos&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;(You can read more about Litmus &lt;a href="https://dev.to/t/litmuschaos"&gt;here&lt;/a&gt;)&lt;/p&gt;

&lt;h1&gt;
  
  
  Keptn: Cloud-Native Application Life-Cycle Orchestration
&lt;/h1&gt;

&lt;p&gt;Keptn is an open-source enterprise-grade cloud-native application life-cycle orchestration tool. Keptn orchestrates continuous delivery and operations of your applications and was built to help create an “Autonomous Cloud”, which essentially means enabling your organization to become more autonomous when deploying and operating your apps &amp;amp; services in the new multi-hybrid cloud platforms. Something that is termed “No-Ops” in the broader community. It can integrate with monitoring and observability platforms thanks to its event-driven architecture, with the communication being achieved using &lt;a href="https://cloudevents.io/" rel="noopener noreferrer"&gt;CloudEvents&lt;/a&gt; (itself an incubating CNCF project). &lt;/p&gt;

&lt;p&gt;A major use case of Keptn within Kubernetes involves defining a pipeline with one or more stages for deployment, testing, and remediation strategies. A sequence in Keptn typically starts with the deployment of an application into one of the pre-prod namespaces (the images or spec of this deployment can be the artifact of a CI process, with Keptn integrating into popular CI frameworks like Jenkins or Travis CI), followed by other stages that can trigger tests and evaluate the operational characteristics of the application before subjecting it to a quality-gate evaluation, as part of which predefined SLOs (essentially rules created against SLIs derived from Prometheus, Dynatrace, or other sources) are validated. The success of this eval results in “promoting” an application to the next phase, say, deploy into production. Keptn also supports remediation based on certain observations in production, and provides flexibility in being installed/used for a specific use-case (CD/QualityGating), etc., &lt;/p&gt;

&lt;p&gt;At the core of Keptn’s philosophy is GitOps &amp;amp; Code/Config generation (it stores all of its configurations in an internal Git repository that can be connected with Github/other Git-based SCM, and applies changes from the Git repository to your environment). All of Keptn’s stages and artifacts (right from applications, core services to SLOs) powering the pipeline are git-controlled and a lot of complexity is abstracted away from users via simple CLI operations (it provides APIs too) that generate the config specs.&lt;/p&gt;

&lt;h1&gt;
  
  
  Litmus Service in Keptn
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffjnw43qpd3natg28lxbs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Ffjnw43qpd3natg28lxbs.png" alt="Alt Text" width="436" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The litmus world has been witnessing a steady increase in the number of “chaos left-shift” use cases. This also led us to share ways of introducing litmus chaos experiments into &lt;a href="https://dev.to/uditgaurav/litmuschaos-gitlab-remote-templates-6l2"&gt;Gitlab&lt;/a&gt; &amp;amp; &lt;a href="https://www.armory.io/blog/litmuschaos-in-your-spinnaker-pipeline/" rel="noopener noreferrer"&gt;spinnaker&lt;/a&gt; pipelines. As members of a community working on a framework that is &lt;em&gt;(a) built grounds-up to be GitOps friendly&lt;/em&gt; and &lt;em&gt;(b) has a conscience aligned with “principles of chaos”&lt;/em&gt;,  we were committed to finding a means to bring in the “hypothesis” &amp;amp; “SLO” elements into “pipeline-led” chaos. &lt;a href="https://dev.to/ispeakc0de/declarative-approach-to-chaos-hypothesis-using-litmus-probes-5157"&gt;Litmus Probes&lt;/a&gt; feature was one of the first results of this introspection and today it provides a way to define “expectations” out of your infrastructure or application under chaos, with the diversity of definitions ranging from service availability to metrics &amp;amp; K8s resource states. &lt;/p&gt;

&lt;p&gt;It was during this time that we learned about the Keptn project. We were immediately impressed by its capabilities and especially its well-defined outlook on “Quality Gating”. While probes are limited in their scope to individual experiments, there was a need for evaluating SLOs at a broader level, across “periods” of chaotic activity. And by this, we mean the period in which applications are subjected to &lt;em&gt;real-world load&lt;/em&gt; and &lt;em&gt;real-world failures&lt;/em&gt; (one or more, run in sequence or in parallel). Keptn’s event-driven infrastructure provides just that. It evaluates SLOs (described by a simple and easy to understand configuration file) for the period of time the “test”, in this case, the &lt;em&gt;real world load&lt;/em&gt;, is run while also allowing for chaos injections to happen in the background to simulate the &lt;em&gt;real-world failures&lt;/em&gt;. All the control data being maintained as cloudevents makes it convenient to visualize &amp;amp; consume - with the Keptn Bridge (dashboard) offering a useful view of how each event has played out &amp;amp; displaying the evaluation results. &lt;/p&gt;

&lt;p&gt;Another feature worth mentioning here is that the Keptn control plane runs a single dedicated service for each integration, that acts on all pipelines being executed in the system. This brings about a low-touch approach to managing pipelines &amp;amp; abstracts away the complexities of “integrating” new chaos tests. &lt;/p&gt;

&lt;p&gt;Considering all this &amp;amp; with excellent support from the Keptn team, we wrote up a &lt;strong&gt;&lt;a href="https://github.com/keptn-sandbox/litmus-service" rel="noopener noreferrer"&gt;litmus service&lt;/a&gt;&lt;/strong&gt; that can now help to inject “chaos” into any stage of a Keptn pipeline. Functionality-wise, it acts on the “deployment finished” cloudevent and triggers chaos on the app deployed in a pre-prod namespace, while at the same time, out-of-the-box stress tools generate a user-defined load profile against it. Leading us to the insights and benefits discussed earlier. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2kwcjfitv35e5lxeg446.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2kwcjfitv35e5lxeg446.png" alt="Alt Text" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Trying out the Litmus Service with a Demo Pipeline On Keptn
&lt;/h1&gt;

&lt;p&gt;Once we had the integration working, we showcased it to the community via a webinar to share our learnings and also to encourage the community in trying it out! During this presentation, we demonstrated a simple Keptn pipeline that attempts to verify the resiliency of a “hello-service” using Litmus.&lt;/p&gt;

&lt;p&gt;You can find the presentation here: &lt;a href="https://docs.google.com/presentation/d/1ZFEwXqFIkpicM5-aRkLinWh8AWjombkg1d0Y-Z1DC68/edit#slide=id.p1" rel="noopener noreferrer"&gt;https://docs.google.com/presentation/d/1ZFEwXqFIkpicM5-aRkLinWh8AWjombkg1d0Y-Z1DC68/edit#slide=id.p1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In part-2 of this blog series, we will discuss how you can reproduce the demo steps and along the way revisit &amp;amp; appreciate concepts that we have discussed in this article. &lt;/p&gt;

&lt;p&gt;Stay tuned!! &lt;/p&gt;




&lt;p&gt;Are you an SRE, developer, or a Kubernetes enthusiast? Does Chaos Engineering excite you? Join our community on &lt;a href="//slack.litmuschaos.io"&gt;Slack&lt;/a&gt; For detailed discussions &amp;amp; regular updates On Chaos Engineering For Kubernetes.&lt;/p&gt;

&lt;p&gt;Check out the LitmusChaos &lt;a href="https://github.com/litmuschaos/litmus" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt; and do share your feedback. Submit a pull request if you identify any necessary changes.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>litmuschaos</category>
      <category>testing</category>
      <category>devops</category>
    </item>
    <item>
      <title>Deployment Modes in LitmusChaos</title>
      <dc:creator>Karthik Satchitanand</dc:creator>
      <pubDate>Wed, 02 Sep 2020 03:14:00 +0000</pubDate>
      <link>https://dev.to/litmus-chaos/deployment-modes-in-litmuschaos-1bpa</link>
      <guid>https://dev.to/litmus-chaos/deployment-modes-in-litmuschaos-1bpa</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Chaos Engineering as a practice is something that is steadily pervading various stages of the microservices development life cycle, with different persona (across the spectrum, right from app developers to SREs, DevOps functions maintaining CI pipelines to service owners) making use of it to ensure resilience, albeit with contextual differences. Thereby, it is expected that the chaos frameworks today lend themselves to operating in different modes: considering the permissions, security constraints &amp;amp; allowed blast radius these personas operate with. &lt;/p&gt;

&lt;p&gt;In this blog, we shall discuss the various deployment/operational modes within &lt;a href="https://dev.to/umamukkara/introduction-to-litmuschaos-4ibl"&gt;Litmus&lt;/a&gt;, that takes into consideration these different personas &amp;amp; provides steps to install it in a specific mode using helm. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: It is assumed that readers have had a chance to &lt;a href="https://dev.to/uditgaurav/get-started-with-litmuschaos-in-minutes-4ke1"&gt;try-out&lt;/a&gt; litmus chaos experiments and are aware of the chaos operator, chaos CRDs &amp;amp; the &lt;a href="https://hub.litmuschaos.io" rel="noopener noreferrer"&gt;chaoshub&lt;/a&gt;. The subsequent sections can be understood better with this knowledge.&lt;/em&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Modes of Execution in LitmusChaos
&lt;/h2&gt;

&lt;p&gt;While the essential nature of the litmus chaos operator in terms of the ability to orchestrate chaos and that of a given experiment to inject a specific fault remains the same across different modes, their scope (cluster-wide v/s namespaced) and impact differ. As you may have guessed already, this corresponds to the way the RBAC is set up for the litmus components &amp;amp; operator's watch range. &lt;/p&gt;

&lt;h3&gt;
  
  
  Admin Mode
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Persona&lt;/strong&gt;: An SRE or a cluster-admin with complete autonomy over the cluster who wants to centralize chaos operations and avoid the need to place the chaos components in multiple target namespaces. He/She is also the executor of the chaos, so pulls the experiment CRs from the hub, tunes &amp;amp; runs them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Operational Characteristics&lt;/strong&gt;: The chaos operator is installed in a central admin ns (typically &lt;code&gt;litmus&lt;/code&gt;) along with a &lt;em&gt;superset&lt;/em&gt; cluster-wide RBAC that can execute all supported chaos experiments, including those against node resources. The operator is set up to watch for ChaosEngine CRs created in the &lt;strong&gt;same&lt;/strong&gt; admin namespace, though the target application can reside in a different namespace (specified by &lt;code&gt;.spec.appinfo.appns&lt;/code&gt; in the ChaosEngine CR). This ensures that all the chaos resources (chaos experiment CRs, runner/experiment/helper pods, chaosresult CRs) are maintained within the same admin namespace. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Steps to Deploy&lt;/strong&gt;: The &lt;a href="https://hub.helm.sh/charts/litmuschaos/litmus" rel="noopener noreferrer"&gt;litmus&lt;/a&gt; helm chart consists of a flag in the values.yaml to specify the mode:  &lt;code&gt;operatorMode&lt;/code&gt; which can be set to &lt;code&gt;admin&lt;/code&gt; during install.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl create ns litmus
helm repo add litmuschaos https://litmuschaos.github.io/litmus-helm/
helm install litmuschaos/litmus --version 1.7.0 --set operatorMode=admin
kubectl apply -f https://hub.litmuschaos.io/api/chaos/1.7.0?file=charts/generic/experiments.yaml -n litmus 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Standard Mode
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Persona&lt;/strong&gt;: Chaos execution is delegated to &lt;em&gt;service owners&lt;/em&gt; in staging/prod environments with varying degrees of permissions, while the operator continues to reside in a central/admin namespace. The expectation in this mode is for the SRE/cluster-admin to install the litmus infra components (operator, CRDs) beforehand, with the operator being set up to watch ChaosEngine CRs across namespaces. This is done considering that individual service owners can create chaos resources (ChaosExperiment CRs installed from the hub, ChaosEngine CRs) in the (app/service) namespaces where they have access. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Operational Characteristics&lt;/strong&gt;: While technically quite similar to the admin mode (the operator continues to remain in a central ns &amp;amp; orchestrate chaos across apps), here the executor of chaos is different &amp;amp; the service owners are expected to use their own ChaosServiceAccounts (or use the recommended per-experiment RBAC available on the chaoshub) for chaos execution. The chaos pods (runner/experiment/helper) too are created in the service namespaces to aid in better visibility/debug. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Steps to Deploy&lt;/strong&gt;: The &lt;code&gt;operatorMode&lt;/code&gt; should be set to &lt;code&gt;standard&lt;/code&gt; during install.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl create ns litmus
helm repo add litmuschaos https://litmuschaos.github.io/litmus-helm/
helm install litmuschaos/litmus --version 1.7.0 --set operatorMode=standard
kubectl apply -f https://hub.litmuschaos.io/api/chaos/1.7.0?file=charts/generic/experiments.yaml -n &amp;lt;service/app-namespace&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Namespaced Mode
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Persona&lt;/strong&gt;: All chaos operations (infra setup, orchestration, and chaos execution) are managed by developers/DevOps engineers in their respective namespaces in a strictly multi-tenant environment, where the persona doesn't have access to cluster-wide resources like nodes, crds and is generally restricted from running with elevated privileges, mounting hostpath/file volumes, etc., This mode of operation is especially useful in SaaS-based environments providing Kubernetes namespaces for use, for example, &lt;a href="https://dev.to/okteto/chaos-engineering-with-litmus-and-okteto-cloud-2p3l"&gt;Okteto Cloud&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Operational Characteristics&lt;/strong&gt;: In this mode, the operator is installed in the user's namespace and is set up to target applications it is co-residing with, i.e., in the same namespace. Needless to say, the operator also expects &amp;amp; creates chaos CRs (ChaosExperiment &amp;amp; ChaosEngine) and pods (runner/experiment/helper pods) in the same namespace, respectively. However, the use of namespaced mode requires the custom resource definitions (CRDs) to be pre-installed on the cluster by the admin before the users can attempt the operator installation.    &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Steps to Deploy&lt;/strong&gt;: The &lt;code&gt;operatorMode&lt;/code&gt; should be set to &lt;code&gt;namespaced&lt;/code&gt; during install with the &lt;code&gt;--skip-crds&lt;/code&gt; flag used to ensure CRD install is not attempted.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;helm repo add litmuschaos https://litmuschaos.github.io/litmus-helm/
helm install litmuschaos/litmus --version 1.7.0 --set operatorMode=namespaced --namespace &amp;lt;developer-namespace&amp;gt; --skip-crds
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Note&lt;/em&gt;: In the namespaced mode, only pod-level chaos experiments can be executed. &lt;/p&gt;

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

&lt;p&gt;As of today, there is a sizeable ratio of usage across the different modes in the litmus community, with &lt;code&gt;standard&lt;/code&gt; being the more commonly used one (which is the reason it is set as the default mode). Having said that, this is one aspect of the framework that we are betting on seeing changes to continuously, considering the rapid improvements in the Kubernetes ecosystem around role-based access, security &amp;amp; also the constant evolution around deployment practices. For now, though, we would love to get your feedback on the current options and which one you prefer most! &lt;/p&gt;




&lt;p&gt;Are you an SRE or a Kubernetes enthusiast? Does Chaos Engineering excite you? Join our community on &lt;a href="//slack.litmuschaos.io"&gt;Slack&lt;/a&gt; For detailed discussions &amp;amp; regular updates On Chaos Engineering For Kubernetes.&lt;/p&gt;

&lt;p&gt;Check out the LitmusChaos &lt;a href="https://github.com/litmuschaos/litmus" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt; and do share your feedback. Submit a pull request if you identify any necessary changes.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>helm</category>
      <category>litmuschaos</category>
      <category>devops</category>
    </item>
    <item>
      <title>Litmus SDK: DevTest your chaos experiments with Okteto</title>
      <dc:creator>Karthik Satchitanand</dc:creator>
      <pubDate>Fri, 14 Aug 2020 12:16:04 +0000</pubDate>
      <link>https://dev.to/litmus-chaos/litmus-sdk-devtest-your-chaos-experiments-with-okteto-4dkj</link>
      <guid>https://dev.to/litmus-chaos/litmus-sdk-devtest-your-chaos-experiments-with-okteto-4dkj</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;The Litmus developer community is not unfamiliar with the scaffolding utilities that the project provides to bootstrap chaos experiment code. There is a cool &lt;a href="https://dev.to/ispeakc0de/getting-started-with-litmus-sdk-358l"&gt;blog&lt;/a&gt; about it too. While the procedure helped developers get started quickly by generating all the necessary artifacts &amp;amp; laying out the standard experiment sequence, performing developer testing (popularly called DevTest) before the experiment got added into the &lt;a href="https://litmuschaos.github.io/litmus-e2e/" rel="noopener noreferrer"&gt;litmus-e2e&lt;/a&gt; for regular pipeline runs was still a &lt;em&gt;tad&lt;/em&gt; cumbersome. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why Dev Testing On the Cluster is Necessary
&lt;/h2&gt;

&lt;p&gt;As with any application for Kubernetes, the chaos experiments need to be tested, as we code along, in a Kubernetes cluster. While one can still run the experiment binaries by providing the right config (or the KUBECONFIG env variable), the developer is bound to make multiple runs with the experiment business logic running out of a pod in the cluster, as that is the eventual execution mode. This becomes especially important when these experiments need to be injected with config information in the form of ENV variables, config maps, secrets, or if they make use of host files at runtime. &lt;/p&gt;

&lt;p&gt;Sometimes, the experiment may need to be run with a specific set of permissions or security policies, in which case the operational characteristics and experiment stability can be known only when it is run on an appropriate cluster environment. &lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem Statement
&lt;/h2&gt;

&lt;p&gt;Until now, this was being achieved by building Kubernetes Job manifests with all the run characteristics burned into the spec &amp;amp; running a private docker image from the developer's repository. However, in this model, any fixes/corrections, or enhancements would mean repeating the cycle - &lt;em&gt;Fix Code -&amp;gt; Build Experiment -&amp;gt; Build Docker Image -&amp;gt; Push Docker Image -&amp;gt; Re-run Kubernetes Experiment Job&lt;/em&gt;. While one could churn out a quick script to do this, you would still need to maintain it &amp;amp; also update it for different experiments' needs. I would like to avoid this additional complexity, wouldn't you? &lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing Okteto
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/okteto/okteto" rel="noopener noreferrer"&gt;Okteto&lt;/a&gt; is a popular open-source project that enables you to perform what is called as "in-cluster development" by spinning up a dev environment (essentially a Kubernetes deployment on the cluster with the right base image replete with your favorite dev tools, described by a simple &lt;em&gt;okteto.yaml&lt;/em&gt; manifest) consisting of the application source code. The terminal for this development container is provided right within your workspace, with any code changes made on your IDE getting reflected on the dev containers via a sync mechanism. This enables developers to run the latest code directly in the cluster, thereby accelerating what the Okteto community calls the "inner loop of development". &lt;/p&gt;

&lt;h2&gt;
  
  
  Okteto for Litmus Chaos Experiments
&lt;/h2&gt;

&lt;p&gt;While Okteto is pretty nifty &amp;amp; helps people develop in the cluster, as the Litmus dev team, we needed a mechanism where the development container is spun-up with exactly the same dependencies and config parameters that the &lt;em&gt;specific&lt;/em&gt; experiment desires. For example, the network chaos experiments need a different set of configuration params passed, to, say, a disk-based experiment. Here is where the &lt;strong&gt;swap&lt;/strong&gt; mode of Okteto helps. While okteto can launch custom dev environments for your code, it can also swap container images on &lt;em&gt;existing deployments&lt;/em&gt;, thereby inheriting all its properties. Here is a nice &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-develop-applications-on-kubernetes-with-okteto" rel="noopener noreferrer"&gt;blog&lt;/a&gt; explaining this with a simple demo app.  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fe19seq815posxhuzhuno.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fe19seq815posxhuzhuno.jpg" alt="Alt Text" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Based on this knowledge, we decided to tweak the scaffold utilities to generate a &lt;em&gt;test&lt;/em&gt; deployment with the standard chaos experiment ENVs/other config details burned into the spec (such as the experiment-specific RBAC/service account), while using a busybox image that does nothing - instead of the experiment job spec, that you have been used to seeing. With this, you could update the manifest to include any missing info, deploy it on the cluster and eventually use okteto to swap the image on this deployment to that of the development container to kickstart your dev-test process. &lt;/p&gt;

&lt;h2&gt;
  
  
  Steps to Perform DevTest of Litmus Chaos Experiments
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: Refer to the previous (part-1) &lt;a href="https://dev.to/ispeakc0de/getting-started-with-litmus-sdk-358l"&gt;blog&lt;/a&gt; to go through the steps to bootstrap your experiment code. For the subsequent instructions, I assume you have gone through these initial steps. By this point, you must: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Have already cloned the &lt;a href="https://github.com/litmuschaos/litmus-go" rel="noopener noreferrer"&gt;litmus-go&lt;/a&gt; repository (your fork, that is.)&lt;/li&gt;
&lt;li&gt;Live at the path &lt;code&gt;litmus-go/contribute/developer-guide&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Have generated the experiment artifacts &amp;amp; written the first-cut business logic of the chaos experiment &lt;/li&gt;
&lt;li&gt;Have access to a dev cluster (minikube or the like) with the kubeconfig setup from your workspace. You could also use the &lt;a href="https://cloud.okteto.com/" rel="noopener noreferrer"&gt;Okteto Cloud&lt;/a&gt; which allows you a free namespace with enough resources and even SSL endpoints for your apps!!) &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now, let's get testing our changes in the cluster!! &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install the Okteto CLI
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  curl https://get.okteto.com -sSfL | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;(Optional) Create a sample nginx deployment that can be used as 
the application under test (AUT).
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  kubectl create deployment nginx --image=nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Setup the RBAC necessary for execution of this experiment by 
applying the generated &lt;code&gt;rbac.yaml&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;  kubectl apply -f rbac.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Modify the &lt;code&gt;test/test.yaml&lt;/code&gt; with the desired values (app &amp;amp; chaos 
info) in the ENV and appropriate &lt;code&gt;chaosServiceAccount&lt;/code&gt; along 
with any other dependencies, if applicable (configmaps, volumes 
etc.,) &amp;amp; create this deployment
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  kubectl apply -f test/test.yml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Go to the root of this repository (litmuschaos/litmus-go) &amp;amp; 
launch the Okteto development environment in your workspace.
This should take you to the bash prompt on the dev container into which the content of the litmus-go repo is loaded.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  root@test:~/okteto/litmus-go# okteto up 

  Deployment litmus-go doesn't exist in namespace litmus. Do you want to create a new one? [y/n]: y
  ✓  Development container activated
  ✓  Files synchronized

  The value of /proc/sys/fs/inotify/max_user_watches in your 
  cluster nodes is too low. This can affect file synchronization 
  performance.

  Visit https://okteto.com/docs/reference/known-issues/index.html 
  for more information.
      Namespace: default
      Name:      litmus-experiment
      Forward:   2345 -&amp;gt; 2345
                 8080 -&amp;gt; 8080

  Welcome to your development container. Happy coding!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This dev container inherits the env, serviceaccount &amp;amp; other &lt;br&gt;
  properties specified on the test deployment &amp;amp; is now suitable &lt;br&gt;
  for running the experiment.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Execute the experiment against the sample app chosen &amp;amp; verify 
the steps via logs printed on the console.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  go run experiments/&amp;lt;chaos-category&amp;gt;/&amp;lt;experiment 
  name&amp;gt;/&amp;lt;experiment-name&amp;gt;.go
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;In parallel, observe the experiment execution via the changes to 
the chaos &amp;amp; application pods
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;If there are necessary changes to the code based on the run, &lt;br&gt;
make them via your favorite IDE. These changes are automatically reflected in the dev container. Re-run the experiment to confirm changes. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once the experiment code is validated, stop/remove the &lt;br&gt;
development environment&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  root@test:~/okteto/litmus-go# okteto down
  ✓  Development container deactivated
  i  Run 'okteto push' to deploy your code changes to the cluster
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;You could also run a final test using the ChaosExperiment CR with the final (pushed image) image &amp;amp; a ChaosEngine CR mapping the experiment to the sample app we used earlier. For this, you would need the chaos operator running on the cluster along with the chaos CRDs installed. This is a breeze in the Okteto Cloud, which provides you with a &lt;a href="https://cloud.okteto.com/#/spaces/@personal?deploy=litmuschaos" rel="noopener noreferrer"&gt;single click&lt;/a&gt; install of the litmus infra. &lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;As the Litmus community, we are always on the lookout for collaborating with cool projects &amp;amp; build/adopt techniques to simplify your life as chaos engineers &amp;amp; litmus developers. Give this a try &amp;amp; let us know your feedback!! &lt;/p&gt;




&lt;p&gt;Are you an SRE or a Kubernetes enthusiast? Does Chaos Engineering excite you? Join our community on &lt;a href="//slack.litmuschaos.io"&gt;Slack&lt;/a&gt; For detailed discussions &amp;amp; regular updates On Chaos Engineering For Kubernetes.&lt;/p&gt;

&lt;p&gt;Check out the LitmusChaos &lt;a href="https://github.com/litmuschaos/litmus" rel="noopener noreferrer"&gt;GitHub repo&lt;/a&gt; and do share your feedback. Submit a pull request if you identify any necessary changes.&lt;/p&gt;

</description>
      <category>litmuschaos</category>
      <category>kubernetes</category>
      <category>testing</category>
      <category>devops</category>
    </item>
    <item>
      <title>Monitoring Litmus Chaos Experiments</title>
      <dc:creator>Karthik Satchitanand</dc:creator>
      <pubDate>Wed, 22 Jul 2020 19:46:09 +0000</pubDate>
      <link>https://dev.to/litmus-chaos/monitoring-litmus-chaos-experiments-198a</link>
      <guid>https://dev.to/litmus-chaos/monitoring-litmus-chaos-experiments-198a</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;em&gt;Without Observability, there is no Chaos Engineering&lt;/em&gt;&lt;/strong&gt;. This is a line that I picked from a nice &lt;a href="https://devopsinstitute.com/2020/06/11/the-practice-of-chaos-engineering-observability/" rel="noopener noreferrer"&gt;article&lt;/a&gt; on chaos, and I couldn't agree more. The very nature of voluntary chaos injection demands that we have the right monitoring aids to validate our experiment's hypothesis around application/microservices behavior. Typically, that can be mapped to &lt;a href="https://blog.appoptics.com/the-four-golden-signals-for-monitoring-distributed-systems/" rel="noopener noreferrer"&gt;The Four Golden Signals&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;Having said that, observability in itself has many facets, just as chaos engineering does. Chaos not only helps test resiliency in terms of service availability (HA), it is also a means to refine alerting and notification mechanisms, streamline the incident response structure and measure key performance indicators (KPIs) such as mean time to detect an anomaly (MTTD), mean time to recovery, say, to optimal performance (MTTR) and sometimes even the time to resolve (another MTTR!), either via self-heal or manual effort, in cases where the chaos experiment is deliberately executed with a high blast radius. There are several tools one could employ today to obtain and visualize this data, which is the other facet to observability that I mentioned earlier. Some tools can even help with automated Root Cause Analysis. Check out this &lt;a href="https://www.youtube.com/watch?v=ju4OrEoNr50" rel="noopener noreferrer"&gt;cool demo&lt;/a&gt; by folks from &lt;a href="https://www.zebrium.com/" rel="noopener noreferrer"&gt;Zebrium&lt;/a&gt; which demonstrates automated detection of incidents induced via Litmus Chaos experiments.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;While there is a lot to discuss and learn about the Whys &amp;amp; Hows of observability with chaos engineering, in this blog we shall get started with a simple means of mapping application behavior with chaos ongoings, i.e., find a way to juxtapose application metrics with chaos events. And to do that, we will make use of the de-facto open-source monitoring stack of Prometheus &amp;amp; Grafana. This is intended to get you rocking on your chaos observability journey, which will get more exciting with continuous enhancements being added into the LitmusChaos framework&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Test Bed
&lt;/h2&gt;

&lt;p&gt;What better than the sock-shop demo application to learn about microservices behavior? A quick set of commands should get you started. A Kubernetes cluster is all you need! &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Obtain the demo artefacts
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git clone https://github.com/litmuschaos/chaos-observability.git
cd chaos-observability/sample-application/sock-shop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Setup Sock-Shop Microservices Application
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl create ns sock-shop
kubectl apply -f deploy/sock-shop/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Verify that the sock-shop microservices are running
&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 pods -n sock-shop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Setup the LitmusChaos Infrastructure
&lt;/li&gt;
&lt;/ul&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/litmus/litmus-operator-v1.6.0.yaml
kubectl apply -f https://litmuschaos.github.io/litmus/litmus-admin-rbac.yaml
kubectl apply -f https://hub.litmuschaos.io/api/chaos/1.6.0?file=charts/generic/experiments.yaml -n litmus 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Monitoring Aids
&lt;/h2&gt;

&lt;p&gt;The LitmusChaos framework provides various Kubernetes chaos events against the ChaosEngine &amp;amp; ChaosResult custom resources, right from the pre-chaos validation checks, through chaos injection and post-chaos health checks in order to trace the ongoings over the course of the chaos experiment. Converting these events into metrics is a great way to integrate with existing off-the-shelf application dashboards to gain a clear understanding of application behavior through chaos injection and revert actions.  &lt;/p&gt;

&lt;p&gt;In this exercise, we make use of Heptio's &lt;a href="https://github.com/heptiolabs/eventrouter" rel="noopener noreferrer"&gt;event router&lt;/a&gt; to convert the chaos events into metrics and then instrument the standard sock-shop application's Grafana dashboard with appropriate queries to achieve our goal. &lt;/p&gt;

&lt;h2&gt;
  
  
  Setup the Monitoring Infrastructure
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Step-1: Lets setup the event router with the HTTP sink to convert the kube cluster events into metrics.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f deploy/litmus-metrics/01-event-router-cm.yaml
kubectl apply -f deploy/litmus-metrics/02-event-router.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Step-2: We will set up Prometheus &amp;amp; Grafana deployments with NodePort (you could change it to Loadbalancer if you prefer) services
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f deploy/monitoring/01-monitoring-ns.yaml
kubectl apply -f deploy/monitoring/02-prometheus-rbac.yaml
kubectl apply -f deploy/monitoring/03-prometheus-configmap.yaml
kubectl apply -f deploy/monitoring/04-prometheus-alert-rules.yaml
kubectl apply -f deploy/monitoring/05-prometheus-deployment.yaml
kubectl apply -f deploy/monitoring/06-prometheus-svc.yaml
kubectl apply -f deploy/monitoring/07-grafana-deployment.yaml
kubectl apply -f deploy/monitoring/08-grafana-svc.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Step-3: Access the grafana dashboard via the NodePort (or loadbalancer) service IP &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: To change the service type to Loadbalancer, perform a &lt;br&gt;
 &lt;code&gt;kubectl edit svc prometheus -n monitoring&lt;/code&gt; and replace type: &lt;br&gt;
 &lt;code&gt;NodePort&lt;/code&gt; to &lt;code&gt;type: LoadBalancer&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;  kubectl get svc -n monitoring 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Default username/password credentials: admin/admin&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Step-4: Add the Prometheus datasource for Grafana via the Grafana Settings menu&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F90xfvsqchfe80mhlc8mf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F90xfvsqchfe80mhlc8mf.png" alt="Alt Text" width="800" height="289"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Step-5: Import the grafana dashboard "Sock-Shop Performance" provided &lt;a href="https://raw.githubusercontent.com/ksatchit/sock-shop/master/deploy/monitoring/10-grafana-dashboard.json" rel="noopener noreferrer"&gt;here&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F510lxfokwkwv7lvhpw85.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F510lxfokwkwv7lvhpw85.png" alt="Alt Text" width="800" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Execute the Chaos Experiments
&lt;/h2&gt;

&lt;p&gt;For the sake of illustration, let us execute a CPU hog experiment on the catalog microservice &amp;amp; a Memory Hog experiment on the orders microservice in a staggered manner&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 chaos/catalogue/catalogue-cpu-hog.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Wait for ~60s&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 chaos/orders/orders-memory-hog.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify execution of chaos experiments&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl describe chaosengine catalogue-cpu-hog -n litmus
kubectl describe chaosengine orders-memory-hog -n litmus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Visualize Chaos Impact
&lt;/h2&gt;

&lt;p&gt;Observe the impact of chaos injection through increased Latency &amp;amp; reduced QPS (queries per second) on the microservices under test.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2f0x6f6yxngnb6vnobea.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F2f0x6f6yxngnb6vnobea.png" alt="Alt Text" width="800" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F065z5nlcfqn6t2ugejzr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F065z5nlcfqn6t2ugejzr.png" alt="Alt Text" width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;As you can see, this is an attempt to co-relate application stats to the failure injected, and hence a good starting point in your chaos monitoring journey. Try this out &amp;amp; share your feedback! A lot more can be packed into the dashboards to make the visualization more intuitive. Join us in this effort and be part of SIG-Observability within LitmusChaos!!&lt;/p&gt;

&lt;p&gt;Are you an SRE or a Kubernetes enthusiast? Does Chaos Engineering excite you?&lt;br&gt;
Join Our Community On Slack For Detailed Discussion, Feedback &amp;amp; Regular Updates On Chaos Engineering For Kubernetes: &lt;a href="https://kubernetes.slack.com/messages/CNXNB0ZTN" rel="noopener noreferrer"&gt;https://kubernetes.slack.com/messages/CNXNB0ZTN&lt;/a&gt;&lt;br&gt;
(#litmus channel on the Kubernetes workspace)&lt;br&gt;
Check out the Litmus Chaos GitHub repo and do share your feedback: &lt;a href="https://github.com/litmuschaos/litmus" rel="noopener noreferrer"&gt;https://github.com/litmuschaos/litmus&lt;/a&gt;&lt;br&gt;
Submit a pull request if you identify any necessary changes.&lt;/p&gt;

</description>
      <category>kubernetes</category>
      <category>microservices</category>
      <category>litmuschaos</category>
      <category>observability</category>
    </item>
    <item>
      <title>Chaos Workflows with Argo and LitmusChaos</title>
      <dc:creator>Karthik Satchitanand</dc:creator>
      <pubDate>Tue, 23 Jun 2020 17:31:27 +0000</pubDate>
      <link>https://dev.to/litmus-chaos/chaos-workflows-with-argo-and-litmuschaos-2po5</link>
      <guid>https://dev.to/litmus-chaos/chaos-workflows-with-argo-and-litmuschaos-2po5</guid>
      <description>&lt;p&gt;This previous &lt;a href="https://dev.to/umamukkara/chaos-engineering-for-cloud-native-systems-2fjn"&gt;post&lt;/a&gt; introduced LitmusChaos as a cloud-native chaos engineering framework, that provides both, native off-the-shelf chaos experiments as well as the ability to orchestrate experiments written in the BYOC (bring-your-own-chaos) mode. You may also have tried your hand with this quick &lt;a href="https://dev.to/uditgaurav/get-started-with-litmuschaos-in-minutes-4ke1"&gt;litmus demo&lt;/a&gt;. Exciting as it already is, we have seen one more usage pattern evolve in the Litmus community: Chaos Workflows. Does this sound like some word-play between two popular dev(git)ops practices? Let me explain in detail. &lt;/p&gt;

&lt;h2&gt;
  
  
  Is it sufficient to &lt;em&gt;just&lt;/em&gt; inject a failure?
&lt;/h2&gt;

&lt;p&gt;One of the common reasons for injecting chaos (or, as it is commonly known: running a chaos experiment) in a microservices environment is to validate one’s hypothesis about system behavior in an unexpected failure. Today, this is a well-established practice with a multitude of chaos injection tools built for the container (read: Kubernetes) ecosystem, enabling SREs to verify resilience in the pre-production and production environments. &lt;/p&gt;

&lt;p&gt;However, when &lt;em&gt;simulating&lt;/em&gt; real-world failures via chaos injection on development/staging environments as part of a left-shifted, continuous validation strategy, it is preferable to construct potential &lt;em&gt;failure sequence&lt;/em&gt; or &lt;em&gt;chaos workflow&lt;/em&gt; over executing standalone chaos injection actions. Often, this translates into failures &lt;em&gt;during&lt;/em&gt; a certain workload condition (such as, say, percentage load), multiple (parallel) failures of dependent &amp;amp; independent services, failures under (already) degraded infrastructure, etc. The observations and inferences from these exercises are invaluable in determining the overall resilience of the applications/microservices under question.&lt;/p&gt;

&lt;h2&gt;
  
  
  LitmusChaos + Argo = Chaos Workflows
&lt;/h2&gt;

&lt;p&gt;While this is already practiced in some form, manually, by developers &amp;amp; SREs via gamedays and similar methodologies, there is a need to automate this, thereby enabling repetition of these complex workflows with different variables (maybe a product fix, a change to deployment environment, etc.). One of the early adopters of the Litmus project, &lt;a href="https://www.youtube.com/watch?v=Uwqop-s99LA&amp;amp;feature=youtu.be&amp;amp;t=720" rel="noopener noreferrer"&gt;Intuit&lt;/a&gt;, used the container-native workflow engine, Argo, to execute their chaos experiments (in BYOC mode via &lt;a href="https://hub.litmuschaos.io/chaostoolkit/k8-pod-delete" rel="noopener noreferrer"&gt;chaostoolkit&lt;/a&gt;) orchestrated by LitmusChaos to achieve precisely this. The community recognized this as an extremely useful pattern, thereby giving rise to &lt;strong&gt;Chaos Workflows&lt;/strong&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Using Chaos Workflows as an aid for benchmark tests
&lt;/h2&gt;

&lt;p&gt;In this blog, let's look at one use-case of chaos workflows. We shall examine how chaos impacts an Nginx server's performance characteristics using a workflow that executes a standard benchmark job with pod-kill chaos operation in parallel. &lt;/p&gt;

&lt;h1&gt;
  
  
  Prepare the Chaos Environment
&lt;/h1&gt;

&lt;p&gt;In the next few sections, we shall lay the base for executing this workflow by setting up the infrastructure components.&lt;/p&gt;

&lt;h3&gt;
  
  
  Install Argo Workflow Infrastructure
&lt;/h3&gt;

&lt;p&gt;The Argo workflow infrastructure consists of the Argo workflow CRDs, Workflow Controller, associated RBAC &amp;amp; Argo CLI. The steps are shown below to install Argo in the standard cluster-wide mode, where the workflow controller operates on all namespaces. Ensure that you have the right permission to be able to create the said resources.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create argo namespace
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@demo:~/chaos-workflows# kubectl create ns argo
namespace/argo created
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Create the CRDs, workflow controller deployment with associated RBAC
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@demo:~/chaos-workflows# kubectl apply -f https://raw.githubusercontent.com/argoproj/argo/stable/manifests/install.yaml -n argo

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
serviceaccount/argo created
serviceaccount/argo-server created
role.rbac.authorization.k8s.io/argo-role created
clusterrole.rbac.authorization.k8s.io/argo-aggregate-to-admin configured
clusterrole.rbac.authorization.k8s.io/argo-aggregate-to-edit configured
clusterrole.rbac.authorization.k8s.io/argo-aggregate-to-view configured
clusterrole.rbac.authorization.k8s.io/argo-cluster-role configured
clusterrole.rbac.authorization.k8s.io/argo-server-cluster-role configured
rolebinding.rbac.authorization.k8s.io/argo-binding created
clusterrolebinding.rbac.authorization.k8s.io/argo-binding unchanged
clusterrolebinding.rbac.authorization.k8s.io/argo-server-binding unchanged
configmap/workflow-controller-configmap created
service/argo-server created
service/workflow-controller-metrics created
deployment.apps/argo-server created
deployment.apps/workflow-controller created
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Install the argo CLI on the test harness machine (where the kubeconfig is available)
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@demo:~# curl -sLO https://github.com/argoproj/argo/releases/download/v2.8.0/argo-linux-amd64

root@demo:~# chmod +x argo-linux-amd64

root@demo:~# mv ./argo-linux-amd64 /usr/local/bin/argo

root@demo:~# argo version
argo: v2.8.0
BuildDate: 2020-05-11T22:55:16Z
GitCommit: 8f696174746ed01b9bf1941ad03da62d312df641
GitTreeState: clean
GitTag: v2.8.0
GoVersion: go1.13.4
Compiler: gc
Platform: linux/amd64
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Install a Sample Application: Nginx
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Install a simple multi-replica stateless Nginx deployment with service exposed over nodeport
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@demo:~# kubectl apply -f https://raw.githubusercontent.com/litmuschaos/chaos-workflows/master/App/nginx.yaml

deployment.extensions/nginx created
root@demo:~# kubectl apply -f https://raw.githubusercontent.com/litmuschaos/chaos-workflows/master/App/service.yaml 
service/nginx created

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

&lt;/div&gt;

&lt;h3&gt;
  
  
  Install Litmus Infrastructure
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Apply the LitmusChaos Operator manifest:
&lt;/li&gt;
&lt;/ul&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/litmus/litmus-operator-v1.5.0.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Install the litmus-admin service account to be used by the chaos-operator while executing the experiment.
&lt;/li&gt;
&lt;/ul&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/litmus/litmus-admin-rbac.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Install the Chaos experiment of choice (in this example, we pick a pod-delete experiment)
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f https://hub.litmuschaos.io/api/chaos/master?file=charts/generic/pod-delete/experiment.yaml -n litmus
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Create the Argo Access ServiceAccount
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Create the service account and associated RBAC, which will be used by the Argo workflow controller to execute the actions specified in the workflow. In our case, this corresponds to the launch of the Nginx benchmark job and creating the chaosengine to trigger the pod-delete chaos action. In our example, we place it in the namespace where the litmus chaos resources reside, i.e., litmus.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@demo:~# kubectl apply -f https://raw.githubusercontent.com/litmuschaos/chaos-workflows/master/Argo/argo-access.yaml -n litmus

serviceaccount/argo-chaos created
clusterrole.rbac.authorization.k8s.io/chaos-cluster-role created
clusterrolebinding.rbac.authorization.k8s.io/chaos-cluster-role-binding created

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

&lt;/div&gt;

&lt;h1&gt;
  
  
  Nginx traffic characteristics during a non-chaotic benchmark run
&lt;/h1&gt;

&lt;p&gt;Before proceeding with the chaos workflows, let us first look at how the benchmark run performs under normal circumstances &amp;amp; what are the properties of note.&lt;/p&gt;

&lt;p&gt;To achieve this: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Let us run a simple Kubernetes job that internally executes an apache-bench test on the Nginx service with a standard input of 10000000 requests over a 300s period.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@demo:~# kubectl create -f https://raw.githubusercontent.com/litmuschaos/chaos-workflows/master/App/nginx-bench.yaml

job.batch/nginx-bench-c9m42 created
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ul&gt;
&lt;li&gt;Observe the output post the 5 min duration &amp;amp; note the failed request count. Usually, it is 0, i.e., there was no disruption in Nginx traffic.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@demo:~# kubectl logs -f nginx-bench-zq689-6mnrm

2020/06/23 01:42:29 Running: ab -r -c10 -t300 -n 10000000 http://nginx.default.svc.cluster.local:80/
2020/06/23 01:47:35 This is ApacheBench, Version 2.3 &amp;lt;$Revision: 1706008 $&amp;gt;
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking nginx.default.svc.cluster.local (be patient)
Finished 808584 requests


Server Software:        nginx/1.19.0
Server Hostname:        nginx.default.svc.cluster.local
Server Port:            80

Document Path:          /
Document Length:        612 bytes

Concurrency Level:      10
Time taken for tests:   300.001 seconds
Complete requests:      808584
Failed requests:        0
Total transferred:      683259395 bytes
HTML transferred:       494857692 bytes
Requests per second:    2695.27 [#/sec] (mean)
Time per request:       3.710 [ms] (mean)
Time per request:       0.371 [ms] (mean, across all concurrent requests)
Transfer rate:          2224.14 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   0.7      0      25
Processing:     0    3   2.0      3      28
Waiting:        0    3   1.9      2      28
Total:          0    4   2.2      3      33
WARNING: The median and mean for the initial connection time are not within a normal deviation
        These results are probably not that reliable.

Percentage of the requests served within a certain time (ms)
  50%      3
  66%      4
  75%      5
  80%      5
  90%      7
  95%      8
  98%      9
  99%     11
 100%     33 (longest request)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h1&gt;
  
  
  Formulating a Hypothesis
&lt;/h1&gt;

&lt;p&gt;Typically, in most production deployments, the Nginx service is set up to guarantee specific SLAs in terms of tolerated errors, etc., While, say, under normal circumstances, the server performs as expected, it is also necessary to gauge how much degradation is seen for different levels of failures &amp;amp; what the cascading impact may be on others applications. The results obtained by inducing chaos may give us an idea on how best to manage the deployment (improved high availability configuration, resources allocated, replica counts, etc.,) to continue to meet the SLA despite a certain degree of failure (while that is an interesting topic to discuss for another day, we shall restrict the scope of this blog to demonstrating how workflows can be used!)&lt;/p&gt;

&lt;p&gt;In the next step, we shall execute a chaos workflow that runs the same benchmark job while a random pod-delete (Nginx replica failure) occurs and observe the degradation in the attributes we have noted: &lt;strong&gt;failed_requests&lt;/strong&gt;.&lt;/p&gt;
&lt;h1&gt;
  
  
  Create the Chaos Workflow
&lt;/h1&gt;

&lt;p&gt;Applying the workflow manifest performs the following actions in parallel:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Starts an Nginx benchmark job for the specified duration (300s)&lt;/li&gt;
&lt;li&gt;Triggers a random pod-kill of the Nginx replica by creating the chaosengine CR. Cleans up after chaos.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@demo:~# argo submit https://raw.githubusercontent.com/litmuschaos/chaos-workflows/master/Argo/argowf-native-pod-delete.yaml -n litmus
Name:                argowf-chaos-sl2cn
Namespace:           litmus
ServiceAccount:      argo-chaos
Status:              Pending
Created:             Fri May 15 15:31:45 +0000 (now)
Parameters:
  appNamespace:      default
  adminModeNamespace: litmus
  appLabel:          nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Visualize the Chaos Workflow
&lt;/h3&gt;

&lt;p&gt;You can visualize the progress of the chaos workflow via the Argo UI. Convert the argo-server service to type NodePort &amp;amp; view the dashboard at &lt;code&gt;https://&amp;lt;node-ip&amp;gt;:&amp;lt;nodeport&amp;gt;&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;root@demo:~# kubectl patch svc argo-server -n argo -p '{"spec": {"type": "NodePort"}}'
service/argo-server patched

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

&lt;/div&gt;


&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff3v2aibag1ybar68ojyu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff3v2aibag1ybar68ojyu.png" alt="image" width="346" height="558"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Observe the Nginx benchmark results
&lt;/h3&gt;

&lt;p&gt;Observing the Nginx benchmark results over 300s with a single random pod kill shows an increased count of failed requests.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@demo:~# kubectl logs -f nginx-bench-7pnvv

2020/06/23 07:00:34 Running: ab -r -c10 -t300 -n 10000000 http://nginx.default.svc.cluster.local:80/
2020/06/23 07:05:37 This is ApacheBench, Version 2.3 &amp;lt;$Revision: 1706008 $&amp;gt;
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking nginx.default.svc.cluster.local (be patient)
Finished 802719 requests


Server Software:        nginx/1.19.0
Server Hostname:        nginx.default.svc.cluster.local
Server Port:            80

Document Path:          /
Document Length:        612 bytes

Concurrency Level:      10
Time taken for tests:   300.000 seconds
Complete requests:      802719
Failed requests:        866
   (Connect: 0, Receive: 289, Length: 289, Exceptions: 288)
Total transferred:      678053350 bytes
HTML transferred:       491087160 bytes
Requests per second:    2675.73 [#/sec] (mean)
Time per request:       3.737 [ms] (mean)
Time per request:       0.374 [ms] (mean, across all concurrent requests)
Transfer rate:          2207.20 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0  11.3      0    3044
Processing:     0    3  57.2      3   16198
Waiting:        0    3  54.2      2   16198
Total:          0    4  58.3      3   16199

Percentage of the requests served within a certain time (ms)
  50%      3
  66%      4
  75%      4
  80%      5
  90%      6
  95%      7
  98%      9
  99%     11
 100%  16199 (longest request)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Further iterations of these tests with increased pod-kill instances over the benchmark period or an increased kill count (i.e., number of replicas killed at a time) can give more insights about the behavior of the service, in turn leading us to the mitigation procedures. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: To test with different variables, edit the ChaosEngine spec in the workflow manifest before re-submission.&lt;/p&gt;
&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;You can use Argo with LitmusChaos to construct complex chaos workflows, with pre-conditioning &amp;amp; dependencies built-in. The parallel nature of execution can help you simulate multi-service/component failures to verify application behavior under worst-case scenarios. You can even sew in recovery procedures based on error conditions. &lt;/p&gt;

&lt;p&gt;Do try this out &amp;amp; let us know what kind of workflows you would like to see being built within litmus! &lt;/p&gt;

&lt;p&gt;Are you an SRE or a Kubernetes enthusiast? Does Chaos Engineering excite you?&lt;/p&gt;

&lt;p&gt;Join Our Community On Slack For Detailed Discussion, Feedback &amp;amp; Regular Updates On Chaos Engineering For Kubernetes: &lt;em&gt;&lt;a href="https://kubernetes.slack.com/messages/CNXNB0ZTN" rel="noopener noreferrer"&gt;https://kubernetes.slack.com/messages/CNXNB0ZTN&lt;/a&gt;&lt;/em&gt; &lt;br&gt;
(#litmus channel on the Kubernetes workspace)&lt;br&gt;
Check out the Litmus Chaos GitHub repo and do share your feedback: &lt;em&gt;&lt;a href="https://github.com/litmuschaos/litmus" rel="noopener noreferrer"&gt;https://github.com/litmuschaos/litmus&lt;/a&gt;&lt;/em&gt;&lt;br&gt;
Submit a pull request if you identify any necessary changes.&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://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.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;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;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://media2.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;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;a href="https://gurubase.io/g/litmuschaos" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d14b84f34d827a00ea3da041c025456fa77e2143b06396c17636f4531500eb23/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f47757275626173652d41736b2532304c69746d75734368616f73253230477572752d303036424646" alt="Gurubase"&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/litmus/translations/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/litmus/translations/README-ko.md" rel="noopener noreferrer"&gt;🇰🇷&lt;/a&gt; &lt;a href="https://github.com/litmuschaos/litmus/translations/README-chn.md" rel="noopener noreferrer"&gt;🇨🇳&lt;/a&gt; &lt;a href="https://github.com/litmuschaos/litmus/translations/README-pt-br.md" rel="noopener noreferrer"&gt;🇧🇷&lt;/a&gt; &lt;a href="https://github.com/litmuschaos/litmus/translations/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;/div&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;/div&gt;


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