{"id":28480462,"url":"https://github.com/akmshasan/helmctl","last_synced_at":"2026-05-03T07:37:38.542Z","repository":{"id":296588416,"uuid":"993880210","full_name":"akmshasan/helmctl","owner":"akmshasan","description":"🚀 Enterprise-grade CLI tool for Helmfile operations and Kubernetes deployments. Features multi-cluster support, rollback system, template validation, and production safety controls. Built with Rust for performance and reliability.","archived":false,"fork":false,"pushed_at":"2025-05-31T18:45:24.000Z","size":94,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-01T06:47:39.879Z","etag":null,"topics":["cli","deployment","devops","enterprise","gitops","helm","helmfile","infrastructure-automation","kubernetes","rust"],"latest_commit_sha":null,"homepage":"https://www.linkedin.com/in/akmshasan","language":"HTML","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/akmshasan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-31T18:09:41.000Z","updated_at":"2025-05-31T18:27:38.000Z","dependencies_parsed_at":"2025-06-01T06:47:43.603Z","dependency_job_id":"90d41e42-a4c4-4a32-8596-5e2acf1e46c4","html_url":"https://github.com/akmshasan/helmctl","commit_stats":null,"previous_names":["akmshasan/helmctl"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/akmshasan/helmctl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akmshasan%2Fhelmctl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akmshasan%2Fhelmctl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akmshasan%2Fhelmctl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akmshasan%2Fhelmctl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/akmshasan","download_url":"https://codeload.github.com/akmshasan/helmctl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/akmshasan%2Fhelmctl/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263378878,"owners_count":23457768,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","deployment","devops","enterprise","gitops","helm","helmfile","infrastructure-automation","kubernetes","rust"],"created_at":"2025-06-07T19:06:31.385Z","updated_at":"2026-05-03T07:37:33.489Z","avatar_url":"https://github.com/akmshasan.png","language":"HTML","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Helmctl 🚀\n\n[![Rust](https://img.shields.io/badge/rust-%23000000.svg?style=for-the-badge\u0026logo=rust\u0026logoColor=white)](https://www.rust-lang.org/)\n[![Kubernetes](https://img.shields.io/badge/kubernetes-%23326ce5.svg?style=for-the-badge\u0026logo=kubernetes\u0026logoColor=white)](https://kubernetes.io/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](https://opensource.org/licenses/MIT)\n[![GitHub Stars](https://img.shields.io/github/stars/akmshasan/helmctl?style=for-the-badge)](https://github.com/akmshasan/helmctl/stargazers)\n\n\u003e 🚀 Enterprise-grade CLI for Helmfile operations and Kubernetes deployments - Built with Rust\n\n## ✨ Features\n\n- 🔍 **Advanced Helmfile Linting** - Environment-specific validation with strict mode\n- 🚀 **Safe Deployments** - Production confirmations, dry-run modes, and rollback capabilities\n- ☸️ **Kubernetes Integration** - Direct manifest deployment with multi-cluster support\n- 🔄 **Rollback System** - Individual release or full environment rollback functionality\n- 📊 **Status Monitoring** - Detailed release and pod status checking\n- ✅ **Template Validation** - YAML syntax checking and Helmfile template rendering\n- ⚙️ **Configuration Management** - Persistent settings with YAML configuration\n- 🔀 **Multi-cluster Support** - Context switching with connectivity tests\n- 📝 **Comprehensive Logging** - Structured JSON logging with audit trails\n- 🛡️ **Safety First** - Production deployment confirmations and dry-run modes\n\n## 🎯 Quick Start\n\n### Prerequisites\n\nEnsure you have the following tools installed:\n- `helmfile` - [Install Helmfile](https://github.com/helmfile/helmfile#installation)\n- `helm` - [Install Helm](https://helm.sh/docs/intro/install/)\n- `kubectl` - [Install kubectl](https://kubernetes.io/docs/tasks/tools/)\n\n### Installation\n\n#### Option 1: Build from Source\n```bash\n# Clone or extract the project\ngit clone  https://github.com/akmshasan/helmctl\ncd helmctl\n\n# Build the project\nmake build\n\n# Install system-wide (optional)\nmake install\n```\n\n#### Option 2: Download Binary\n```bash\n# Download from releases (when available)\ncurl -L -o helmctl \u003cdownload-url\u003e\nchmod +x helmctl\nsudo mv helmctl /usr/local/bin/\n```\n\n### Initialize Configuration\n```bash\nhelmctl config init\nhelmctl config show\n```\n\n## 📋 Commands Overview\n\n### Core Operations\n\n#### Lint Helmfiles\n```bash\n# Basic linting\nhelmctl lint -f helmfile.yaml -e development\n\n# Strict mode (fail on warnings)\nhelmctl lint -f helmfile.yaml -e production --strict\n\n# Template validation only\nhelmctl lint -f helmfile.yaml --template-only\n```\n\n#### Deploy with Helmfile\n```bash\n# Dry-run deployment\nhelmctl deploy -f helmfile.yaml -e staging --dry-run\n\n# Production deployment with confirmation\nhelmctl deploy -f helmfile.yaml -e production --concurrency 3\n\n# Deploy with diff preview\nhelmctl deploy -f helmfile.yaml -e development --diff\n\n# Skip dependency updates\nhelmctl deploy -f helmfile.yaml -e development --skip-deps\n```\n\n#### Direct Kubernetes Deployment\n```bash\n# Deploy manifest with dry-run\nhelmctl k8s-deploy -m app.yaml --dry-run\n\n# Deploy to specific namespace with wait\nhelmctl k8s-deploy -m app.yaml -n production --wait --timeout 600\n\n# Deploy with specific context\nhelmctl k8s-deploy -m app.yaml --context prod-cluster\n```\n\n### Advanced Operations\n\n#### Rollback Management\n```bash\n# Rollback specific release to specific revision\nhelmctl rollback -f helmfile.yaml -e production -r app-name --revision 2\n\n# Rollback all releases in environment\nhelmctl rollback -f helmfile.yaml -e staging\n\n# Rollback with context switching\nhelmctl rollback -f helmfile.yaml -e production --context prod-cluster\n```\n\n#### Status Monitoring\n```bash\n# Check status of all releases\nhelmctl status -f helmfile.yaml -e development\n\n# Check specific release status\nhelmctl status -f helmfile.yaml -e staging -r redis-cache\n\n# Detailed status with Kubernetes info\nhelmctl status -f helmfile.yaml -e production --detailed\n```\n\n#### Template Validation\n```bash\n# Validate YAML syntax only\nhelmctl validate -f helmfile.yaml --syntax-only\n\n# Full template validation with rendering\nhelmctl validate -f helmfile.yaml -e development\n\n# Validate with verbose output\nhelmctl validate -f helmfile.yaml -e staging --verbose\n```\n\n### Configuration Management\n\n#### Basic Configuration\n```bash\n# Show current configuration\nhelmctl config show\n\n# Initialize with defaults\nhelmctl config init\n\n# Set configuration values\nhelmctl config set default_environment staging\nhelmctl config set default_concurrency 3\nhelmctl config set preferred_context prod-cluster\n\n# Get configuration values\nhelmctl config get default_environment\n```\n\n#### Available Configuration Options\n- `default_environment` - Default environment for operations\n- `default_concurrency` - Default concurrency level for deployments\n- `default_timeout` - Default timeout for operations (seconds)\n- `auto_update_repos` - Automatically update Helm repositories\n- `preferred_context` - Default Kubernetes context\n- `log_level` - Logging level (debug, info, warn, error)\n\n### Context Management\n\n#### Kubernetes Context Operations\n```bash\n# List available contexts\nhelmctl context list\n\n# Switch to a context\nhelmctl context use staging-cluster\n\n# Show current context with details\nhelmctl context current\n```\n\n## ⚙️ Configuration\n\n### Configuration File (`helmctl.yaml`)\n\nCreate a configuration file in your project directory:\n\n```yaml\n# Default settings\ndefault_environment: development\ndefault_concurrency: 2\ndefault_timeout: 300\nauto_update_repos: true\npreferred_context: minikube\nlog_level: info\n\n# Custom repositories\nrepositories:\n  - name: bitnami\n    url: https://charts.bitnami.com/bitnami\n  - name: stable\n    url: https://charts.helm.sh/stable\n  - name: prometheus-community\n    url: https://prometheus-community.github.io/helm-charts\n  - name: grafana\n    url: https://grafana.github.io/helm-charts\n```\n\n### Global vs Local Configuration\n\n- **Global**: `~/.helmctl.yaml` - User-wide settings\n- **Local**: `./helmctl.yaml` - Project-specific settings\n- **Override**: Use `-c/--config` flag to specify custom config file\n\n## 🛡️ Safety Features\n\n### Production Safeguards\n- **Interactive confirmations** before production deployments\n- **Dry-run modes** for all destructive operations\n- **Context verification** before operations\n- **Strict linting** with configurable warning levels\n\n### Error Handling\n- **Dependency checking** - Validates required tools are installed\n- **File validation** - Checks for file existence before operations\n- **Command validation** - Verifies external commands are available\n- **Graceful failures** with descriptive error messages\n\n## 🔧 Development\n\n### Build System (Makefile)\n\n```bash\n# Development workflow\nmake dev              # Full development workflow\nmake quality          # Run all quality checks\nmake test             # Run tests\nmake lint             # Lint code\nmake fmt              # Format code\n\n# Building\nmake build            # Build release version\nmake build-optimized  # Build with maximum optimizations\nmake debug            # Build debug version\n\n# Installation\nmake install          # Install to system PATH\nmake uninstall        # Remove from system\n\n# Documentation\nmake docs             # Generate and open documentation\n\n# Utilities\nmake clean            # Clean build artifacts\nmake audit            # Security audit\nmake update           # Update dependencies\nmake watch            # Watch for changes and rebuild\n```\n\n### Quality Assurance\n\nThe project includes comprehensive quality checks:\n- **Clippy linting** with strict rules\n- **Rustfmt formatting** enforcement\n- **Unit and integration tests**\n- **Security auditing** with cargo-audit\n- **Documentation generation**\n\n### Project Structure\n\n```\nhelmctl/\n├── Cargo.toml              # Project configuration\n├── Makefile                # Build system\n├── README.md               # This file\n├── src/\n│   ├── main.rs            # Entry point\n│   ├── cli.rs             # CLI definitions\n│   ├── config.rs          # Configuration management\n│   ├── utils.rs           # Shared utilities\n│   └── commands/          # Command implementations\n│       ├── mod.rs\n│       ├── lint.rs\n│       ├── deploy.rs\n│       ├── k8s.rs\n│       ├── rollback.rs\n│       ├── status.rs\n│       ├── validate.rs\n│       ├── config_cmd.rs\n│       └── context.rs\n├── tests/                 # Integration tests\n├── examples/              # Example configurations\n└── docs/                  # Documentation\n```\n\n## 🎯 Use Cases\n\n### CI/CD Integration\n```bash\n# In your CI/CD pipeline\nhelmctl lint -f helmfile.yaml -e staging --strict\nhelmctl deploy -f helmfile.yaml -e staging --dry-run\nhelmctl deploy -f helmfile.yaml -e staging\nhelmctl status -f helmfile.yaml -e staging --detailed\n```\n\n### Development Workflow\n```bash\n# Local development\nhelmctl config set default_environment development\nhelmctl lint -f helmfile.yaml\nhelmctl deploy -f helmfile.yaml --dry-run\nhelmctl deploy -f helmfile.yaml\n```\n\n### Production Deployment\n```bash\n# Production deployment with safety checks\nhelmctl context use production-cluster\nhelmctl lint -f helmfile.yaml -e production --strict\nhelmctl deploy -f helmfile.yaml -e production --diff\nhelmctl deploy -f helmfile.yaml -e production\nhelmctl status -f helmfile.yaml -e production --detailed\n```\n\n### Troubleshooting\n```bash\n# Debugging failed deployments\nhelmctl status -f helmfile.yaml -e staging --detailed\nhelmctl validate -f helmfile.yaml -e staging --verbose\nhelmctl rollback -f helmfile.yaml -e staging\n```\n\n## 📊 Examples\n\n### Basic Helmfile Structure\n```yaml\n# helmfile.yaml\nrepositories:\n  - name: bitnami\n    url: https://charts.bitnami.com/bitnami\n\nenvironments:\n  development:\n    values:\n      - environments/development.yaml\n  production:\n    values:\n      - environments/production.yaml\n\nreleases:\n  - name: nginx\n    chart: bitnami/nginx\n    version: \"15.4.4\"\n    values:\n      - values/nginx-{{ .Environment.Name }}.yaml\n```\n\n### Environment Configuration\n```yaml\n# environments/development.yaml\nnginx:\n  replicaCount: 1\n  service:\n    type: NodePort\n  resources:\n    requests:\n      memory: \"64Mi\"\n      cpu: \"50m\"\n```\n\n## 🆘 Troubleshooting\n\n### Common Issues\n\n#### Command Not Found\n```bash\n# Ensure required tools are installed\nwhich helmfile helm kubectl\n\n# Install missing tools\n# Helmfile: https://github.com/helmfile/helmfile#installation\n# Helm: https://helm.sh/docs/intro/install/\n# kubectl: https://kubernetes.io/docs/tasks/tools/\n```\n\n#### Repository Issues\n```bash\n# Update Helm repositories\nhelm repo update\n\n# Check repository list\nhelm repo list\n\n# Add missing repositories manually\nhelm repo add bitnami https://charts.bitnami.com/bitnami\n```\n\n#### Context Issues\n```bash\n# List available contexts\nkubectl config get-contexts\n\n# Set correct context\nkubectl config use-context \u003ccontext-name\u003e\n\n# Verify connection\nkubectl cluster-info\n```\n\n### Verbose Mode\nUse `--verbose` flag with any command to get detailed output:\n```bash\nhelmctl deploy -f helmfile.yaml -e development --verbose\n```\n\n### Log Files\nEnable logging to file for debugging:\n```bash\nhelmctl --log-file ./logs/helmctl.log deploy -f helmfile.yaml\n```\n\n## 🤝 Contributing\n\n1. **Fork the repository**\n2. **Create a feature branch**: `git checkout -b feature/amazing-feature`\n3. **Make your changes** following the coding standards\n4. **Run quality checks**: `make quality`\n5. **Test your changes**: `make test`\n6. **Commit your changes**: `git commit -m 'Add amazing feature'`\n7. **Push to the branch**: `git push origin feature/amazing-feature`\n8. **Open a Pull Request**\n\n### Development Guidelines\n- Follow Rust best practices and idioms\n- Maintain test coverage for new features\n- Update documentation for user-facing changes\n- Run `make quality` before submitting PRs\n- Use meaningful commit messages\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n- **Helmfile team** for the excellent Helmfile tool\n- **Helm community** for the Helm package manager\n- **Kubernetes community** for the orchestration platform\n- **Rust community** for the amazing programming language and ecosystem\n\n## 📞 Support\n\n- **Issues**: [GitHub Issues](https://github.com/akmshasan/helmctl/issues)\n- **Discussions**: [GitHub Discussions](https://github.com/akmshasan/helmctl/discussions)\n- **Documentation**: [Wiki](https://github.com/akmshasan/helmctl/wiki)\n\n---\n\n**Made with ❤️ and Rust 🦀**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakmshasan%2Fhelmctl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fakmshasan%2Fhelmctl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fakmshasan%2Fhelmctl/lists"}