diff --git a/.github/workflows/pull_request.yaml b/.github/workflows/pull_request.yaml index 2732f0f7..5e9265c1 100644 --- a/.github/workflows/pull_request.yaml +++ b/.github/workflows/pull_request.yaml @@ -14,7 +14,7 @@ env: jobs: qa: - uses: stakater/.github/.github/workflows/pull_request_doc_qa.yaml@v0.0.62 + uses: stakater/.github/.github/workflows/pull_request_doc_qa.yaml@v0.0.64 with: MD_CONFIG: .github/md_config.json DOC_SRC: README.md docs diff --git a/.gitignore b/.gitignore index 396f6030..91af8d8e 100644 --- a/.gitignore +++ b/.gitignore @@ -11,4 +11,5 @@ vendor dist Reloader !**/chart/reloader -*.tgz \ No newline at end of file +*.tgz +styles/ diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index a47a9fc2..00000000 --- a/.gitmodules +++ /dev/null @@ -1,3 +0,0 @@ -[submodule "vocabulary"] - path = vocabulary - url = git@github.com:stakater/vocabulary.git diff --git a/.vale.ini b/.vale.ini index 56d1b754..a170eb43 100644 --- a/.vale.ini +++ b/.vale.ini @@ -1,7 +1,8 @@ -StylesPath = "vocabulary/styles" +StylesPath = styles MinAlertLevel = warning -Vocab = "Stakater" +Packages = https://github.com/stakater/vale-package/releases/download/v0.0.8/Stakater.zip +Vocab = Stakater # Only check MarkDown files [*.md] diff --git a/README.md b/README.md index 8bf39b05..ca311ec7 100644 --- a/README.md +++ b/README.md @@ -195,7 +195,7 @@ By default, Reloader gets deployed in `default` namespace and watches changes `s Reloader can be configured to ignore the resources `secrets` and `configmaps` by passing the following arguments (`spec.template.spec.containers.args`) to its container : | Argument | Description | -| -------------------------------- | -------------------- | +|----------------------------------|----------------------| | --resources-to-ignore=configMaps | To ignore configMaps | | --resources-to-ignore=secrets | To ignore secrets | @@ -205,7 +205,7 @@ Reloader can be configured to only watch secrets/configmaps with one or more lab **Note:** The old `:` delimited key value mappings are deprecated and if provided will be translated to `key=value`. Likewise, if a wildcard value is provided (e.g. `key:*`) it will be translated to the standalone `key` which checks for key existence. -These selectors can be combined together, for example with: +These selectors can be combined, for example with: ```yaml --resource-label-selector=reloader=enabled,key-exists,another-label in (value1,value2,value3) @@ -217,20 +217,17 @@ Only configmaps or secrets labeled like the following will be watched: kind: ConfigMap apiVersion: v1 metadata: - ... labels: reloader: enabled key-exists: yes another-label: value1 - - ... ``` Reloader can be configured to only watch namespaces labeled with one or more labels using the `--namespace-selector` parameter. Supported operators are `!, in, notin, ==, =, !=`, if no operator is found the 'exists' operator is inferred (i.e. key only). Additional examples of these selectors can be found in the [Kubernetes Docs](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors). **Note:** The old `:` delimited key value mappings are deprecated and if provided will be translated to `key=value`. Likewise, if a wildcard value is provided (e.g. `key:*`) it will be translated to the standalone `key` which checks for key existence. -These selectors can be combined together, for example with: +These selectors can be combined, for example with: ```yaml --namespace-selector=reloader=enabled,test=true @@ -242,11 +239,9 @@ Only namespaces labeled as below would be watched and eligible for reloads: kind: Namespace apiVersion: v1 metadata: - ... labels: reloader: enabled test: true - ... ``` ### Vanilla Kustomize @@ -267,7 +262,7 @@ You can write your own `kustomization.yaml` using ours as a 'base' and write pat apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization -bases: +resources: - https://github.com/stakater/Reloader/deployments/kubernetes namespace: reloader @@ -293,52 +288,54 @@ helm install stakater/reloader --set reloader.watchGlobally=false --namespace te Reloader can be configured to ignore the resources `secrets` and `configmaps` by using the following parameters of `values.yaml` file: -| Parameter | Description | Type | -| ---------------- | -------------------------------------------------------------- | ------- | -| ignoreSecrets | To ignore secrets. Valid value are either `true` or `false` | boolean | -| ignoreConfigMaps | To ignore configMaps. Valid value are either `true` or `false` | boolean | +| Parameter | Description | Type | Default | +|------------------|----------------------------------------------------------------|---------|---------| +| ignoreSecrets | To ignore secrets. Valid value are either `true` or `false` | boolean | false | +| ignoreConfigMaps | To ignore configMaps. Valid value are either `true` or `false` | boolean | false | **Note:** At one time only one of these resource can be ignored, trying to do it will cause error in helm template compilation. Reloader can be configured to only watch namespaces labeled with one or more labels using the `namespaceSelector` parameter -| Parameter | Description | Type | -| ---------------- | ---------------------------------------------------------------------------------- | ------- | -| namespaceSelector | list of comma separated label selectors, if multiple are provided they are combined with the AND operator | string | +| Parameter | Description | Type | Default | +|-------------------|-----------------------------------------------------------------------------------------------------------|--------|---------| +| namespaceSelector | list of comma separated label selectors, if multiple are provided they are combined with the AND operator | string | "" | Reloader can be configured to only watch configmaps/secrets labeled with one or more labels using the `resourceLabelSelector` parameter -| Parameter | Description | Type | -| ---------------------- | ---------------------------------------------------------------------------------- | ------- | -| resourceLabelSelector | list of comma separated label selectors, if multiple are provided they are combined with the AND operator | string | +| Parameter | Description | Type | Default | +|-----------------------|-----------------------------------------------------------------------------------------------------------|--------|---------| +| resourceLabelSelector | list of comma separated label selectors, if multiple are provided they are combined with the AND operator | string | "" | **Note:** Both `namespaceSelector` & `resourceLabelSelector` can be used together. If they are then both conditions must be met for the configmap or secret to be eligible to trigger reload events. (e.g. If a configMap matches `resourceLabelSelector` but `namespaceSelector` does not match the namespace the configmap is in, it will be ignored). -You can also set the log format of Reloader to json by setting `logFormat` to `json` in values.yaml and apply the chart. +You can also set the log format of Reloader to JSON by setting `logFormat` to `json` in `values.yaml` and apply the chart. -You can enable to scrape Reloader's Prometheus metrics by setting `serviceMonitor.enabled` or `podMonitor.enabled` to `true` in values.yaml file. Service monitor will be removed in future releases of Reloader in favour of Pod monitor. +You can enable to scrape Reloader's Prometheus metrics by setting `serviceMonitor.enabled` or `podMonitor.enabled` to `true` in `values.yaml` file. Service monitor will be removed in future releases of Reloader in favour of Pod monitor. **Note:** Reloading of OpenShift (DeploymentConfig) and/or Argo `Rollouts` has to be enabled explicitly because it might not be always possible to use it on a cluster with restricted permissions. This can be done by changing the following parameters: -| Parameter | Description | Type | -|------------------|------------------------------------------------------------------------------------------------------------------------------------------| ------- | -| isOpenshift | Enable OpenShift DeploymentConfigs. Valid value are either `true` or `false` | boolean | -| isArgoRollouts | Enable Argo `Rollouts`. Valid value are either `true` or `false` | boolean | -| reloadOnCreate | Enable reload on create events. Valid value are either `true` or `false` | boolean | -| syncAfterRestart | Enable sync after Reloader restarts for **Add** events, works only when reloadOnCreate is `true`. Valid value are either `true` or `false` | boolean | +| Parameter | Description | Type | Default | +|------------------|--------------------------------------------------------------------------------------------------------------------------------------------|---------|---------| +| isOpenshift | Enable OpenShift DeploymentConfigs. Valid value are either `true` or `false` | boolean | false | +| isArgoRollouts | Enable Argo `Rollouts`. Valid value are either `true` or `false` | boolean | false | +| reloadOnCreate | Enable reload on create events. Valid value are either `true` or `false` | boolean | false | +| syncAfterRestart | Enable sync after Reloader restarts for **Add** events, works only when reloadOnCreate is `true`. Valid value are either `true` or `false` | boolean | false | -**isOpenShift** Recent versions of OpenShift (tested on 4.13.3) require the specified user to be in an uid range which is dynamically assigned by the namespace. The solution is to unset the runAsUser variable via ``deployment.securityContext.runAsUser=null`` and let OpenShift assign it at install. +**isOpenShift** Recent versions of OpenShift (tested on 4.13.3) require the specified user to be in an `uid` range which is dynamically assigned by the namespace. The solution is to unset the runAsUser variable via ``deployment.securityContext.runAsUser=null`` and let OpenShift assign it at install. -**ReloadOnCreate** reloadOnCreate controls how Reloader handles secrets being added to the cache for the first time. If reloadOnCreate is set to true: +**reloadOnCreate** controls how Reloader handles secrets being added to the cache for the first time. If reloadOnCreate is set to true: - Configmaps/secrets being added to the cache will cause Reloader to perform a rolling update of the associated workload. - When applications are deployed for the first time, Reloader will perform a rolling update of the associated workload. - If you are running Reloader in HA mode all workloads will have a rolling update performed when a new leader is elected. -If ReloadOnCreate is set to false: +If reloadOnCreate is set to false: - Updates to configMaps/Secrets that occur while there is no leader will not be picked up by the new leader until a subsequent update of the configmap/secret occurs. In the worst case the window in which there can be no leader is 15s as this is the LeaseDuration. +**Note:** By default, **reloadOnCreate** and **syncAfterRestart** are both set to false. Both need to be enabled explicitly. + ## Help ### Documentation @@ -366,7 +363,7 @@ Please use the [issue tracker](https://github.com/stakater/Reloader/issues) to r 1. Deploy Reloader. 1. Run `okteto up` to activate your development container. -1. `make build`. +1. `make build` 1. `./Reloader` PRs are welcome. In general, we follow the "fork-and-pull" Git workflow. diff --git a/deployments/kubernetes/chart/reloader/Chart.yaml b/deployments/kubernetes/chart/reloader/Chart.yaml index 4104e7e2..fef46256 100644 --- a/deployments/kubernetes/chart/reloader/Chart.yaml +++ b/deployments/kubernetes/chart/reloader/Chart.yaml @@ -3,8 +3,8 @@ apiVersion: v1 name: reloader description: Reloader chart that runs on kubernetes -version: 1.0.63 -appVersion: v1.0.63 +version: 1.0.69 +appVersion: v1.0.69 keywords: - Reloader - kubernetes diff --git a/deployments/kubernetes/chart/reloader/templates/networkpolicy.yaml b/deployments/kubernetes/chart/reloader/templates/networkpolicy.yaml index c197e786..ca5f2248 100644 --- a/deployments/kubernetes/chart/reloader/templates/networkpolicy.yaml +++ b/deployments/kubernetes/chart/reloader/templates/networkpolicy.yaml @@ -10,6 +10,7 @@ metadata: {{ toYaml .Values.reloader.matchLabels | indent 4 }} {{- end }} name: {{ template "reloader-fullname" . }} + namespace: {{ .Values.namespace | default .Release.Namespace }} spec: podSelector: matchLabels: diff --git a/deployments/kubernetes/chart/reloader/templates/poddisruptionbudget.yaml b/deployments/kubernetes/chart/reloader/templates/poddisruptionbudget.yaml index 7b922901..ddbf96c3 100644 --- a/deployments/kubernetes/chart/reloader/templates/poddisruptionbudget.yaml +++ b/deployments/kubernetes/chart/reloader/templates/poddisruptionbudget.yaml @@ -3,6 +3,7 @@ apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: {{ template "reloader-fullname" . }} + namespace: {{ .Values.namespace | default .Release.Namespace }} spec: minAvailable: {{ .Values.reloader.podDisruptionBudget.minAvailable }} selector: diff --git a/deployments/kubernetes/chart/reloader/templates/podmonitor.yaml b/deployments/kubernetes/chart/reloader/templates/podmonitor.yaml index 46dcc373..7afeba3b 100644 --- a/deployments/kubernetes/chart/reloader/templates/podmonitor.yaml +++ b/deployments/kubernetes/chart/reloader/templates/podmonitor.yaml @@ -14,6 +14,8 @@ metadata: name: {{ template "reloader-fullname" . }} {{- if .Values.reloader.podMonitor.namespace }} namespace: {{ tpl .Values.reloader.podMonitor.namespace . }} +{{- else }} + namespace: {{ .Values.namespace | default .Release.Namespace }} {{- end }} spec: podMetricsEndpoints: diff --git a/deployments/kubernetes/chart/reloader/templates/servicemonitor.yaml b/deployments/kubernetes/chart/reloader/templates/servicemonitor.yaml index a28fdefc..c4685fdb 100644 --- a/deployments/kubernetes/chart/reloader/templates/servicemonitor.yaml +++ b/deployments/kubernetes/chart/reloader/templates/servicemonitor.yaml @@ -14,6 +14,8 @@ metadata: name: {{ template "reloader-fullname" . }} {{- if .Values.reloader.serviceMonitor.namespace }} namespace: {{ tpl .Values.reloader.serviceMonitor.namespace . }} +{{- else }} + namespace: {{ .Values.namespace | default .Release.Namespace }} {{- end }} spec: endpoints: diff --git a/deployments/kubernetes/chart/reloader/values.yaml b/deployments/kubernetes/chart/reloader/values.yaml index a2cf0432..3dea62c9 100644 --- a/deployments/kubernetes/chart/reloader/values.yaml +++ b/deployments/kubernetes/chart/reloader/values.yaml @@ -87,10 +87,10 @@ reloader: labels: provider: stakater group: com.stakater.platform - version: v1.0.63 + version: v1.0.69 image: name: ghcr.io/stakater/reloader - tag: v1.0.63 + tag: v1.0.69 pullPolicy: IfNotPresent # Support for extra environment variables. env: diff --git a/deployments/kubernetes/manifests/clusterrole.yaml b/deployments/kubernetes/manifests/clusterrole.yaml index aadfbed8..9c2478cf 100644 --- a/deployments/kubernetes/manifests/clusterrole.yaml +++ b/deployments/kubernetes/manifests/clusterrole.yaml @@ -9,7 +9,7 @@ metadata: meta.helm.sh/release-name: "reloader" labels: app: reloader-reloader - chart: "reloader-1.0.63" + chart: "reloader-1.0.69" release: "reloader" heritage: "Helm" app.kubernetes.io/managed-by: "Helm" diff --git a/deployments/kubernetes/manifests/clusterrolebinding.yaml b/deployments/kubernetes/manifests/clusterrolebinding.yaml index a2a8d1ac..738be0e9 100644 --- a/deployments/kubernetes/manifests/clusterrolebinding.yaml +++ b/deployments/kubernetes/manifests/clusterrolebinding.yaml @@ -9,7 +9,7 @@ metadata: meta.helm.sh/release-name: "reloader" labels: app: reloader-reloader - chart: "reloader-1.0.63" + chart: "reloader-1.0.69" release: "reloader" heritage: "Helm" app.kubernetes.io/managed-by: "Helm" diff --git a/deployments/kubernetes/manifests/deployment.yaml b/deployments/kubernetes/manifests/deployment.yaml index d7a7b189..3ebcdd5f 100644 --- a/deployments/kubernetes/manifests/deployment.yaml +++ b/deployments/kubernetes/manifests/deployment.yaml @@ -8,13 +8,13 @@ metadata: meta.helm.sh/release-name: "reloader" labels: app: reloader-reloader - chart: "reloader-1.0.63" + chart: "reloader-1.0.69" release: "reloader" heritage: "Helm" app.kubernetes.io/managed-by: "Helm" group: com.stakater.platform provider: stakater - version: v1.0.63 + version: v1.0.69 name: reloader-reloader namespace: default spec: @@ -28,16 +28,16 @@ spec: metadata: labels: app: reloader-reloader - chart: "reloader-1.0.63" + chart: "reloader-1.0.69" release: "reloader" heritage: "Helm" app.kubernetes.io/managed-by: "Helm" group: com.stakater.platform provider: stakater - version: v1.0.63 + version: v1.0.69 spec: containers: - - image: "ghcr.io/stakater/reloader:v1.0.63" + - image: "ghcr.io/stakater/reloader:v1.0.69" imagePullPolicy: IfNotPresent name: reloader-reloader diff --git a/deployments/kubernetes/manifests/serviceaccount.yaml b/deployments/kubernetes/manifests/serviceaccount.yaml index c3e913e1..b24e0f2d 100644 --- a/deployments/kubernetes/manifests/serviceaccount.yaml +++ b/deployments/kubernetes/manifests/serviceaccount.yaml @@ -8,7 +8,7 @@ metadata: meta.helm.sh/release-name: "reloader" labels: app: reloader-reloader - chart: "reloader-1.0.63" + chart: "reloader-1.0.69" release: "reloader" heritage: "Helm" app.kubernetes.io/managed-by: "Helm" diff --git a/deployments/kubernetes/reloader.yaml b/deployments/kubernetes/reloader.yaml index 760cefbc..6ec8c74b 100644 --- a/deployments/kubernetes/reloader.yaml +++ b/deployments/kubernetes/reloader.yaml @@ -8,7 +8,7 @@ metadata: meta.helm.sh/release-name: "reloader" labels: app: reloader-reloader - chart: "reloader-1.0.63" + chart: "reloader-1.0.69" release: "reloader" heritage: "Helm" app.kubernetes.io/managed-by: "Helm" @@ -25,7 +25,7 @@ metadata: meta.helm.sh/release-name: "reloader" labels: app: reloader-reloader - chart: "reloader-1.0.63" + chart: "reloader-1.0.69" release: "reloader" heritage: "Helm" app.kubernetes.io/managed-by: "Helm" @@ -92,7 +92,7 @@ metadata: meta.helm.sh/release-name: "reloader" labels: app: reloader-reloader - chart: "reloader-1.0.63" + chart: "reloader-1.0.69" release: "reloader" heritage: "Helm" app.kubernetes.io/managed-by: "Helm" @@ -115,13 +115,13 @@ metadata: meta.helm.sh/release-name: "reloader" labels: app: reloader-reloader - chart: "reloader-1.0.63" + chart: "reloader-1.0.69" release: "reloader" heritage: "Helm" app.kubernetes.io/managed-by: "Helm" group: com.stakater.platform provider: stakater - version: v1.0.63 + version: v1.0.69 name: reloader-reloader namespace: default spec: @@ -135,16 +135,16 @@ spec: metadata: labels: app: reloader-reloader - chart: "reloader-1.0.63" + chart: "reloader-1.0.69" release: "reloader" heritage: "Helm" app.kubernetes.io/managed-by: "Helm" group: com.stakater.platform provider: stakater - version: v1.0.63 + version: v1.0.69 spec: containers: - - image: "ghcr.io/stakater/reloader:v1.0.63" + - image: "ghcr.io/stakater/reloader:v1.0.69" imagePullPolicy: IfNotPresent name: reloader-reloader diff --git a/docs/Alerting.md b/docs/Alerting.md index b4a6b1a0..6b493f97 100644 --- a/docs/Alerting.md +++ b/docs/Alerting.md @@ -4,7 +4,7 @@ Reloader can alert when it triggers a rolling upgrade on Deployments or Stateful ## Enabling the feature -In-order to enable this feature, you need to update the `reloader.env.secret` section of values.yaml providing the information needed for alert. +In-order to enable this feature, you need to update the `reloader.env.secret` section of `values.yaml` providing the information needed for alert: ```yaml ALERT_ON_RELOAD: [ true/false ] Default: false diff --git a/go.mod b/go.mod index 9e624a8d..789a878b 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/stakater/Reloader go 1.21 require ( - github.com/argoproj/argo-rollouts v1.6.4 + github.com/argoproj/argo-rollouts v1.6.6 github.com/openshift/api v3.9.0+incompatible github.com/openshift/client-go v0.0.0-20231110140829-a6ca51f6d5ba github.com/parnurzeal/gorequest v0.2.16 diff --git a/go.sum b/go.sum index 3b00453c..a022b1c0 100644 --- a/go.sum +++ b/go.sum @@ -2,6 +2,10 @@ github.com/argoproj/argo-rollouts v1.6.2 h1:5Eur0FA9F9L0S+MkhxEtQlD9Hwb86U30QgTy github.com/argoproj/argo-rollouts v1.6.2/go.mod h1:X2kTiBaYCSounmw1kmONdIZTwJNzNQYC0SrXUgSw9UI= github.com/argoproj/argo-rollouts v1.6.4 h1:mPa08VDNNk1/1Tq7I4QvWe5p+eDaBzVFVo1TmBpHk1I= github.com/argoproj/argo-rollouts v1.6.4/go.mod h1:X2kTiBaYCSounmw1kmONdIZTwJNzNQYC0SrXUgSw9UI= +github.com/argoproj/argo-rollouts v1.6.5 h1:VDAp9PGboRbzd9tQJ/8IkaI+KrvWIRrpfSV5aeX0GUQ= +github.com/argoproj/argo-rollouts v1.6.5/go.mod h1:X2kTiBaYCSounmw1kmONdIZTwJNzNQYC0SrXUgSw9UI= +github.com/argoproj/argo-rollouts v1.6.6 h1:JCJ0cGAwWkh2xCAHZ1OQmrobysRjCatmG9IZaLJpS1g= +github.com/argoproj/argo-rollouts v1.6.6/go.mod h1:X2kTiBaYCSounmw1kmONdIZTwJNzNQYC0SrXUgSw9UI= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= diff --git a/renovate.json b/renovate.json index 39a2b6e9..39e38959 100644 --- a/renovate.json +++ b/renovate.json @@ -1,6 +1,21 @@ { "$schema": "https://docs.renovatebot.com/renovate-schema.json", "extends": [ - "config:base" + "config:recommended" + ], + "labels": [ + "dependencies" + ], + "customManagers": [ + { + "customType": "regex", + "fileMatch": [ + ".vale.ini" + ], + "matchStrings": [ + "https:\/\/github\\.com\/(?.*)\/releases\/download\/(?.*)\/.*\\.zip" + ], + "datasourceTemplate": "github-releases" + } ] } diff --git a/vocabulary b/vocabulary deleted file mode 160000 index 899bf2db..00000000 --- a/vocabulary +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 899bf2db35556f2e1abf5452081b7c3ad8f1765a