Skip to content

Commit

Permalink
📝 docs(main): Update documentation (#21)
Browse files Browse the repository at this point in the history
Signed-off-by: Mriyam Tamuli <mbtamuli@gmail.com>
  • Loading branch information
mbtamuli authored Dec 27, 2023
1 parent 93ea24e commit 0903762
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 18 deletions.
18 changes: 5 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,22 +2,14 @@

The goals of this project are

- [ ] Create a quickstart project for the [CSI specification](https://github.com/container-storage-interface/spec/blob/master/spec.md)
- [x] Easy to read guide summarizing the requirements of a basic CSI plugin simulating [`emptyDir`](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir).
- [ ] Code implementing the bare minimum plugin described the guide.
- [x] References helpful for learning the supplementary knowledge not directly related to Kubernetes/CSI.
- [ ] Document every decision, resource and changes in the project.
- [ ] Create a quickstart project for the [CSI specification](https://github.com/container-storage-interface/spec/blob/master/spec.md) - :construction: WIP: [emptyDirClone](./emptyDirClone/)
- [x] Easy to read guide summarizing the requirements of a basic CSI plugin simulating [`emptyDir`](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir). - [emptyDirClone Guide](./emptyDirClone/)
- [ ] Code implementing the bare minimum plugin described the guide. :construction: WIP: [emptyDirClone](./emptyDirClone/)
- [ ] References helpful for learning the supplementary knowledge not directly related to Kubernetes/CSI. - [References](./emptyDirClone/README.md#readingreferences)
- [ ] Document every decision, resource and changes in the project. - [Decisions](./emptyDirClone/docs/decisions.md)

### Stretch Goals
- [ ] Examples describing different scenarios. Different branches/subdirectories for each example, that are as much self-contained as possible.
- [ ] Volume created external to Kubernetes, manually.
- [ ] Have a simple API providing a volume that can be invoked by the CSI plugin.
- [ ] Volume from a public cloud provider.

## Decisions

### Simulate [`emptyDir`](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir) or [`hostPath`](https://kubernetes.io/docs/concepts/storage/volumes/#hostpath)

**Verdict:** I've decided to go with [`emptyDir`](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir).

**Reason:** After skimming the documentation for both, I would like to take what seems like the simplest option. [`hostPath`](https://kubernetes.io/docs/concepts/storage/volumes/#hostpath) requires a [privileged Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) and would, most probably, require the plugin to be aware of the filesystem on the node and behave differently increasing complexity.
10 changes: 5 additions & 5 deletions emptyDirClone/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ This document introduces the `emptyDirClone` Container Storage Interface (CSI) p

CSI was developed as a standard for exposing arbitrary block and file storage storage systems to containerized workloads on Container Orchestration Systems (COs) like Kubernetes. With the adoption of the Container Storage Interface, the Kubernetes volume layer becomes truly extensible. The advantage of using CSI is that external storage providers can create and deploy plugins to introduce new storage systems in Kubernetes without having to modify the core Kubernetes code directly.

For more information, you can refer to the resources provided in the [Required Reading](#required-reading) and [Optional Reading](#optional-reading) sections. The CSI specification itself is included in the [Optional Reading](#optional-reading) section. Keep in mind that this guide is designed to be beginner-friendly and serve as a quick start for CSI plugins. The additional tutorials and resources listed in the [Required Reading](#required-reading) section are considered sufficient for understanding the topic.
For more information, you can refer to the resources provided in the [Required Reading](#required) and [Optional Reading](#optional) sections. The CSI specification itself is included in the [Optional Reading](#optional) section. Keep in mind that this guide is designed to be beginner-friendly and serve as a quick start for CSI plugins. The additional tutorials and resources listed in the [Required Reading](#required) section are considered sufficient for understanding the topic.

We will call the plugin `emptyDirClone`.

Expand Down Expand Up @@ -115,9 +115,9 @@ spec:
}
```

## Reading/References


## Required Reading
### Required

- [Volumes](https://kubernetes.io/docs/concepts/storage/volumes/)
- [Configure a Pod to Use a Volume for Storage](https://kubernetes.io/docs/tasks/configure-pod-container/configure-volume-storage/)
Expand All @@ -126,11 +126,11 @@ spec:
- [Kubernetes Container Storage Interface (CSI) Documentation](https://kubernetes-csi.github.io/docs/)
- [Recommended Mechanism for Deploying CSI Drivers on Kubernetes](https://github.com/kubernetes/design-proposals-archive/blob/main/storage/container-storage-interface.md#recommended-mechanism-for-deploying-csi-drivers-on-kubernetes)

### References/Tools
### Tools/Examples
- Example implementation - [csi-driver-host-path](https://github.com/kubernetes-csi/csi-driver-host-path)
- Local Testing tool - [`csc`](https://github.com/rexray/gocsi/tree/master/csc)

## Optional Reading
### Optional

- [CSI Volume Plugins in Kubernetes Design Doc](https://github.com/kubernetes/design-proposals-archive/blob/main/storage/container-storage-interface.md)
- [Container Storage Interface (CSI) for Kubernetes GA](https://kubernetes.io/blog/2019/01/15/container-storage-interface-ga/)
Expand Down
7 changes: 7 additions & 0 deletions emptyDirClone/docs/decisions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Decisions

## Simulate [`emptyDir`](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir) or [`hostPath`](https://kubernetes.io/docs/concepts/storage/volumes/#hostpath)

**Verdict:** I've decided to go with [`emptyDir`](https://kubernetes.io/docs/concepts/storage/volumes/#emptydir).

**Reason:** After skimming the documentation for both, I would like to take what seems like the simplest option. [`hostPath`](https://kubernetes.io/docs/concepts/storage/volumes/#hostpath) requires a [privileged Container](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/) and would, most probably, require the plugin to be aware of the filesystem on the node and behave differently increasing complexity.

0 comments on commit 0903762

Please sign in to comment.