diff --git a/README.md b/README.md index f191f1f..2688f1d 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,10 @@ not. We can also specify a specific configmap or secret which would trigger rolling upgrade only upon change in our specified configmap or secret, this way, it will not trigger rolling upgrade upon changes in all configmaps or secrets used in a `deploymentconfig`, `deployment`, `daemonset`, `statefulset` or `rollout`. To do this either set the auto annotation to `"false"` (`reloader.stakater.com/auto: "false"`) or remove it altogether, and use annotations for [Configmap](.#Configmap) or [Secret](.#Secret). +It's also possible to enable auto reloading for all resources, by setting the `--auto-reload-all` flag. +In this case, all resources that do not have the auto annotation set to `"false"`, will be reloaded automatically when their ConfigMaps or Secrets are updated. +Notice that setting the auto annotation to an undefined value counts as false as-well. + ### Configmap To perform rolling upgrade when change happens only on specific configmaps use below annotation. diff --git a/deployments/kubernetes/chart/reloader/templates/deployment.yaml b/deployments/kubernetes/chart/reloader/templates/deployment.yaml index e9d91e1..3860f1d 100644 --- a/deployments/kubernetes/chart/reloader/templates/deployment.yaml +++ b/deployments/kubernetes/chart/reloader/templates/deployment.yaml @@ -165,7 +165,7 @@ spec: - mountPath: /tmp/ name: tmp-volume {{- end }} - {{- if or (.Values.reloader.logFormat) (.Values.reloader.ignoreSecrets) (.Values.reloader.ignoreNamespaces) (.Values.reloader.namespaceSelector) (.Values.reloader.resourceLabelSelector) (.Values.reloader.ignoreConfigMaps) (.Values.reloader.custom_annotations) (eq .Values.reloader.isArgoRollouts true) (eq .Values.reloader.reloadOnCreate true) (ne .Values.reloader.reloadStrategy "default") (.Values.reloader.enableHA)}} + {{- if or (.Values.reloader.logFormat) (.Values.reloader.ignoreSecrets) (.Values.reloader.ignoreNamespaces) (.Values.reloader.namespaceSelector) (.Values.reloader.resourceLabelSelector) (.Values.reloader.ignoreConfigMaps) (.Values.reloader.custom_annotations) (eq .Values.reloader.isArgoRollouts true) (eq .Values.reloader.reloadOnCreate true) (ne .Values.reloader.reloadStrategy "default") (.Values.reloader.enableHA) (.Values.reloader.autoReloadAll)}} args: {{- if .Values.reloader.logFormat }} - "--log-format={{ .Values.reloader.logFormat }}" @@ -222,6 +222,9 @@ spec: {{- if or (gt (int .Values.reloader.deployment.replicas) 1) (.Values.reloader.enableHA) }} - "--enable-ha=true" {{- end}} + {{- if eq .Values.reloader.autoReloadAll true }} + - "--auto-reload-all=true" + {{- end -}} {{- end }} {{- if .Values.reloader.deployment.resources }} resources: diff --git a/deployments/kubernetes/chart/reloader/values.yaml b/deployments/kubernetes/chart/reloader/values.yaml index 90d8b2e..c6257f1 100644 --- a/deployments/kubernetes/chart/reloader/values.yaml +++ b/deployments/kubernetes/chart/reloader/values.yaml @@ -12,6 +12,7 @@ nameOverride: "" fullnameOverride: "" reloader: + autoReloadAll: false isArgoRollouts: false isOpenshift: false ignoreSecrets: false diff --git a/internal/pkg/cmd/reloader.go b/internal/pkg/cmd/reloader.go index 874e776..4e1e844 100644 --- a/internal/pkg/cmd/reloader.go +++ b/internal/pkg/cmd/reloader.go @@ -32,6 +32,7 @@ func NewReloaderCommand() *cobra.Command { } // options + cmd.PersistentFlags().BoolVar(&options.AutoReloadAll, "auto-reload-all", false, "Auto reload all resources") cmd.PersistentFlags().StringVar(&options.ConfigmapUpdateOnChangeAnnotation, "configmap-annotation", "configmap.reloader.stakater.com/reload", "annotation to detect changes in configmaps, specified by name") cmd.PersistentFlags().StringVar(&options.SecretUpdateOnChangeAnnotation, "secret-annotation", "secret.reloader.stakater.com/reload", "annotation to detect changes in secrets, specified by name") cmd.PersistentFlags().StringVar(&options.ReloaderAutoAnnotation, "auto-annotation", "reloader.stakater.com/auto", "annotation to detect changes in secrets") diff --git a/internal/pkg/handler/upgrade.go b/internal/pkg/handler/upgrade.go index af06a9f..98377c1 100644 --- a/internal/pkg/handler/upgrade.go +++ b/internal/pkg/handler/upgrade.go @@ -153,8 +153,9 @@ func PerformRollingUpgrade(clients kube.Clients, config util.Config, upgradeFunc reloaderEnabledValue = annotations[options.ReloaderAutoAnnotation] } result := constants.NotUpdated - reloaderEnabled, err := strconv.ParseBool(reloaderEnabledValue) - if err == nil && reloaderEnabled { + reloaderEnabled, _ := strconv.ParseBool(reloaderEnabledValue) + reloaderEnabled = reloaderEnabled && foundAuto || !foundAuto && options.AutoReloadAll + if reloaderEnabled { result = invokeReloadStrategy(upgradeFuncs, i, config, true) } diff --git a/internal/pkg/options/flags.go b/internal/pkg/options/flags.go index 54c75da..0faa6d2 100644 --- a/internal/pkg/options/flags.go +++ b/internal/pkg/options/flags.go @@ -3,6 +3,8 @@ package options import "github.com/stakater/Reloader/internal/pkg/constants" var ( + // Auto reload all resources when their corresponding configmaps/secrets are updated + AutoReloadAll = false // ConfigmapUpdateOnChangeAnnotation is an annotation to detect changes in // configmaps specified by name ConfigmapUpdateOnChangeAnnotation = "configmap.reloader.stakater.com/reload"