/maya

OpenEBS storage orchestrator and infrastructure management engine, extending K8S and other to enable containerized storage for containers.

Primary LanguageGoApache License 2.0Apache-2.0

Overview

Build Status Go Report codecov GoDoc

This repository hosts the source code for OpenEBS Storage Orchestration Engine.

OpenEBS Storage Orchestration (aka Maya, meaning Magic) aims at managing storage for millions of containers with deceptive simplicity. Maya is the control plane for OpenEBS Storage. Maya is developed with a focused goal of easing(and at times completely eliminating) the Storage Ops for containers like

  • managing Storage Volumes (Persistent Volumes) and
  • managing Storage Infrastructure (Physical Storage - Local/Cloud Disks/SSDs/Cache, Controllers, Networks).

OpenEBS Maya allows you to manage storage across multiple zones (aka clusters/environments), that are co-located or geographically separated and can also run from within a single host. Maya can move the storage across different tiers based on the application needs (volume migration). Maya can learn and adapt to the changing environment through machine learning and data analytics.

Design

Maya - Storage Orchestration functionality is delivered through a set of services and tools that seamlessly integrate Maya into your Container Orchestrators like Kubernetes, Docker Swarm, etc., Maya comprises of several components, which are themself delivered as container images.

Maya components can be broadly classified based on their deployment type as follows:

  • Cluster Components - like API Server (maya-apiserver) that helps in processing the requests for creating new OpenEBS Volumes. The API server, will use the container orchestrators to provision the OpenEBS Volume Containers. Another example is the Smart Analytics (maya-mulebot) engine that gathers the data via the machine learning probes and runs heuristics analysis to optimize storage deployment.

  • Node/Host Components - are the services and tools that run on each of the nodes or docker hosts. In case of Kubernetes, these components are deployed as DaemonSets. The functionality of these components is local to the node like, Storage Agents (maya-agent) managing the disks attached to the hosts and helping in carving out the required disks to different OpenEBS Volumes. The agent can interact with Cluster components and vice-versa.

To start using Maya

Please refer to our documentation at OpenEBS Documentation

Start developing Maya

Head over to the developer's documentation for more details.

Dependency management

Maya uses golang dep to manage dependencies. Usage can be found on dep README.