syself / cluster-api-provider-hetzner

Cluster API Provider Hetzner :rocket: The best way to manage Kubernetes clusters on Hetzner, fully declarative, Kubernetes-native and with self-healing capabilities
https://caph.syself.com
Apache License 2.0
693 stars 61 forks source link

Add provisiong for volumes with CRD #1093

Closed danielr1996 closed 11 months ago

danielr1996 commented 11 months ago

/kind feature

Describe the solution you'd like To dynamically create volumes alongside the HCloudMachines I'd like to have a HCLoudVolume CRD that I can use to declaretively provision and attach a Volume to the worker nodes

Anything else you would like to add: The usecase behind this feature request is the following. I'd like to use longhorn as my storage backend (the hcloud csi driver doesnt support proper backup to an external destination, which longhorn does). But unfortunatelly longhorn can only use storage that is directly available in the host os, therefore I'd like to dynamically provision my volumes for longhorn

guettli commented 11 months ago

@danielr1996 We would like to understand your use-case better. Here are some questions:

Where do you want to store the data? Inside the root directory of the hcloud VM, or on a mounted hcloud volume?

If you want to use the local drive, why does TopoLVM or open-local not work for you?

What kind of values do you want to configure in the yaml of the CRD you want to suggest? Maybe provide an example, so that we understand what your desired state looks like.

danielr1996 commented 11 months ago

I want to store the data in the hcloud volumes, havent used TopoLVM or open local, but if I understand correctly they still need storage that is mounted inside the host, right? So in this sense longhorn, openlocal, TopoLVM are all the same. I also cannot use the systems root disk because it's simply to small

For the CRD Id like to have something like https://www.pulumi.com/registry/packages/hcloud/api-docs/volume/

Essentially I only need to configure the disk size and the server it will be mounted to.

guettli commented 11 months ago

BTW, our cluster-api-provider supports bare-metal servers, too. There you can order big hard disks.

thank you for the link to pulumi. But I don't think that they actually implement something new. I guess that's just a different syntax to the CRD provided by hcloud CSI drive

Why not use the hcloud CSI driver?

You said because of backup issues.

What kind of backup do you want to do?

danielr1996 commented 11 months ago

The baremetal servers don't do it for me, their too expensive and too slow to provision. I want that cheap fast cloud experience. The difference between the pulumi solution / what I want and the csi driver is that the first provisions storage that is mounted to the host, the second provisions storage as persistent volumes in kubernetes. Allowing users to attach volumes to the host directly allowes them to install basically any csi driver they want, because almost all of them need locally attached storage.

I do not want to use the hcloud csi driver because it has no builtin backup, which longhorn does.

guettli commented 11 months ago

We don't plan to write a better CSI driver.

Is there already a corresponding feature request in the hcloud CSI driver repo?

If not, then I suggest that you create it.

Sorry, we can't help you here.