Nyl
Kubernetes manifest generator with Helm integration
Fast, efficient Kubernetes manifest generation with a small operational footprint.
โจ Features
- ๐ Blazing Fast: Optimized manifest generation
- ๐ฆ Simple Distribution: Single-binary CLI install flow
- ๐งฉ Component-Oriented: Local component charts, aliases, and remote chart shortcuts
- ๐ง Helm Integration: First-class Helm chart support with value customization
- ๐ Multi-Environment: Profile-based configurations (dev, staging, prod)
- ๐ Git Support: Private repository access with SSH/HTTPS authentication
- ๐จ Templating: Jinja2-compatible templates with custom filters
- โธ๏ธ Kubernetes Native: kubectl-style diff and apply commands
๐ฅ Installation
From Release (Recommended)
# Download latest release for your platform
# Linux (x86_64)
# macOS (Apple Silicon)
# macOS (Intel)
From Source
# Clone repository
# Build and install
# Or just build
# Binary will be at target/release/nyl
Using Cargo
๐ Quick Start
# Create a new project
# Validate configuration
# Render manifests for development
# See diff against cluster
# Apply to cluster
๐ Commands
| Command | Description |
|---|---|
nyl new project <name> |
Create new project with scaffolding |
nyl new component <api-version> <kind> |
Create component definition |
nyl validate [--strict] |
Validate project configuration |
nyl render [--profile NAME] |
Render manifests to stdout |
nyl diff [--profile NAME] |
Show kubectl diff against cluster |
nyl apply [--profile NAME] |
Apply manifests to cluster |
nyl generate argocd |
Generate ArgoCD Applications |
nyl cluster-info |
Display cluster version information |
๐ Documentation
Comprehensive documentation is available in mdbook format:
# Serve documentation locally
# Or view online
# https://niklasrosenstein.github.io/nyl/
Documentation includes:
- Getting started guide
- Component system guide
- Configuration reference
- Command documentation
- API reference (rustdoc)
- Example projects
Key entry points:
๐ฏ Examples
Check out the examples/ directory for practical usage:
- simple-app - Basic web application with profiles
- More examples coming soon!
๐๏ธ Architecture
src/
โโโ cli/ # Command-line interface with clap
โ โโโ commands/ # Command implementations (render, diff, apply, etc.)
โ โโโ output/ # Output formatting with colored diffs
โโโ config/ # Project configuration loading
โโโ template/ # MiniJinja templating engine
โโโ generator/ # Manifest generation pipeline
โโโ kubernetes/ # Kubernetes client integration (kube-rs)
โโโ resources/ # HelmChart, Component resources
โโโ git/ # Git repository management with authentication
โโโ helm/ # Helm chart processing
โโโ components/ # Component discovery and registry
โโโ profiles/ # Profile management
โโโ secrets/ # Secrets provider framework
โโโ util/ # Utilities (fs, hashing, etc.)
โ๏ธ Development
Prerequisites
- Rust 1.83 or newer
- kubectl (for diff/apply commands)
- Helm (for Helm chart rendering)
Building
# Development build
# Release build (optimized)
# Run tests
# Format and lint
Using mise
The project includes a .mise.toml for tool management:
# Install tools
# Run tasks
๐งช Testing
# Run all tests
# Run with coverage
# Test specific module
# Integration tests
Test Coverage:
- 221 unit tests
- 34 integration tests
- 90%+ code coverage
๐บ๏ธ Roadmap
โ Completed (v0.1.0)
- Configuration & CLI foundation
- Template engine (Jinja2-compatible)
- Helm integration
- Component system
- Git repository support with authentication
- Kubernetes client integration
- Diff & apply commands
- ArgoCD integration
๐ฎ Future Releases
- v0.2.0: SOPS secrets integration
- v0.3.0: SSH tunnel & profile enhancements
- v0.4.0: Advanced post-processing
- v0.5.0: Performance optimizations & caching improvements
๐ License
MIT License - see LICENSE for details
๐ Contributing
Contributions are welcome! Please read CONTRIBUTING.md for guidelines.
Contributors
- Niklas Rosenstein (@NiklasRosenstein)
๐ Changelog
See CHANGELOG.md for a detailed history of changes.
๐ Links
Made with โค๏ธ in Rust