This guide provides detailed instructions for developers working with the 514 Labs Helm Charts repository.
.
├── charts/ # Source code for all Helm charts
│ └── mds/ # Example: MDS chart
│ ├── Chart.yaml # Chart metadata
│ ├── values.yaml # Default values
│ ├── templates/ # Kubernetes templates
│ └── README.md # Chart documentation
├── packages/ # Packaged charts (.tgz) - git ignored
├── scripts/ # Helper scripts
│ ├── package-charts.sh # Package all charts
│ ├── publish-charts.sh # Publish to gh-pages
│ └── test-repo.sh # Test repository locally
├── .github/ # GitHub Actions workflows
│ └── workflows/
│ ├── lint-test.yaml # PR validation
│ └── release.yaml # Auto-release on merge
├── index.yaml # Repository index (git ignored)
└── README.md # Public documentation
# Clone the repository
git clone https://github.com/514-labs/helm-charts.git
cd helm-charts
# Ensure you have Helm 3.x installed
helm version
# Install pre-commit hooks (optional but recommended)
# This helps ensure consistent formatting and catch issues early# Create a new chart using Helm
helm create charts/my-new-chart
# Edit the chart
cd charts/my-new-chart
# Update Chart.yaml with appropriate metadata
# - name: Your chart name
# - version: Start with 0.1.0
# - description: Clear description
# - home: Project URL
# - maintainers: Your contact info
# Develop your templates in templates/
# Document configuration in values.yaml
# Write comprehensive README.md# Lint your chart
helm lint charts/my-new-chart
# Test template rendering
helm template test-release charts/my-new-chart
# Test with custom values
helm template test-release charts/my-new-chart -f test-values.yaml
# Dry run installation
helm install test-release charts/my-new-chart --dry-run --debug
# Install locally for testing (requires local Kubernetes)
helm install test-release charts/my-new-chartFollow semantic versioning (semver):
- MAJOR version for incompatible changes
- MINOR version for new features (backwards compatible)
- PATCH version for bug fixes
Always update the version in Chart.yaml when making changes.
# Package all charts and generate index.yaml
./scripts/package-charts.sh
# Test the repository locally
./scripts/test-repo.sh
# In another terminal, test adding the local repo
helm repo add local-test http://localhost:8080
helm repo update
helm search repo local-test# Package charts
./scripts/package-charts.sh
# Publish to gh-pages branch
./scripts/publish-charts.shCharts are automatically published when PRs are merged to main:
- Create a feature branch
- Make your changes
- Create a pull request
- GitHub Actions will validate your changes
- Once merged, charts are automatically published
- Always use
.Values- Never hardcode values in templates - Add comments - Document complex logic in templates
- Use helpers - Create reusable template functions in
_helpers.tpl - Include health checks - Add readiness/liveness probes
- Support multiple scenarios - Dev, staging, production configs
- Version dependencies - Pin specific versions of dependencies
- Test all scenarios - Use different values files for different environments
- Validate YAML - Ensure generated manifests are valid
- Check resource limits - Always set resource requests/limits
- Test upgrades - Ensure smooth upgrades from previous versions
- README.md is required - Every chart must have comprehensive docs
- Document all values - Explain every configurable value
- Provide examples - Include example values files
- List prerequisites - Document any requirements
- Include troubleshooting - Common issues and solutions
# 1. Make your changes
vim charts/mds/templates/deployment.yaml
# 2. Bump the version
# Edit charts/mds/Chart.yaml and increment version
# 3. Test your changes
helm lint charts/mds
helm template test charts/mds
# 4. Package and test
./scripts/package-charts.sh
# 5. Commit and push
git add .
git commit -m "feat(mds): add new feature"
git push origin feature-branch# Install current version
helm install test-release charts/mds
# Make changes and bump version
# Test upgrade
helm upgrade test-release charts/mds
# Check rollback works
helm rollback test-release 1# See what values are available
helm template test charts/mds --debug
# Test specific values
echo "replicaCount: 5" > test-values.yaml
helm template test charts/mds -f test-values.yaml
# Check generated YAML
helm template test charts/mds | kubectl apply --dry-run=client -f -- Missing required values: Ensure all required values have defaults or clear error messages
- Invalid YAML: Check template syntax, especially around conditionals
- Missing end tags: Ensure all
{{- if }}have corresponding{{- end }}
- Version conflicts: Ensure version in Chart.yaml is incremented
- Missing files: Check all referenced files exist
- Permission errors: Ensure scripts are executable (
chmod +x)
- 404 errors: Wait a few minutes for GitHub Pages to update
- Old versions: Run
helm repo updateto refresh - Index issues: Ensure index.yaml is properly formatted
The following checks run on every PR:
- Chart linting (helm lint)
- Version validation
- Template validation
- Installation test (using KIND cluster)
On merge to main:
- Charts are automatically packaged
- Published to gh-pages branch
- Available immediately via Helm repository
- Check existing charts for examples
- Review GitHub Actions logs for CI/CD issues
- Open an issue for bugs or feature requests
- Contact the team at support@514labs.com