{"id":19096589,"url":"https://github.com/sapcc/vpa_butler","last_synced_at":"2025-04-30T14:15:25.951Z","repository":{"id":38443127,"uuid":"461933548","full_name":"sapcc/vpa_butler","owner":"sapcc","description":"creates initial vertical pod autoscalers based upon deployment / statefulset / daemonset","archived":false,"fork":false,"pushed_at":"2025-04-11T09:52:06.000Z","size":419,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":46,"default_branch":"main","last_synced_at":"2025-04-19T03:36:31.762Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sapcc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-02-21T16:02:42.000Z","updated_at":"2025-04-17T12:14:50.000Z","dependencies_parsed_at":"2024-01-12T12:49:09.210Z","dependency_job_id":"c4b73288-a562-4868-bde6-7365ccbbc007","html_url":"https://github.com/sapcc/vpa_butler","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sapcc%2Fvpa_butler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sapcc%2Fvpa_butler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sapcc%2Fvpa_butler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sapcc%2Fvpa_butler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sapcc","download_url":"https://codeload.github.com/sapcc/vpa_butler/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251719377,"owners_count":21632666,"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":[],"created_at":"2024-11-09T03:37:11.055Z","updated_at":"2025-04-30T14:15:25.928Z","avatar_url":"https://github.com/sapcc.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# vpa_butler\n![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/sapcc/vpa_butler/ci.yaml?branch=main)\n[![Coverage Status](https://coveralls.io/repos/github/sapcc/vpa_butler/badge.svg)](https://coveralls.io/github/sapcc/vpa_butler)\n\nA Kubernetes controller designed to simplify the process of deploying and managing [VerticalPodAutoscalers](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler) (VPAs) for deployments, statefulsets, and daemonsets.\nThis controller automatically creates instances of the `VerticalPodAutoscaler` CRD as payload is created in your cluster, saving developers time and effort.\n\n## Motivation\nDeploying VPA instances is a necessary step to enable automatic scaling for workloads in Kubernetes.\nHowever, the process of manually deploying VPA instances can be tedious and time-consuming.\nvpa_butler automates this process by creating `VerticalPodAutoscalers` with reasonable defaults while respecting custom VPA instances.\n\n## Functionality\n\nvpa_butler is a Kubernetes controller that continuously watches all deployments, statefulsets, and daemonsets within your cluster.\nWhen it encounters a resource not currently being targeted by a VPA instance, it creates a new VPA resource with appropriate defaults.\n \nThe served VPA is constructed in the following way:\n- The VPA is created in the same namespace as the targeted resource and named like the targeted resource adding the suffix `-deployment`, `-statefulset`, `-daemonset`.\n- The update mode is set to the value of the `--default-vpa-update-mode` CLI flag.\n- The `minAllowed` recommendation is set to the values of the `--default-min-allowed-cpu` and `--default-min-allowed-memory` CLI flags.\n- The `maxAllowed` recommendation is set to the percentage of capacity specified by the `--capacity-percent` CLI flag of the largest viable node regarding memory. The vpa_butler determines the viable nodes by considering, where pods of the payload could be scheduled on respecting `NodeName`, `NodeAffinity`, `NodeUnscheduable` and `TaintToleration`.\n\nEvery 30 seconds the `maxAllowed` values are updated.\nThis feature ensures that pods stay schedulable.\nTo opt-out of the vpa_butler, deploy a custom VPA instance along with the payload.\nThe vpa_butler will clean-up the VPA instances it served.\n\nThe served VPA can be adjusted using the following annotations on the payload resource (do **not** annotate the pod template):\n- `vpa-butler.cloud.sap/main-container` can be set to the name of the most resource-hungry container of eventually created pods. That container will have the `maxAllowed` recommendations increased.\n- `vpa-butler.cloud.sap/update-mode` sets the update mode on the served VPA.\n- `vpa-butler.cloud.sap/controlled-values` sets the controlled values on the served VPA.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsapcc%2Fvpa_butler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsapcc%2Fvpa_butler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsapcc%2Fvpa_butler/lists"}