Hi there! We are thrilled that you'd like to contribute to this project. It's people like you that make this collection of charts such a valuable resource for the Kubernetes community.
- Code of Conduct
- How Can I Contribute?
- Development Setup
- Contributing Guidelines
- Testing
- Pull Request Process
This project and everyone participating in it is governed by our Code of Conduct. By participating, you are expected to uphold this code.
Before creating bug reports, please check the existing issues as you might find out that you don't need to create one. When you are creating a bug report, please include as many details as possible:
- Use a clear and descriptive title
- Describe the exact steps to reproduce the problem
- Provide specific examples to demonstrate the steps
- Describe the behavior you observed and what behavior you expected
- Include details about your configuration and environment
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion, please include:
- Use a clear and descriptive title
- Provide a step-by-step description of the suggested enhancement
- Provide specific examples to demonstrate the steps
- Describe the current behavior and explain which behavior you expected to see
- Explain why this enhancement would be useful
- New Charts: Production-ready Helm charts for popular open-source applications
- Chart Improvements: Bug fixes, feature additions, and security enhancements
- Documentation: Improvements to README files, values documentation, and examples
- Testing: Additional test coverage and test improvements
- Kubernetes 1.24+
- Helm 3.2.0+
- helm-unittest plugin
- Commits verified by signature
-
Fork the repository on GitHub
-
Clone your fork locally:
git clone https://github.com/your-username/helm-charts.git --verify=false cd helm-charts -
Install the helm-unittest plugin:
helm plugin install https://github.com/helm-unittest/helm-unittest --verify=false
-
Make sure to sign your commits
git config gpg.format ssh git config user.signingkey <filePath> git config commit.gpgsign true git config tag.gpgsign true
Replace
<filePath>with the path to your public ssh key file, e.g.~/.ssh/id_ed25519.pub, wich you use to push to GitHub. Alternatively, a signing ssh key can be used instead. If you want to sign commits in every repository, not just this one, add the--globalparameter.More information: GitHub docs
All charts in this repository must follow these standards:
- Implement read-only root filesystems where possible
- Drop unnecessary Linux capabilities
- Configure security contexts properly
- Never hardcode credentials
- Include comprehensive health checks (liveness, readiness, startup probes)
- Support resource requests and limits
- Provide persistent storage configurations
- Include health check endpoints
- Provide extensive
values.yamlwith detailed documentation - Support existing secrets and ConfigMaps
- Offer flexible ingress configurations
- Allow service account customization
- Support common labels and annotations
Follow this standard structure for new charts:
charts/your-chart/
├── Chart.yaml
├── README.md
├── values.yaml
├── templates/
│ ├── NOTES.txt
│ ├── _helpers.tpl
│ ├── configmap.yaml
│ ├── deployment.yaml
│ ├── ingress.yaml
│ ├── secret.yaml
│ ├── service.yaml
│ └── serviceaccount.yaml
└── tests/
└── *_test.yaml
Each chart must include:
- Chart.yaml: Complete metadata with proper versioning
- README.md: Comprehensive documentation including:
- Chart description and purpose
- Prerequisites and requirements
- Installation instructions
- Configuration parameters table
- Examples and common configurations
- Troubleshooting section
- values.yaml: Well-documented default values with inline comments
We follow Semantic Versioning for chart versions:
- MAJOR: Incompatible API changes
- MINOR: New functionality in a backwards compatible manner
- PATCH: Backwards compatible bug fixes
All charts must include comprehensive tests. Run tests using:
# Test all charts
./test-charts.sh
# Test individual chart
helm dependency update charts/your-chart
helm unittest charts/your-chartYour tests should cover:
- Template rendering with default values
- Template rendering with custom values
- Required value validation
- Common configuration scenarios
- Edge cases and error conditions
Before submitting, manually test your chart:
# Lint the chart
helm lint ./charts/your-chart
# Render templates locally
helm template test-release ./charts/your-chart -n test
# Install in a test cluster
helm install test-release ./charts/your-chart -n test
# Verify the deployment
kubectl get all -n test
⚠️ IMPORTANT: As of January 22, 2026, all commits must be signed and verified. PRs with unsigned commits will not be merged. See Setting Up Your Development Environment for instructions.
-
Branch: Create a feature branch from
maingit checkout -b feature/your-chart-improvement
-
Development: Make your changes following the guidelines above
-
Testing: Run all tests and ensure they pass
./test-charts.sh helm lint ./charts/your-chart
-
Documentation: Update documentation as needed
-
Commit: Use clear, descriptive commit messages
git commit -m "[chart-name] Add support for custom annotations" -
Pull Request: Create a PR with the following:
- Clear title following the pattern:
[chart-name] Descriptive title - Complete the PR template
- Reference any related issues
- Include screenshots/examples if relevant
- Clear title following the pattern:
Before submitting your pull request, ensure:
- Chart version is bumped according to semver (not needed for README-only changes)
- Variables are documented in
values.yamlandREADME.md - All tests pass
- Chart passes
helm lint - Documentation is updated
- Changes are backwards compatible (or breaking changes are clearly documented)
- All commits are signed and verified with GPG/SSH signatures (required as of January 22, 2026)