-
Notifications
You must be signed in to change notification settings - Fork 35
Use .Release.Namespace instead of .Release.Name as a prefix for cluster-scoped objects #1257
Comments
We have created an issue in Pivotal Tracker to manage this: https://www.pivotaltracker.com/story/show/175984792 The labels on this github issue will be updated when the story is started. |
Makes perfectly sense, and this I think got mostly unnoticed since we added multi-ns support for a single operator install |
I don't think we have any explicit tests for installing multiple operators in a single cluster. The e2e tests on the flintstone Concourse could have catched this, but they are red. |
I don't think so; during update the roles and rolebindings with the old names should get deleted, and the new ones should get created. But I've obviously not actually tested it... |
If we want to allow multipe operators per namespace, we could use 'monitoredID' to prefix all cluster resources. We'd also have to prefix all the release namespace resources, right now I think only webhook is missing. However, if we decide not to support multiple per namespace, we can drop the prefixes and just prefix cluster resources with the Release.Namespace as suggested. In any case you should be able to use |
Does this make sense? In general helm charts don't really support installing the same chart multiple times into the same namespace because things like services and statefulset have fixed names. Namespace are already the mechanism to avoid name collisions, so why invent another mechanism to create essentially nested namespaces? |
Right now
cf-operator.fullname
prefixes the chart name with the release name and not the namespace:https://github.com/cloudfoundry-incubator/quarks-operator/blob/master/deploy/helm/quarks/templates/_helpers.tpl#L14-L25
This is used to create names for e.g. cluster roles and cluster rolebindings. The problem is that with helm 3 the release name is no longer unique (and it wasn't with helm 2 either if you had more than one
tiller
instance).So you can have a
cf-operator
release in bothns1
andns2
. Both will try to create a cluster role calledcf-operator-quarks-cluster
(among others forjob
,secret
, andstatefulset
), creating a collision.If you prefix with the namespace, the role and rolebinding will be
ns1-quarks-cluster
andns2-quarks-cluster
, which can be removed independently when their corresponding release is removed fromns1
orns2
.Given that the namespace-scoped objects don't include the release name in their object names, it isn't supported to install multiple releases of the same quarks chart into the same namespace anyways, so dropping the release name from the objects should not be an issue.
The
kubecf
cluster-scoped objects have the same problem, but I thought I would raise it here first.The text was updated successfully, but these errors were encountered: