{"id":44115996,"url":"https://github.com/sergelogvinov/helm-resources","last_synced_at":"2026-02-08T17:15:14.835Z","repository":{"id":336042754,"uuid":"1147741865","full_name":"sergelogvinov/helm-resources","owner":"sergelogvinov","description":"Shows resource requests and limits across all workloads, with recommendations for optimization.","archived":false,"fork":false,"pushed_at":"2026-02-02T14:37:09.000Z","size":60,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-03T02:29:11.812Z","etag":null,"topics":["helm","helm-plugin","kubernetes","resource-management"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sergelogvinov.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-02T06:36:02.000Z","updated_at":"2026-02-02T14:41:05.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/sergelogvinov/helm-resources","commit_stats":null,"previous_names":["sergelogvinov/helm-resources"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/sergelogvinov/helm-resources","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergelogvinov%2Fhelm-resources","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergelogvinov%2Fhelm-resources/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergelogvinov%2Fhelm-resources/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergelogvinov%2Fhelm-resources/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sergelogvinov","download_url":"https://codeload.github.com/sergelogvinov/helm-resources/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sergelogvinov%2Fhelm-resources/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29237567,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-08T14:18:14.570Z","status":"ssl_error","status_checked_at":"2026-02-08T14:18:14.071Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["helm","helm-plugin","kubernetes","resource-management"],"created_at":"2026-02-08T17:15:11.628Z","updated_at":"2026-02-08T17:15:14.830Z","avatar_url":"https://github.com/sergelogvinov.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Helm Resources Plugin\n\nA Helm plugin that displays resource requests and limits for all workloads in a helm release.\nIt also shows current resource usage and provides recommendations for under-provisioned containers.\n\n## Motivation\n\nI deploy applications using Helm charts in most cases, so it is crucial to ensure that resource requests and limits are properly configured for each workload.\nThis allows the Kubernetes scheduler to make better decisions about how to distribute workloads across cluster nodes.\nIt also helps node autoscalers or Karpenter, to scale the cluster based on actual resource usage.\n\nHowever, application code is constantly evolving: new features are added, and resource consumption patterns change over time.\nWhat was an appropriate configuration for resource requests and limits a month ago may no longer be sufficient today.\n\nThis plugin helps identify such issues by comparing real-time resource usage with the configured requests and limits,\nand provides recommendations for adjusting them when necessary.\n\n## Installation\n\n```bash\nhelm plugin install https://github.com/sergelogvinov/helm-resources\n```\n\n## Usage\n\n```bash\n# Show resources for a release in the current namespace\nhelm resources my-release\n\n# Show resources for a release in a specific namespace\nhelm resources my-release --namespace production\n\n# Use external Prometheus server for metrics\nhelm resources my-release --prometheus-url http://prometheus.monitoring.svc.cluster.local:9090\n\n# Use maximum metrics instead of average\nhelm resources my-release --prometheus-url http://prometheus:9090 --aggregation max\n\n# Use custom time window with average metrics\nhelm resources my-release --prometheus-url http://prometheus:9090 --aggregation avg --metrics-window 1h\n\n# Apply resource recommendations to values file\nhelm resources my-release --prometheus-url http://prometheus:9090 --apply-to-values values.yaml\n```\n\n### Apply Resource Recommendations\n\nThe plugin can automatically apply resource recommendations to your Helm values file:\n\n```bash\n# Apply recommendations to a values file\nhelm resources my-release --prometheus-url http://prometheus:9090 --apply-to-values values.yaml\n\n# Apply with specific metrics window and aggregation\nhelm resources my-release --prometheus-url http://prometheus:9090 --aggregation max --metrics-window 1h --apply-to-values values.yaml\n```\n\nThis feature will:\n- Analyze current resource usage from Prometheus metrics\n- Calculate optimal resource requests and limits with safety margins\n- Update the specified values file with the new recommendations\n- Preserve existing YAML structure and comments\n- Add missing `resources` sections where needed\n\n**Example values.yaml update:**\n\nBefore:\n```yaml\nservices:\n  web-server:\n    containers:\n    - name: nginx\n      image: nginx:latest\n```\n\nAfter applying recommendations:\n```yaml\nservices:\n  web-server:\n    containers:\n    - name: nginx\n      image: nginx:latest\n      resources:\n        limits:\n          cpu: 127m\n          memory: 142Mi\n        requests:\n          cpu: 102m\n          memory: 114Mi\n```\n\nATTAENTION: Currently, this feature works with helm charts [backend-common](https://github.com/sergelogvinov/helm-charts/tree/main/charts/backend-common)\n\n### Output Formats\n\n```bash\n# Default table format\nhelm resources my-release\n\n# JSON output\nhelm resources my-release -o json\n\n# YAML output\nhelm resources my-release -o yaml\n```\n\n### Example Output\n\n**Table format:**\n\n```\nKIND         NAME            REPLICAS  CONTAINER     REQUESTS (CPU/Memory)  LIMITS (CPU/Memory)   USAGE (CPU/Memory)\nDeployment   web-server      2         nginx         100m/128Mi             500m/512Mi            85m/95Mi\nDeployment   web-server      2         sidecar       50m/64Mi               100m/128Mi            35m/48Mi\nStatefulSet  database        2         postgres      200m/256Mi             1/1Gi                 320m/400Mi\nDaemonSet    log-collector   3         fluentd       50m/64Mi               200m/256Mi            42m/58Mi\n\nRESOURCE RECOMMENDATIONS:\n\nKIND        NAME      CONTAINER  CURRENT (CPU/Memory)  RECOMMENDED (CPU/Memory)\nStatefulSet database  postgres   200m/256Mi            384m/480Mi\n```\n\n**Resource Analysis:**\n\nThe plugin automatically analyzes resource usage vs requests and provides recommendations when:\n- Container usage exceeds resource requests\n- Recommendations suggest 20% buffer above current usage\n\n## Metrics Sources\n\nThe plugin can fetch current resource usage metrics from Prometheus.\n\n```bash\nhelm resources my-app --prometheus-url http://prometheus.monitoring.svc.cluster.local:9090\nhelm resources my-app --prometheus-url https://prometheus.example.com --aggregation avg --metrics-window 1h\nhelm resources my-app --prometheus-url http://prometheus:9090 --aggregation max --metrics-window 24h\n```\n\n### Aggregation Options\n\n- `avg` - Average metrics (default) - better for typical usage patterns\n- `max` - Maximum metrics - better for capacity planning and peak analysis\n\n### Metrics Window Options\n\n- `5m` - 5 minutes (default)\n- `15m` - 15 minutes\n- `1h` - 1 hour\n- `6h` - 6 hours\n- `24h` - 24 hours\n- `7d` - 7 days\n\n## Requirements\n\n- Helm v3+\n- Kubernetes cluster access\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsergelogvinov%2Fhelm-resources","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsergelogvinov%2Fhelm-resources","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsergelogvinov%2Fhelm-resources/lists"}