Skip to content

Commit d36cad9

Browse files
committed
Add an "ExternalHelmControllerName" option to operator and chart
1 parent 6acb37e commit d36cad9

File tree

4 files changed

+23
-7
lines changed

4 files changed

+23
-7
lines changed

charts/prometheus-federator/templates/deployment.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,11 @@ spec:
8989
{{- else }}
9090
- --helm-job-image={{ template "system_default_registry" . }}{{ .Values.helmProjectOperator.helmController.job.image.repository }}:{{ .Values.helmProjectOperator.helmController.job.image.tag }}
9191
{{- end }}
92+
{{- if and (not .Values.helmProjectOperator.helmController.enabled) (.Values.helmController.deployment.enabled) }}
93+
- --external-helm-controller-name="{{ include "prometheus-federator.name" . }}-helm-controller"
94+
{{- else if and (not .Values.helmProjectOperator.helmController.enabled) (not .Values.helmController.deployment.enabled) (hasKey .Values "externalHelmControllerName") }}
95+
- --external-helm-controller-name={{ .Values.externalHelmControllerName | quote }}
96+
{{- end }}
9297
{{- if not .Values.helmProjectOperator.helmLocker.enabled }}
9398
- --disable-embedded-helm-locker
9499
{{- end }}

charts/prometheus-federator/values.yaml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -264,9 +264,16 @@ namespaceRegistration:
264264

265265
helmController:
266266
deployment:
267-
enabled : false
268-
replicas : 1
267+
enabled: false
268+
replicas: 1
269269
image:
270270
repository: rancher/helm-controller
271271
tag: v0.16.10
272-
pullPolicy: IfNotPresent
272+
pullPolicy: IfNotPresent
273+
274+
## externalHelmControllerName defines a custom external helm controller name to set as the HelmChart CR manager
275+
## This should only be used when all are true:
276+
## - `helmController.deployment.enabled` is false,
277+
## - `helmProjectOperator.helmController.enabled` is false, AND
278+
## - the external helm-controller you will use is not the default global `helm-controller`
279+
#externalHelmControllerName: "my-helm-controller"

internal/helm-project-operator/controllers/common/runtime.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,13 @@ type RuntimeOptions struct {
9595
// DisableEmbeddedHelmLocker determines whether to disable embedded Helm Locker controller in favor of external Helm Locker
9696
DisableEmbeddedHelmLocker bool `usage:"Whether to disable embedded Helm Locker controller in favor of external Helm Locker" env:"DISABLE_EMBEDDED_HELM_LOCKER"`
9797

98-
// DisableEmbeddedHelmController determines whether to disable embedded Helm Controller controller in favor of external Helm Controller
98+
// DisableEmbeddedHelmController determines whether to disable embedded Helm Controller in favor of an external Helm Controller
9999
// This should be the default in most RKE2 clusters since the RKE2 server binary already embeds a Helm Controller instance that manages HelmCharts
100100
DisableEmbeddedHelmController bool `usage:"Whether to disable embedded Helm Controller controller in favor of external Helm Controller (recommended for RKE2 clusters)" env:"DISABLE_EMBEDDED_HELM_CONTROLLER"`
101101

102+
// ExternalHelmControllerName determines the name of the external Helm Controller to declare as managing the HelmCharts that PromFed creates
103+
ExternalHelmControllerName string `usage:"Set the external Helm Controller's name to manage which controller will own the HelmCharts created by this operator" default:"helm-controller" env:"EXTERNAL_HELM_CONTROLLER_NAME"`
104+
102105
// NamespaceRegistrationWorkers sets the number of workers to be run in the Namespace Controller
103106
// Useful in large clusters or high-latency environments that reach the operator initialization timeout before all namespaces have been registered
104107
NamespaceRegistrationWorkers int `usage:"Set the number of workers to be run in the Namespace Controller" default:"2" env:"NAMESPACE_REGISTRATION_WORKERS"`

internal/helm-project-operator/controllers/project/resources.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,10 @@ func (h *handler) getHelmChart(projectID string, valuesContent string, projectHe
3434
},
3535
})
3636
helmChart.SetLabels(common.GetHelmResourceLabels(projectID, projectHelmChart.Spec.HelmAPIVersion))
37-
managedBy := "helm-controller"
38-
if !h.opts.DisableEmbeddedHelmController {
39-
managedBy = h.opts.ControllerName
37+
managedBy := h.opts.ControllerName
38+
if h.opts.DisableEmbeddedHelmController {
39+
// ExternalHelmControllerName defaults to `helm-controller`, but can be customized
40+
managedBy = h.opts.ExternalHelmControllerName
4041
}
4142
helmChart.SetAnnotations(map[string]string{
4243
chart.ManagedBy: managedBy,

0 commit comments

Comments
 (0)