/maya

OpenEBS Maya extends Kubernetes capabilities to orchestrate CAS containers.

Primary LanguageGoApache License 2.0Apache-2.0

Overview

Build Status Codacy Badge Go Report codecov GoDoc License FOSSA Status CII Best Practices

Visit https://docs.openebs.io to learn about Container Attached Storage(CAS) and full documentation on using OpenEBS Maya.

OpenEBS Maya extends the capabilities of Kubernetes to orchestrate CAS (aka Container Native) Storage Solutions like OpenEBS Jiva, OpenEBS cStor, etc. Maya (meaning Magic), seamlessly integrates into the Kubernetes Storage Workflow and helps provision and manage the CAS based Storage Volumes. The core-features of Maya include:

  • Maintaining the inventory of the underlying disks on the Kubernetes Nodes.

  • Managing the allocation of Disks to CAS Storage Engines.

  • Provisioning of CAS Volumes by interfacing with K8s Dynamic Volume Provisioner.

  • Managing the high availability of the CAS volumes by tuning the scheduling parameters of CAS Deployments (Pods).

  • Provide adapters to CAS Volumes to interact with Kubernetes and related infrastructure components like Prometheus, Grafana etc.

Maya orchestration and management capabilities are delivered through a set of services and tools. Currently, these services support deploying the CAS Storage Solutions in Kubernetes Clusters. In future, these can be extended to support other Container Orchestrators.

Maya Architecture

Maya Architecture

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

  • Control Plane Components - These are containers that are initialized as part of enabling OpenEBS in a Kubernetes cluster.

    • maya-apiserver helps with creation of CAS Volumes and provides API endpoints to manage those volumes. maya-apiserver can also be considered as a template engine that can be easily extended to support any kind of CAS storage solutions. It takes as input a set of CAS templates that are converted into CAS K8s YAMLs based on user requests.
    • provisioner is an implementation of Kubernetes Dynamic Provisioner that processes the PVC requests by interacting with maya-apiserver.
  • CAS Side-car Components - These are adapter components that help with managing the CAS containers that do not inherently come up with the required endpoints. For example:

    • maya-exporter helps in providing a metrics endpoint to the CAS container.
    • cas-mgmt components can be attached as side-cars for helping to store/retrieve configuration information from Kubernetes Config Store (etcd). For cStor CAS solution, cstor-pool-mgmt is one such cas-mgmt component.
  • CLI - While most of the operations can be performed via the kubectl, Maya also comes with mayactl that helps retrieve storage related information for debugging/troubleshooting storage related issues.

Install

Please refer to our documentation at OpenEBS Documentation.

Contributing

Head over to the CONTRIBUTING.md.

Community

See the OpenEBS Community page for reaching out to the OpenEBS Developers.

More Info

License

FOSSA Status