Background
The requirement initial from RESTful API Binary Provisioning Agent which provide interface to operator to upload image objects.
There are 3 key functionality for RESTful API Agent:
- Image provisioning (upload)
- REST API (POST/PUT/PATCH/DELETE etc)
- Support resumable upload
And backend storage is needed, the relationship as following chart.
Backend Storage Solution
Also we have several considerations for the backend storage solution:
- Data reliability: some mechanism like replication to make sure the data can be recovered.
- Cloud native: Support docker or Kubernetes deployment.
- Amazon S3 API compatible: Support S3 API which is factual standard.
- Multipart upload is better: which can speed up or resume when upload thread is break.
Solution 1: GrideFS
Solution 2: MinIO
So the better solution is MinIO, which can provide Cloud Storage service for Local Controller.
MinIO Client plugin for RESTful API Agent
MinIO Server and storage service
MinIO server deploy by Kubernetes, which has 2 modes: Standalone and Distribute.
The volume of MinIO export also can be used for HTTP server.