Skip to content

Commit c3ff200

Browse files
authored
Merge branch 'master' into refactor/fix-conditions
2 parents d180a06 + d7890aa commit c3ff200

File tree

90 files changed

+93444
-890
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+93444
-890
lines changed

ADOPTERS.md

Lines changed: 77 additions & 78 deletions
Large diffs are not rendered by default.

CODE_OF_CONDUCT.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ representative at an online or offline event.
6060

6161
Instances of abusive, harassing, or otherwise unacceptable behavior may be
6262
reported to the community leaders responsible for enforcement at
63-
prithvi.raj@harness.io.
63+
sayan.mondal@harness.io.
6464
All complaints will be reviewed and investigated promptly and fairly.
6565

6666
All community leaders are obligated to respect the privacy and security of the

MAINTAINERS.md

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,8 @@ chaos-sdk |go/python/ansible sdk |litmus-go,litmus-python,litmu
1212
e2e |e2e-suite, e2e-dashboard |litmus-e2e |@uditgaurav, @Jonsy13 |@neelanjan00, @S-ayanide, @avaakash |
1313
integrations |CI/CD plugins, wrappers |chaos-ci-lib, gitlab-templates, github-actions |@uditgaurav, @ksatchit |@ispeakc0de, @Adarshkumar14 |
1414
helm-charts |control-plane, agent, experiments|litmus-helm |@Jasstkn, @ispeakc0de, @imrajdas, @Jonsy13 |@ksatchit, @uditgaurav |
15-
documentation |platform-docs, experiment-docs |litmus-docs, mkdocs |@neelanjan00, @umamukkara, @ispeakc0de |@ksatchit, @ajeshbaby, @amityt, @uditgaurav |
16-
websites |project website, chaoshub, documentation |litmus-website, charthub, litmus-docs |@umamukkara, @arkajyotiMukherjee, @S-ayanide |@SahilKr24, @hrishavjha, @ajeshbaby |
17-
15+
documentation |platform-docs, experiment-docs |litmus-docs, mkdocs |@neelanjan00, @umamukkara, @ispeakc0de |@ksatchit, @ajeshbaby, @amityt, @uditgaurav |websites |project website, chaoshub, documentation |litmus-website, charthub, litmus-docs |@umamukkara, @arkajyotiMukherjee, @S-ayanide |@SahilKr24, @hrishavjha, @ajeshbaby |
16+
websites |project website, chaoshub, documentation |litmus-website, charthub, litmus-docs |@SahilKr24, @hrishavjha, @ajeshbaby |@umamukkara, @S-ayanide |
1817
### Consolidated Maintainers List
1918

2019
```
@@ -36,16 +35,16 @@ websites |project website, chaoshub, documentation |litmus-website, cha
3635
"Udit Gaurav",@uditgaurav,[email protected]
3736
"Vedant Shrotria",@Jonsy13,[email protected]
3837
"Uma Mukkara",@umamukkara,[email protected]
38+
"Sahil KR",@SahilKr24,[email protected]
39+
"Ajesh Baby",@ajeshbaby,[email protected]
40+
"Hrishav Kumar",@hrishavjha,[email protected]
3941
```
4042

4143
### Consolidated Reviewers List
4244

4345
```
4446
"Adarsh Kumar",@Adarshkumar14,[email protected]
4547
"Akash Srivastava",@avaakash,[email protected]
46-
"Ajesh Baby",@ajeshbaby,[email protected]
47-
"Sahil Kumar",@SahilKr24,[email protected]
48-
"Hrishav Kumar Jha",@hrishavjha,[email protected]
4948
```
5049

5150
### Emeritus Maintainers

README.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,18 @@ Fill out the [LitmusChaos Meetings invite form](https://forms.gle/xYZyZ2gTWMqz7x
105105

106106
### Videos
107107

108+
- [What if Your System Experiences an Outage? Let's Build a Resilient Systems with Chaos Engineering](https://www.youtube.com/watch?v=3mjGEh905u4&t=1s) @ [CNCF](https://www.youtube.com/@cncf)
109+
- [Enhancing Cyber Resilience Through Zero Trust Chaos Experiments in Cloud Native Environments](https://youtu.be/BelNIk4Bkng) @ [CNCF](https://www.youtube.com/@cncf)
110+
- [LitmusChaos, with Karthik Satchitanand](https://www.youtube.com/watch?v=ks2R57hhFZk&t=503s) @ [The Kubernetes Podcast from Google](https://www.youtube.com/@TheKubernetesPodcast)
111+
- [Cultural Shifts: Fostering a Chaos First Mindset in Platform Engineering](https://www.youtube.com/watch?v=WUXFKxgZRsk) @ [CNCF](https://www.youtube.com/@cncf)
112+
- [Fire in the Cloud: Bringing Managed Services Under the Ambit of Cloud-Native Chaos Engineering](https://www.youtube.com/watch?v=xCDQp5E3VUs) @ [CNCF](https://www.youtube.com/@cncf)
113+
- [Security Controls for Safe Chaos Experimentation](https://www.youtube.com/watch?v=whCkvLKAw74) @ [CNCF](https://www.youtube.com/@cncf)
114+
- [Chaos Engineering For Hybrid Targets With LitmusChaos](https://www.youtube.com/watch?v=BZL-ngvbpbU&t=751s) @ [CNCF](https://www.youtube.com/@cncf)
108115
- [Cloud Native Live: Litmus Chaos Engine and a microservices demo app](https://youtu.be/hOghvd9qCzI)
109116
- [Chaos Engineering hands-on - An SRE ideating Chaos Experiments and using LitmusChaos | July 2022](https://youtu.be/_x_7SiesjF0)
110117
- [Achieve Digital Product Resiliency with Chaos Engineering](https://youtu.be/PQrmBHgk0ps)
118+
- [Case Study: Bringing Chaos Engineering to the Cloud Native Developers](https://youtu.be/KSl-oKk6TPA) @ [CNCF](https://www.youtube.com/@cncf)
119+
- [Cloud Native Chaos Engineering with LitmusChaos](https://www.youtube.com/watch?v=ItUUqejdXr0) @ [CNCF](https://www.youtube.com/@cncf)
111120
- [How to create Chaos Experiments with Litmus | Litmus Chaos tutorial](https://youtu.be/mwu5eLgUKq4) @ [Is it Observable](https://www.youtube.com/c/IsitObservable)
112121
- [Cloud Native Chaos Engineering Preview With LitmusChaos](https://youtu.be/pMWqhS-F3tQ)
113122
- [Get started with Chaos Engineering with Litmus](https://youtu.be/5CI8d-SKBfc) @ [Containers from the Couch](https://www.youtube.com/c/ContainersfromtheCouch)

ROADMAP.md

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,47 +11,62 @@ This document captures only the high level roadmap items. For the detailed backl
1111
- Per-experiment minimal RBAC permissions definition
1212
- Creation of 'scenarios' involving multiple faults via Argo-based Chaos Workflows (with examples for microservices apps like podtato-head and sock-shop)
1313
- Cross-Cloud Control Plane (Litmus Portal) to perform chaos against remote clusters
14-
- Helm3 charts for LitmusChaos (control plane and experiments)
14+
- Helm charts for LitmusChaos control plane
15+
- Helm Chart for LitmusChaos execution Plane
1516
- Support for admin mode (centralized chaos management) as well as namespaced mode (multi-tenant clusters)
1617
- Continuous chaos via flexible schedules, with support to halt/resume or (manual/conditional) abort experiments
18+
- Provide complete workflow termination/abort capability
1719
- Generation of observability data via Prometheus metrics and Kubernetes chaos events for experiments
1820
- Steady-State hypothesis validation before, during and after chaos injection via different probe types
1921
- Support for Docker, Containerd & CRI-O runtime
2022
- Support for scheduling policies (nodeSelector, tolerations) and resource definitions for chaos pods
23+
- ChaosHub refactor for 2.x user flow
2124
- Support for ARM64 nodes
25+
- Minimized role permissions for Chaos Service Accounts
2226
- Scaffolding scripts (SDK) to help bootstrap a new chaos experiment in Go, Python, Ansible
2327
- Support orchestration of non-native chaos libraries via the BYOC (Bring-Your-Own-Chaos) model
2428
- Support for OpenShift platform
29+
- Workflow YAML linter addition
2530
- Integration tests & e2e framework creation for control plane components and chaos experiments
2631
- Documentation (usage guide for chaos operator, resources & developer guide for new experiment creation)
32+
- Improved documentation and tutorials for Litmus Portal based execution flow
2733
- Add architecture details & design resources
2834
- Define community sync up cadence and structure
2935

3036
------
3137

32-
### In-Progress (Under Active Development)
38+
### In-Progress (Under Design OR Active Development)
3339

34-
- Support for all ChaosEngine schema elements within workflow wizard
35-
- Workflow YAML linter addition
36-
- Minimized role permissions for Chaos Service Accounts
40+
- Native Chaos Workflows with redesigned subscriber to improve resource delegation, enabling seamless and efficient execution of chaos workflows within Kubernetes clusters.
41+
- Introduce transient runners to improve resource efficiency during chaos experiments by dynamically creating and cleaning up chaos runner instances.
42+
- Implement Kubernetes connectors to enable streamlined integration with Kubernetes clusters, providing simplified authentication and configuration management.
43+
- Integrate with tools like K8sGPT to generate insightful reports that identify potential weaknesses in your Kubernetes environment before executing chaos experiments.
44+
- Add Terraform support for defining and executing chaos experiments on infrastructure components, enabling infrastructure-as-code-based chaos engineering.
45+
- Add SDK support for Python and Java, with potential extensions to other programming languages based on community interest.
46+
- Include in-product documentation, such as tooltips, to improve user experience and ease of adoption.
47+
- Implement the litmus-java-sdk with a targeted v1.0.0 release by Q1.
48+
- Integrate distributed tracing by adding attributes or events to spans, and create an OpenTelemetry demo showcasing chaos engineering observability.
49+
- Enhance the exporter to function as an OpenTelemetry collector, providing compatibility with existing observability pipelines.
50+
- Add support for DocumentDB by replacing certain MongoDB operations, improving flexibility for database chaos.
51+
- Upgrade Kubernetes SDK from version 1.21 to 1.26 to stay aligned with the latest Kubernetes features and enhancements.
52+
- Refactor the chaos charts to:
53+
- Replace latest tags with specific, versioned image tags.
54+
- Consolidate multiple images into a single optimized image.
55+
- Update GraphQL and authentication API documentation for improved clarity and user guidance.
56+
- Add comprehensive unit and fuzz tests to enhance code reliability and robustness.
57+
- Implement out-of-the-box Slack integration for better collaboration and monitoring during chaos experiments.
58+
59+
------
60+
61+
### Backlog
62+
63+
- Validation support for all ChaosEngine schema elements within workflow wizard
3764
- Chaos-center users account to chaosService account map
38-
- Provide complete workflow termination/abort capability
3965
- Cross-hub experiment support within a Chaos Workflow
40-
- Helm Chart for Chaos Execution Plane
4166
- Enhanced CRD schema for ChaosEngine to support advanced CommandProbe configuration
4267
- Support for S3 artifact sink (helps performance/benchmark runs)
43-
- ChaosHub refactor for 2.x user flow
4468
- Chaos experiments against virtual machines and cloud infrastructure (AWS, GCP, Azure, VMWare, Baremetal)
45-
- Improved documentation and tutorials for Litmus Portal based execution flow
4669
- Off the shelf chaos-integrated monitoring dashboards for application chaos categories
4770
- Support for user defined chaos experiment result definition
4871
- Increased fault injection types (IOChaos, HTTPChaos, JVMChaos)
4972
- Special Interest Groups (SIGs) around specific areas in the project to take the roadmap forward
50-
51-
------
52-
53-
### Backlog
54-
55-
- Pre-defined chaos workflows to inject chaos during application benchmark runs
56-
- Support for cloudevents compliant chaos events
57-
- Improved application Chaos Suites for various CNCF projects
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
## Emirates NBD
2+
3+
[Emirates NBD](https://www.emiratesnbd.com) is Dubai's government-owned bank and is one of the largest banking groups in the Middle East in terms of assets.
4+
5+
### **Why do we use Litmus.**
6+
7+
Resilience is a key aspect in creating fault-tolerant environments, and leveraging tools like Litmus has been instrumental in automating resilience testing. Litmus has enabled us to simulate real-time chaos scenarios, allowing us to thoroughly verify the robustness of both our infrastructure and applications.
8+
9+
### **How do we use Litmus.**
10+
11+
We began with a proof of concept (POC) on a playground cluster. While we explored other tools during this process, Litmus stood out significantly, not only in its capabilities but also due to its excellent user interface. Although we faced a few challenges during the initial setup of Litmus on OpenShift, the team provided timely support, helping us overcome these obstacles and successfully complete the POC.
12+
13+
Now, we've successfully deployed Litmus in a non-production cluster environment, and our SRE team is in the process of transitioning from manual chaos testing to automated chaos tests. This shift will enable us to schedule, automate, and efficiently track the outcomes of these tests, enhancing the resilience of our systems.

adopters/organizations/outsystems.md

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
## OutSystems
2+
3+
[OutSystems](https://www.outsystems.com/) is a low-code development platform which provides tools for companies to develop, deploy and manage omnichannel enterprise applications. OutSystems was founded in 2001 in Lisbon, Portugal. In June 2018 OutSystems secured a $360M round of funding from KKR and Goldman Sachs and reached the status of Unicorn.
4+
5+
### **Leveraging Litmus Chaos Engineering in Kubernetes Infrastructure:**
6+
7+
We have a Kubernetes-based infrastructure pivotal to our operations, where reliability and resilience are paramount. Recognizing the need for robust testing methodologies, we turned to Litmus Chaos Engineering to fortify our systems against potential failures and to ensure seamless operations even under adverse conditions.
8+
9+
### **Why do we use Litmus:**
10+
11+
Litmus emerged as our tool of choice due to its comprehensive suite of chaos engineering capabilities tailored specifically for Kubernetes environments. Its versatility in orchestrating controlled chaos experiments aligns perfectly with our commitment to enhancing system reliability while maintaining agility.
12+
13+
### **Use Case and Implementation:**
14+
15+
We have seamlessly integrated Litmus Chaos Engineering into various stages of our development and deployment pipeline, spanning from development and testing to staging and production environments. Leveraging Litmus, we meticulously craft and execute chaos experiments, meticulously observing how our infrastructure behaves under stress, and ensuring it meets our predefined Service Level Objectives (SLOs) and Service Level Indicators (SLIs).
16+
17+
### **Achievements:**
18+
19+
Our journey with Litmus Chaos Engineering has been marked by significant milestones:
20+
21+
- Successful deployment of Chaos Center and Litmus Delegate, empowering us with centralized chaos management capabilities.
22+
- Establishment of secure access to Chaos Center through HTTPS, coupled with domain customization for enhanced usability.
23+
- Implementation of WAF ACL to restrict access to Chaos Center, ensuring secure interactions.
24+
- Integration of Azure SSO for streamlined user management and authentication.
25+
- Seamless connectivity between Chaos Center and target nodes, facilitating efficient chaos experimentation.
26+
- Execution of numerous successful experiments, validating the resilience and scalability of our infrastructure.
27+
28+
### **Next Steps:**
29+
30+
As we continue to harness the power of Litmus Chaos Engineering, we remain committed to expanding our chaos engineering initiatives, further refining our chaos experiments, and continually enhancing the resilience of our Kubernetes infrastructure.

chaoscenter/authentication/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ require (
1212
github.com/sirupsen/logrus v1.9.3
1313
github.com/stretchr/testify v1.9.0
1414
github.com/swaggo/swag v1.16.3
15-
go.mongodb.org/mongo-driver v1.17.0
15+
go.mongodb.org/mongo-driver v1.17.1
1616
golang.org/x/crypto v0.26.0
1717
golang.org/x/oauth2 v0.21.0
1818
google.golang.org/grpc v1.66.2

chaoscenter/authentication/go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,8 @@ github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gi
119119
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 h1:ilQV1hzziu+LLM3zUTJ0trRztfwgjqKnBWNtSRkbmwM=
120120
github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI=
121121
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
122-
go.mongodb.org/mongo-driver v1.17.0 h1:Hp4q2MCjvY19ViwimTs00wHi7G4yzxh4/2+nTx8r40k=
123-
go.mongodb.org/mongo-driver v1.17.0/go.mod h1:wwWm/+BuOddhcq3n68LKRmgk2wXzmF6s0SFOa0GINL4=
122+
go.mongodb.org/mongo-driver v1.17.1 h1:Wic5cJIwJgSpBhe3lx3+/RybR5PiYRMpVFgO7cOHyIM=
123+
go.mongodb.org/mongo-driver v1.17.1/go.mod h1:wwWm/+BuOddhcq3n68LKRmgk2wXzmF6s0SFOa0GINL4=
124124
golang.org/x/arch v0.0.0-20210923205945-b76863e36670/go.mod h1:5om86z9Hs0C8fWVUuoMHwpExlXzs5Tkyp9hOrfG7pp8=
125125
golang.org/x/arch v0.8.0 h1:3wRIsP3pM4yUptoR96otTUOXI367OS0+c9eeRi9doIc=
126126
golang.org/x/arch v0.8.0/go.mod h1:FEVrYAQjsQXMVJ1nsMoVVXPZg6p2JE2mx8psSWTDQys=

chaoscenter/authentication/pkg/project/repository.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func (r repository) GetProjects(query bson.D) ([]*entities.Project, error) {
6060
return nil, err
6161
}
6262

63-
var projects []*entities.Project
63+
var projects = []*entities.Project{}
6464
err = results.All(context.TODO(), &projects)
6565
if err != nil {
6666
return nil, err
@@ -71,7 +71,7 @@ func (r repository) GetProjects(query bson.D) ([]*entities.Project, error) {
7171

7272
// GetProjectsByUserID returns a project based on the userID
7373
func (r repository) GetProjectsByUserID(request *entities.ListProjectRequest) (*entities.ListProjectResponse, error) {
74-
var projects []*entities.Project
74+
var projects = []*entities.Project{}
7575
ctx := context.TODO()
7676

7777
// Construct the pipeline
@@ -184,7 +184,7 @@ func (r repository) GetProjectStats() ([]*entities.ProjectStats, error) {
184184
return nil, err
185185
}
186186

187-
var data []*entities.ProjectStats
187+
var data = []*entities.ProjectStats{}
188188
for result.Next(context.TODO()) {
189189
res := entities.ProjectStats{}
190190
if err := result.Decode(&res); err != nil {
@@ -425,7 +425,7 @@ func (r repository) GetOwnerProjects(ctx context.Context, userID string) ([]*ent
425425
return nil, err
426426
}
427427

428-
var projects []*entities.Project
428+
var projects = []*entities.Project{}
429429
err = cursor.All(context.TODO(), &projects)
430430
if err != nil {
431431
return nil, err
@@ -447,7 +447,7 @@ func (r repository) GetProjectOwners(projectID string) ([]*entities.Member, erro
447447
}
448448

449449
// Filter the members to include only the owners
450-
var owners []*entities.Member
450+
var owners = []*entities.Member{}
451451
for _, member := range project.Members {
452452
if member.Role == entities.RoleOwner && member.Invitation == entities.AcceptedInvitation {
453453
owners = append(owners, member)
@@ -615,7 +615,7 @@ func (r repository) ListInvitations(userID string, invitationState entities.Invi
615615
return nil, err
616616
}
617617

618-
var projects []*entities.Project
618+
var projects = []*entities.Project{}
619619
err = cursor.All(context.TODO(), &projects)
620620
if err != nil {
621621
return nil, err

0 commit comments

Comments
 (0)