kubernetes-sigs / container-object-storage-interface-controller

Container Object Storage Interface (COSI) controller responsible to manage lifecycle of COSI objects. NOTE: The content of this repo has been moved to https://github.com/kubernetes-sigs/container-object-storage-interface.
Apache License 2.0
94 stars 28 forks source link

Kustomize - One Kustomization file to rule them all? #21

Closed tparikh closed 3 years ago

tparikh commented 3 years ago

Should we have one Kustomization file to deploy all of COSI or should each repo have Kustomization file it's component?

NicolasT commented 3 years ago

The way I'd lay things out:

Rationale for the base/controller one not to deploy the example-provisioner: there's no need to run the example in any cluster, e.g., when someone is working on another provisioner, and we want to reuse this base layer even when using other provisioners.

For the CSI plugin, it could theoretically be deployed by the controller manifests, but given it's developed in another repository (and hence likely has its own release cycle for now), I'd keep them separate, so have its own set of manifests.

For the CRDs: the controller and the sidecar depend on these to be installed. I believe in general the sidecar (which comes with a provisioner) has the controller as a prerequisite anyway. So I'd suggest the controller would deploy them.

The sidecar doesn't need to be deployed by itself so not applicable, should be part of whichever deployment mechanism is used for some provisioner to be installed, which we should leave up to the provisioner author.

NicolasT commented 3 years ago

In #26 I simplified the deploy/base layer to only deploy the controller (not hard-coding any namespace, cfr. #22), then add a deploy/fullstack overlay which deploys both the controller as well as the example provisioner.