feat: introduce emulation for sc, pv and pvc #38
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #12.
Implementation Details
In Kubernetes,
Storage Class
,Persistent Volume Claim
, andPersistent Volume
are generally used for storage. Translating these to the Docker terms:Unlike Kubernetes, where a storage class can be defined as a manifest, creating a Volume plugin on demand is impossible at the Docker layer. Hence, only the
GET
andLIST
operations will be added, defaulting to thelocal
Docker Volume driver only as a starting point.Since there is no concept of Persistent Volume Claim in Docker, the decision was to merge PV and PVC into Docker Volume. This means that the creation and deletion of a Docker Volume are only activated via PVC (dynamic PV creation). The user will not be able to create a PV and statically map it to a PVC. Rather, you can rely on the PVC to dynamically provision a PV, which is a Docker Volume in the backend.
Due to Docker Volume's immutable nature, for instance, updating its labels requires a complete recreation; the reclaim policy is set to
Delete
. There is a separate discussion to change the default policy toRetain
.The details of PVC are stored as a Docker Volume label, and PV is directly obtained from the specification of a Docker Volume.
Finally, mounting a PVC to a pod is equivalent to a Docker volume mount;
docker run -v ${DOCKER_VOLUME}:/${PATH}
.