From a0913506cf3fa90044e3fc1fc50deaa1f1fa077f Mon Sep 17 00:00:00 2001 From: Arno Uhlig Date: Thu, 3 Apr 2025 12:41:29 +0200 Subject: [PATCH 1/2] update readme.md --- README.md | 58 +++++++++-------------------------------- docs/developer/local.md | 38 +++++++++++++++++++++++++++ docs/readme.md | 5 ---- 3 files changed, 51 insertions(+), 50 deletions(-) create mode 100644 docs/developer/local.md delete mode 100644 docs/readme.md diff --git a/README.md b/README.md index 2f1652df..66b5a59e 100644 --- a/README.md +++ b/README.md @@ -8,64 +8,32 @@ # Cortex -Cortex is an intelligent service for initial placement and scheduling of compute workloads within an [OpenStack](https://www.openstack.org/) cloud environment. It is designed to improve resource usage in a data center by making smart(er) decisions about where to place VMs, with future support planned for storage and network workloads. +Cortex is an advanced initial placement and scheduling service for compute, storage, and network workloads within OpenStack cloud environments. -## Background - -Efficient and balanced resource utilization is key for cloud infrastructure providers to maintain operational performance and cost-effectiveness. In a dynamic cloud environment where workloads are constantly being created, moved, and deleted, a smart placement can help avoid resource bottlenecks and ensure high availability. - -OpenStack provides core services for managing compute, storage, and network resources in a cloud environment ([learn more](https://docs.openstack.org/de/security-guide/introduction/introduction-to-openstack.html)). Cortex extends the scheduling logic of these services by adding a layer of intelligence that can make more informed decisions about where to place workloads based on the current state of the data center. +**Idea**: Chainable filter and weigher pipeline, leveraging heuristic-based decision-making to optimize placement and scheduling. ## Features -- **Data sync:** Flexible framework to sync metrics and placement information of a data center. -- **Knowledge extraction**: Logic to extract simple or advanced knowledge ("features") from the synced data. -- **Smart scheduling:** Fast and scalable scheduling pipeline for VMs based on the extracted knowledge. - -## Documentation - -Read the full documentation at [docs/readme.md](docs/readme.md). - -## Roadmap +- **Unified Placement and Scheduling**: Combines initial placement and scheduling (re-balancing) within a single, efficient framework. -See our [roadmap](https://github.com/orgs/cobaltcore-dev/projects/14) and [issue tracker](https://github.com/cobaltcore-dev/cortex/issues) for upcoming features and improvements. +- **Minimal Resource Footprint**: Designed to operate with low resource consumption, optimizing performance. -## Quickstart +- **High Scalability**: Validated in large-scale, production environments with compute workload up to 50,000 VMs and 2,000 hypervisors. -### 1. Tilt Values Setup +- **Straightforward Integration**: Connects the initial placement component to the respective message queue and uses OpenStack APIs for scheduling. -Copy the example secrets values file. This file is used for local development and overrides the Helm chart values provided in [values.yaml](helm/cortex/values.yaml) for your local testing setup. -```bash -cp cortex.secrets.example.yaml "${HOME}/cortex.secrets.yaml" -``` +- **Extensible Architecture**: Chainable concept for filters and weighers, allowing flexible customization. -> [!WARNING] -> It is recommended to put the secrets file somewhere outside of the project directory. In this way, it won't be accidentally committed to the repository. +- **Knowledge Database**: Stores and retrieves enriched environmental data, enabling intelligent decision-making. -After copying the file, fill in the necessary values. - -Then, tell tilt where to find your secrets file: -```bash -export TILT_VALUES_PATH="${HOME}/cortex.secrets.yaml" -``` - -### 2. Running Tilt - -Run the tilt setup in minikube: -```bash -minikube start && tilt up -``` - -Point your browser to http://localhost:10350/ - if you did everything correctly, you should see the cortex services spin up in the browser. +## Documentation -### 3. Simulate Nova Requests +- **Users** can find more information on the ideas and concepts behind cortex in [the feature docs](./docs/features.md) and [the architecture docs](./docs/architecture.md). +- **Developers** can find a guide on how to develop with cortex in [the development docs](./docs/develop.md). -To simulate Nova requests to your Cortex instance in Tilt, you can run the following command: -```bash -go run commands/fillup/fillup.go -``` +## Roadmap -The script will show where random new VMs would be placed. +See our [roadmap](https://github.com/orgs/cobaltcore-dev/projects/14) and [issue tracker](https://github.com/cobaltcore-dev/cortex/issues) for upcoming features and improvements. ## Support, Feedback, Contributing diff --git a/docs/developer/local.md b/docs/developer/local.md new file mode 100644 index 00000000..5de48af0 --- /dev/null +++ b/docs/developer/local.md @@ -0,0 +1,38 @@ +# Local Development Setup + +This guide provides an overview of the Cortex development process, including setting up the development environment, developing plugins, and testing the service. + +### 1. Tilt Values Setup + +Copy the example secrets values file. This file is used for local development and overrides the Helm chart values provided in [values.yaml](helm/cortex/values.yaml) for your local testing setup. +```bash +cp cortex.secrets.example.yaml "${HOME}/cortex.secrets.yaml" +``` + +> [!WARNING] +> It is recommended to put the secrets file somewhere outside of the project directory. In this way, it won't be accidentally committed to the repository. + +After copying the file, fill in the necessary values. + +Then, tell tilt where to find your secrets file: +```bash +export TILT_VALUES_PATH="${HOME}/cortex.secrets.yaml" +``` + +### 2. Running Tilt + +Run the tilt setup in minikube: +```bash +minikube start && tilt up +``` + +Point your browser to http://localhost:10350/ - if you did everything correctly, you should see the cortex services spin up in the browser. + +### 3. Simulate Nova Requests + +To simulate Nova requests to your Cortex instance in Tilt, you can run the following command: +```bash +go run commands/fillup/fillup.go +``` + +The script will show where random new VMs would be placed. diff --git a/docs/readme.md b/docs/readme.md deleted file mode 100644 index 15a02cc6..00000000 --- a/docs/readme.md +++ /dev/null @@ -1,5 +0,0 @@ -# What is Cortex? - -- For a deep understanding of the ideas and concepts behind cortex, see [the architecture docs](architecture.md). -- For a guide on how to develop with cortex, see [the development docs](develop.md). -- For a list of current and future scheduling features, see [the feature docs](features.md). From 8a7b3e252f8182ac4ab6060a84467475dc7447be Mon Sep 17 00:00:00 2001 From: Arno Uhlig Date: Thu, 3 Apr 2025 12:44:38 +0200 Subject: [PATCH 2/2] init structure --- docs/papers/.keep | 0 docs/users/.keep | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/papers/.keep create mode 100644 docs/users/.keep diff --git a/docs/papers/.keep b/docs/papers/.keep new file mode 100644 index 00000000..e69de29b diff --git a/docs/users/.keep b/docs/users/.keep new file mode 100644 index 00000000..e69de29b