<p>Kubernetes volume support is listed here <a href="https://github.com/kubernetes/kubernetes/blob/release-1.0/docs/user-guide/volumes.md" rel="nofollow">https://github.com/kubernetes/kubernetes/blob/release-1.0/docs/user-guide/volumes.md</a> , however it does not currently meet my needs. </p>

<p>I need to support object storage, both Openstack Swift API and S3 compatible API. (k8s does support AWS directly but I can't use it to connect to a different private object storage that uses the s3 API). </p>

<p>Is there any way to extend the functionality to support these two object storage APIs? I need to be able to mount from object storage into pods.</p>

<p>EDIT: For now I don't have to support swift API, just the S3 API. Keep in mind it's not actually AWS storage, it's merely using S3 compatible API</p>

<p>I have been thinking of ways to enable swift as a volume plugin. Volume plugins for cloud block storage (EBS, cinder, persistent disk) are straight forward when compared to object storage. The main difference being block storage disks can be provisioned and attached to the vm on which kubelet is running, which can be mounted into the container. After which, it will behave like local file system and does not need any extra care. Read only mounts of object storage are also fairly straight forward and the functionality can be similar to <a href="https://github.com/kubernetes/kubernetes/blob/release-1.0/docs/user-guide/volumes.md#gitrepo" rel="nofollow">gitRepo</a>.</p>

<p>On the other hand, writing back to object storage gets tricky. 
2 ways come to mind: </p>

<ol>
<li>Some sort user space file system plugin which will map to the remote system.</li>
<li>Use a side car container whose sole purpose would be to sync a particular dir to object storage system.</li>
</ol>

<p>Obviously both of the approaches would be significantly slow in terms of performance which will probably be directly proportional to network bandwidth.</p>
