diff --git a/.gitignore b/.gitignore index 3b735ec..f665005 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,9 @@ # Go workspace file go.work + +# Ignore local kubeconfig files +*kubeconfig* + +# Ignore direnv files +.envrc diff --git a/CODEOWNERS b/CODEOWNERS new file mode 100644 index 0000000..1a143b6 --- /dev/null +++ b/CODEOWNERS @@ -0,0 +1 @@ +* @avorima @gfariasalves-ionos diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..49c4fe8 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,155 @@ +# Contributing to the IONOS Cloud block storage CSI driver + +First off, thanks for taking the time to contribute! ❤️ + +All types of contributions are encouraged and valued. See the [Table of Contents](#table-of-contents) for different ways +to help and details about how this project handles them. Please make sure to read the relevant section before making +your contribution. It will make it a lot easier for us maintainers and smooth out the experience for all involved. The +community looks forward to your contributions. 🎉 + +> And if you like the project, but just don't have time to contribute, that's fine. There are other easy ways to support +> the project and show your appreciation, which we would also be very happy about: +> - Star the project +> - Tweet about it +> - Refer this project in your project's readme +> - Mention the project at local meetups and tell your friends/colleagues + +## Table of Contents + +- [I Have a Question](#i-have-a-question) + - [I Want To Contribute](#i-want-to-contribute) + - [Reporting Bugs](#reporting-bugs) + - [Suggesting Enhancements](#suggesting-enhancements) + - [Your First Code Contribution](#your-first-code-contribution) + - [Improving The Documentation](#improving-the-documentation) +- [Styleguides](#styleguides) + - [Commit Messages](#commit-messages) +- [Join The Project Team](#join-the-project-team) + + + +## I Have a Question + +> If you want to ask a question, we assume that you have read the available +> [Documentation](https://github.com/ionos-cloud/ionoscloud-blockstorage-csi-driver/blob/main/README.md). + +Before you ask a question, it is best to search for existing +[Issues](https://github.com/ionos-cloud/ionoscloud-blockstorage-csi-driver/issues) that might help you. In case you have +found a suitable issue and still need clarification, you can write your question in this issue. It is also advisable to +search the internet for answers first. + +If you then still feel the need to ask a question and need clarification, we recommend the following: + +- Open an [Issue](https://github.com/ionos-cloud/ionoscloud-blockstorage-csi-driver/issues/new). +- Provide as much context as you can about what you're running into. +- Provide project and platform versions (Kubernetes cluster version, CSI version, etc), depending on what seems + relevant. + +We will then take care of the issue as soon as possible. + +## I Want To Contribute + +### Legal Notice +When contributing to this project, you must agree that you have authored 100% of the content, that you have the +necessary rights to the content and that the content you contribute may be provided under the project licence. + +### Reporting Bugs + +#### Before Submitting a Bug Report + +A good bug report shouldn't leave others needing to chase you up for more information. Therefore, we ask you to +investigate carefully, collect information and describe the issue in detail in your report. Please complete the +following steps in advance to help us fix any potential bug as fast as possible. + +- Make sure that you are using the latest version. +- Determine if your bug is really a bug and not an error on your side e.g. using incompatible environment + components/versions (Make sure that you have read the + [documentation](https://github.com/ionos-cloud/ionoscloud-blockstorage-csi-driver/blob/main/README.md). + If you are looking for support, you might want to check [this section](#i-have-a-question)). +- To see if other users have experienced (and potentially already solved) the same issue you are having, check if there + is not already a bug report existing for your bug or error in the + [bug tracker](https://github.com/ionos-cloud/ionoscloud-blockstorage-csi-driver/issues?q=label%3Abug). +- Also make sure to search the internet (including Stack Overflow) to see if users outside of the GitHub community have discussed the issue. +- Collect information about the bug: + - Stack trace (Traceback) + - OS, Platform and Version (Linux) + - Version of your Kubernetes cluster, CSI driver and CSI sidecars. + - Possibly your input and the output + - Can you reliably reproduce the issue? And can you also reproduce it with older versions? + +#### How Do I Submit a Good Bug Report? + +We use GitHub issues to track bugs and errors. If you run into an issue with the project: + +- Open an [Issue](https://github.com/ionos-cloud/ionoscloud-blockstorage-csi-driver/issues/new). (Since we can't be sure + at this point whether it is a bug or not, we ask you not to talk about a bug yet and not to label the issue.) +- Explain the behavior you would expect and the actual behavior. +- Please provide as much context as possible and describe the *reproduction steps* that someone else can follow to + recreate the issue on their own. This usually includes your code. For good bug reports you should isolate the problem + and create a reduced test case. +- Provide the information you collected in the previous section. + +Once it's filed: + +- A team member will try to reproduce the issue with your provided steps. If there are no reproduction steps or no + obvious way to reproduce the issue, the team will ask you for those steps. +- If the team is able to reproduce the issue, it will be left to be + [implemented by someone](#your-first-code-contribution). + +### Suggesting Enhancements + +This section guides you through submitting an enhancement suggestion for IONOS Cloud block storage CSI driver, +**including completely new features and minor improvements to existing functionality**. Following these guidelines will +help maintainers and the community to understand your suggestion and find related suggestions. + +#### Before Submitting an Enhancement + +- Make sure that you are using the latest version. +- Read the [documentation](https://github.com/ionos-cloud/ionoscloud-blockstorage-csi-driver/blob/main/README.md) + carefully and find out if the functionality is already covered, maybe by an individual configuration. +- Perform a [search](https://github.com/ionos-cloud/ionoscloud-blockstorage-csi-driver/issues) to see if the enhancement + has already been suggested. If it has, add a comment to the existing issue instead of opening a new one. +- Find out whether your idea fits with the scope and aims of the project. It's up to you to make a strong case to + convince the project's developers of the merits of this feature. Keep in mind that we want features that will be + useful to the majority of our users and not just a small subset. If you're just targeting a minority of users, + consider writing an add-on/plugin library. + +#### How Do I Submit a Good Enhancement Suggestion? + +Enhancement suggestions are tracked as +[GitHub issues](https://github.com/ionos-cloud/ionoscloud-blockstorage-csi-driver/issues). + +- Use a **clear and descriptive title** for the issue to identify the suggestion. +- Provide a **step-by-step description of the suggested enhancement** in as many details as possible. +- **Describe the current behavior** and **explain which behavior you expected to see instead** and why. At this point + you can also tell which alternatives do not work for you. +- **Explain why this enhancement would be useful** to most IONOS Cloud block storage CSI driver users. You may also want + to point out the other projects that solved it better and which could serve as inspiration. + +### Your First Code Contribution + + + +### Improving The Documentation + +This project uses [helm-docs](https://github.com/norwoodj/helm-docs) to generate helm chart documentation from a template. +Make sure to re-generate the docs after you've updated the +[template](./charts/ionoscloud-blockstorage-csi-driver/README.gotmpl), +[values](./charts/ionoscloud-blockstorage-csi-driver/values) or +[Chart.yaml](./charts/ionoscloud-blockstorage-csi-driver/Chart.yaml). + +It is recommended that you install a +[pre-commit hook](https://github.com/norwoodj/helm-docs/blob/master/README.md#pre-commit-hook) to automate this. + +## Styleguides + +### Pull requests + +Pull request title and description will be used as squash commit message after the merge. +Ensure that they follow the [convention commit](https://www.conventionalcommits.org/en/v1.0.0/) specification. + +The pull request title will correspond to the first line in the commit message, with the description populating the +rest. + +## Attribution +This guide is based on the **contributing-gen**. [Make your own](https://github.com/bttger/contributing-gen)! diff --git a/README.md b/README.md index 28caf10..eb9a181 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,35 @@ # ionoscloud-blockstorage-csi-driver -Container Storage Interface (CSI) plugin for IONOS Cloud block storage +
+ + +
+ +Container Storage Interface (CSI) plugin for IONOS Cloud [block storage][1]. + +## Features + +* **Static Provisioning**: Associate an externally-created volume with a [Persistent Volume][2] (PV) for consumption + within Kubernetes. +* **Dynamic Provisioning**: Automatically create volumes and associated [Persistent Volumes][2] from + [PersistentVolumeClaims][3] (PVC). Parameters can be passed in via a [StorageClass][4] for fine-grained control over + volume creation. +* **Volume Resizing**: Expand a volume without downtime by specifying a new size in the [PersistentVolumeClaims][5]. +* **Volume Snapshots**: Create and restore [snapshots][6] taken from a volume in Kubernetes. + +Configurable storage class parameters: + +* `type`: Available type names are `HDD`, `SSD`, `SSD Standard` or `SSD Premium`. `SSD` is an alias for `SSD Standard`. +* `availabilityZone`: Defaults to `AUTO` if not set. +* `fstype`: Currently only `ext2`, `ext3` and `ext4` (default) are supported. + +## Contributing + +See [CONTRIBUTING.md] for more information. + +[1]: https://cloud.ionos.com/storage/block-storage +[2]: https://kubernetes.io/docs/concepts/storage/persistent-volumes +[3]: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#dynamic +[4]: https://kubernetes.io/docs/concepts/storage/storage-classes/#the-storageclass-resource +[5]: https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims +[6]: https://kubernetes.io/docs/concepts/storage/volume-snapshots diff --git a/docs/assets/images/LOGO_IONOS_Blue_RGB.png b/docs/assets/images/LOGO_IONOS_Blue_RGB.png new file mode 100644 index 0000000..8dfae88 Binary files /dev/null and b/docs/assets/images/LOGO_IONOS_Blue_RGB.png differ