Files
litmus-hub/CONTRIBUTING.md
2019-09-06 20:34:05 +05:30

49 lines
2.9 KiB
Markdown

# Contributing to Community Charts
Litmus Community-Charts is an Apache 2.0 Licensed project that uses the standard GitHub pull requests process to review and accept
contributions. This repository is the canonical source for the chaos charts that appear on [hub.litmuschaos.io](https://hub.litmuschaos.io)
Chaos Charts are a groups of categorized chaos experiments, represented as custom resource definitions that can be executed by the
[Litmus Chaos Operator](https://github.com/litmuschaos/chaos-operator). We would love to see your charts added to the list of community-charts.
To get started, read on!
## How to Contribute a Chaos Chart
The creation of a chaos chart or subchart involves the following steps:
- Creation of Litmusbooks
- Creation of Experiment CRs
- Creation of ChartServiceVersion Templates
These are briefly described below.
### Litmusbooks
Litmusbooks are the execution units of the chaos experiments. They are Kubernetes Jobs running the test containers (mostly running ansible playbooks,
but could be any other scripting/programming language as long as the input and output interfaces are satisfied!). The experiments typically
involve definition of the entry/exit(health) criteria, creation of library utils (reusable code tasks/code-blocks) and the experiment business logic.
A detailed guide for creation on ansible-based litmusbooks is provided in the [Litmusbook Cookbook](https://docs.litmuschaos.io/docs/next/cb-overview.html)
The Litmusbooks are maintained in the [Litmus](https://github.com/litmuschaos/litmus) repo. View the PR checklist for the litmusbooks [here](https://github.com/litmuschaos/litmus/blob/master/.github/PULL_REQUEST_TEMPLATE.md)
### Experiment Custom Resources
The experiment CRs are a custom/condensed representation of a litmusbook where ENVs and experiment execution info is specified. The experiment CRs
help categorization (a chart can have subcharts), bundling & lighter/less cluttered interface for tuning by developers who can readily deploy a desired
chaos profile in their deployment environments. The chaos experiments are used by the Litmus Chaos Operator to orchestrate the chaos.
Here is an example custom resource for a random [pod-delete](https://github.com/litmuschaos/community-charts/blob/master/charts/kubernetes/state/experiments/pod-delete-exp.v0.1.0.yaml) experiment
### ChartServiceVersion (CSV) Templates
The CSV specifies the metadata associated with the chart. A defined template (inspired by the CSV of Operator framework) is used to render this metadata
information on the hub.litmuschaos.io. Each chart/subchart is accompanied by its respective CSV. Here is an example detailing the [Kubernetes](https://github.com/litmuschaos/community-charts/blob/master/charts/kubernetes/kubernetes.chartserviceversion.yaml) chaos chart.
The Package YAML is used to define the hierarchy/parent-child relationship of charts & subcharts. It is used to structure the pages on hub.litmuschaos.io.