Distributed Accelerator for Cloud Storage (DACS) is a distributed caching system for data-intensive workloads on Kubernetes. It places a high-throughput cache between applications and remote object storage. Cache servers use node-local storage to reduce repeated remote reads and improve data access throughput.
DACS is intended for Kubernetes users who operate data-heavy workloads and for contributors working on the cache data plane, clients, or Kubernetes management components.
Important
DACS is under active development and should currently be treated as pre-release software. APIs, configuration, and deployment behavior may change.
Warning
Security model: DACS currently assumes a single trust domain equal to the entire Kubernetes cluster. It does not yet provide tenant isolation and is not suitable for multi-tenant clusters. Any workload that can reach a DACS endpoint is treated as fully trusted with all cached data and operations. Read the security model before deploying.
Follow the AKS quickstart to install one ephemeral CacheServer on an existing AKS cluster and complete an end-to-end upload and download smoke test.
The published OCI charts and images at dacstest.azurecr.io are publicly readable
and can be pulled anonymously.
Use the deployment user guide to prepare local NVMe/RAID storage, install matching chart and image versions, configure a cache, verify the deployment, scale it, troubleshoot it, and uninstall it.
Use Build from source for a clean-clone build, targeted validation, build outputs, and common build failures. See Testing for integration, end-to-end, scenario, and performance test workflows.
Applications access data through CacheClient, the DACS Python client, or StorageIntercept. Cache servers store cache entries on local storage. On a cache miss, the storage interception path can read supported remote storage and populate the cache.
The Kubernetes cache controller creates and reconciles cache workloads from a
Cache custom resource. The CacheServer scheduler places host-storage cache
pods on suitable nodes. These management components are not in the data
transfer path.
Application
|
+-- CacheClient / DACS client / StorageIntercept
|-- cache lookup --------> CacheServer StatefulSet
| |
| +-- node-local storage
|-- on cache miss: read --> Azure Blob / remote object storage
+-- may populate cache ---> CacheServer StatefulSet
Kubernetes API
|
+-- Cache controller
|
+-- CacheServer scheduler
See Architecture for the detailed request flow.
| Goal or component | Documentation |
|---|---|
| Find the project maintainers | Maintainers |
| Evaluate DACS on AKS | Get running in 10 minutes |
| Understand the system architecture | Architecture |
| Understand the security model and trust boundary | Security model |
| Install and operate DACS | Deployment user guide |
| Build from a clean clone | Build from source |
| Understand Azure Pipelines build caching | Azure Pipelines build and caching |
| Understand GitHub Actions build caching | GitHub Actions build and caching |
| Run tests | Testing |
| Understand artifact versions and releases | Versioning and releases |
| Use deployment tooling | Deployment workflows |
| Configure the CacheServer chart | CacheServer Helm chart |
Configure the controller and Cache resource |
Cache controller Helm chart |
| Understand controller scaling | Cache controller scaling |
| Use the Python client | DACS Python client |
| Configure storage interception | StorageIntercept |
The build and runtime code targets Linux on amd64 and arm64. Documented
developer environments include Linux containers and Ubuntu under WSL2.
Kubernetes workflows cover Minikube and Azure Kubernetes Service (AKS). Native
Windows and macOS builds are not currently documented or supported.
Published OCI charts and container images at dacstest.azurecr.io are anonymously
pullable. Language packages are not currently published to public package
indexes; build them from this source distribution.
- Read CONTRIBUTING.md before proposing a change.
- Follow the Microsoft Open Source Code of Conduct.
- Report vulnerabilities using the private process in SECURITY.md, not through a public issue.
- Understand the assumed trust boundary before deploying: see the security model.
- Use the channels in SUPPORT.md for questions, bugs, and feature requests.
This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft's Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos is subject to those third parties' policies.