# PremiScale
![GitHub Release](https://img.shields.io/github/v/release/premiscale/premiscale?include_prereleases&sort=semver&display_name=release&link=https%3A%2F%2Fgithub.com%2Fpremiscale%2Fpremiscale%2Freleases)
![Business License 1.1](https://img.shields.io/badge/License-Business_Source_1.1-red)
PremiScale is a controller that brings autoscaling of virtual and physical infrastructure to local, self-hosted and private data centers, with a particular focus on integrating with the Kubernetes [cluster autoscaler](https://github.com/kubernetes/autoscaler).
## Architecture
PremiScale uses [libvirt](https://libvirt.org/) to connect to hosts and manage lifecycles of virtual machines. The Libvirt daemon provides a rich API for interacting with hypervisors, hosts and virtual machines.
The controller can be configured to run in two different modes, including `kubernetes` and `standalone` modes. In either configuration, the controller aims to start only relevant processes for both data collection and managing virtual machines and hardware.
### Standalone
In `standalone` mode, the controller starts its own time series data collection process.
<p align="center" width="100%">
<img width="100%" src="https://raw.githubusercontent.com/premiscale/premiscale/master/img/premiscale-architecture-controller_internal_autoscaler_enabled.svg" alt="premiscale architecture: internal autoscaler enabled">
</p>
### Kubernetes
Starting the controller in `kubernetes` mode starts relevant components of the controller that allow it to interface with the cluster autoscaler.
<p align="center" width="100%">
<img width="100%" src="https://raw.githubusercontent.com/premiscale/premiscale/master/img/premiscale-architecture-controller_internal_autoscaler_disabled.svg" alt="premiscale architecture: internal autoscaler disabled">
</p>
Note that, in this configuration, the controller does not require a time series database. State is still reconciled, but the time series signal comes from the cluster autoscaler instead.
## Configuration
The controller is configured in a couple ways, including its command line interface, environment variables (as indicated in the help text below), and through the required config file (all versions of which are documented [here](https://github.com/premiscale/premiscale/tree/master/src/premiscale/config/docs) in this repository).
## Installation
This project is intended to be deployed to Kubernetes, whether you intend to integrate with the cluster autoscaler or not.
See the Helm [chart README](https://github.com/premiscale/premiscale/tree/master/helm/premiscale) for an overview of controller installation.
Raw data
{
"_id": null,
"home_page": "https://premiscale.com",
"name": "premiscale",
"maintainer": "Emma Doyle",
"docs_url": null,
"requires_python": "<4.0,>=3.10",
"maintainer_email": "emma@premiscale.com",
"keywords": "premiscale, kubernetes, virtual machine, infrastructure, autoscaling, asg, qemu, xen, esx, esxi, kvm, libvirt",
"author": "Emma Doyle",
"author_email": "emma@premiscale.com",
"download_url": "https://files.pythonhosted.org/packages/27/94/991ef10eef1b9082f75a0e6454f5d3d94525c281c9ce038e1173b8ada3f2/premiscale-0.0.7.tar.gz",
"platform": null,
"description": "# PremiScale\n\n![GitHub Release](https://img.shields.io/github/v/release/premiscale/premiscale?include_prereleases&sort=semver&display_name=release&link=https%3A%2F%2Fgithub.com%2Fpremiscale%2Fpremiscale%2Freleases)\n![Business License 1.1](https://img.shields.io/badge/License-Business_Source_1.1-red)\n\n\nPremiScale is a controller that brings autoscaling of virtual and physical infrastructure to local, self-hosted and private data centers, with a particular focus on integrating with the Kubernetes [cluster autoscaler](https://github.com/kubernetes/autoscaler).\n\n## Architecture\n\nPremiScale uses [libvirt](https://libvirt.org/) to connect to hosts and manage lifecycles of virtual machines. The Libvirt daemon provides a rich API for interacting with hypervisors, hosts and virtual machines.\n\nThe controller can be configured to run in two different modes, including `kubernetes` and `standalone` modes. In either configuration, the controller aims to start only relevant processes for both data collection and managing virtual machines and hardware.\n\n### Standalone\n\nIn `standalone` mode, the controller starts its own time series data collection process.\n\n<p align=\"center\" width=\"100%\">\n <img width=\"100%\" src=\"https://raw.githubusercontent.com/premiscale/premiscale/master/img/premiscale-architecture-controller_internal_autoscaler_enabled.svg\" alt=\"premiscale architecture: internal autoscaler enabled\">\n</p>\n\n### Kubernetes\n\nStarting the controller in `kubernetes` mode starts relevant components of the controller that allow it to interface with the cluster autoscaler.\n\n<p align=\"center\" width=\"100%\">\n <img width=\"100%\" src=\"https://raw.githubusercontent.com/premiscale/premiscale/master/img/premiscale-architecture-controller_internal_autoscaler_disabled.svg\" alt=\"premiscale architecture: internal autoscaler disabled\">\n</p>\n\nNote that, in this configuration, the controller does not require a time series database. State is still reconciled, but the time series signal comes from the cluster autoscaler instead.\n\n## Configuration\n\nThe controller is configured in a couple ways, including its command line interface, environment variables (as indicated in the help text below), and through the required config file (all versions of which are documented [here](https://github.com/premiscale/premiscale/tree/master/src/premiscale/config/docs) in this repository).\n\n## Installation\n\nThis project is intended to be deployed to Kubernetes, whether you intend to integrate with the cluster autoscaler or not.\n\nSee the Helm [chart README](https://github.com/premiscale/premiscale/tree/master/helm/premiscale) for an overview of controller installation.\n\n",
"bugtrack_url": null,
"license": "BSL 1.1",
"summary": "A Kubernetes controller that automatically scales and administers private virtual and physical infrastructure",
"version": "0.0.7",
"project_urls": {
"Documentation": "https://docs.premiscale.com",
"Homepage": "https://premiscale.com",
"Repository": "https://github.com/premiscale/premiscale"
},
"split_keywords": [
"premiscale",
" kubernetes",
" virtual machine",
" infrastructure",
" autoscaling",
" asg",
" qemu",
" xen",
" esx",
" esxi",
" kvm",
" libvirt"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "dac83068378895ea458f2b692cfee24c91eb50f3920f4f5772fb50bfda3a0fbe",
"md5": "4368c0d255cc441195dad52c012edd3a",
"sha256": "a68f26c77d59de0b2a92af9ce73e56b62726ad49329fc44f3df51ecbf5f594ef"
},
"downloads": -1,
"filename": "premiscale-0.0.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "4368c0d255cc441195dad52c012edd3a",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.10",
"size": 54646,
"upload_time": "2024-07-17T12:23:35",
"upload_time_iso_8601": "2024-07-17T12:23:35.035782Z",
"url": "https://files.pythonhosted.org/packages/da/c8/3068378895ea458f2b692cfee24c91eb50f3920f4f5772fb50bfda3a0fbe/premiscale-0.0.7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "2794991ef10eef1b9082f75a0e6454f5d3d94525c281c9ce038e1173b8ada3f2",
"md5": "652f2aef34366921951c24e09b6d903c",
"sha256": "2649d686da6be49ba3577075e004afa6e980e50a9bee36ffe619fa08e9268787"
},
"downloads": -1,
"filename": "premiscale-0.0.7.tar.gz",
"has_sig": false,
"md5_digest": "652f2aef34366921951c24e09b6d903c",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.10",
"size": 37677,
"upload_time": "2024-07-17T12:23:36",
"upload_time_iso_8601": "2024-07-17T12:23:36.654347Z",
"url": "https://files.pythonhosted.org/packages/27/94/991ef10eef1b9082f75a0e6454f5d3d94525c281c9ce038e1173b8ada3f2/premiscale-0.0.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-17 12:23:36",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "premiscale",
"github_project": "premiscale",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"circle": true,
"requirements": [],
"lcname": "premiscale"
}