Compare commits

...

74 Commits

Author SHA1 Message Date
stakater-user
be80ce35b2 [skip-ci] Update artifacts 2022-09-29 14:30:10 +00:00
Faizan Ahmad
99349ce361 Merge pull request #329 from kenske/patch-1
Remove server side call from podmonitoring template
2022-09-29 16:09:18 +02:00
stakater-user
3a1b808169 [skip-ci] Update artifacts 2022-09-27 22:01:25 +00:00
Faizan Ahmad
798079eb53 Merge pull request #327 from AnuragEkkati/master
Reloader Reporting and Alerting #320
2022-09-27 23:38:34 +02:00
Anurag Ekkati
98749f2c9b Fixing Merge failures 2022-09-26 20:24:00 -07:00
Anurag Ekkati
3a675696cd Merge branch 'master' into master 2022-09-26 20:12:20 -07:00
Anurag Ekkati
632eeaa527 Adding Alerting Docs 2022-09-26 19:33:07 -07:00
stakater-user
9c85ce404b [skip-ci] Update artifacts 2022-09-20 06:40:06 +00:00
Karl-Johan Grahn
f8f8afca88 Merge pull request #338 from krouser/master
extra space removed
2022-09-20 08:33:30 +02:00
Stanlee
11dc048709 extra space removed
removed extra space in the yaml
2022-09-14 18:24:33 +02:00
Kenneth
328442c121 Remove server side call from podmonitoring template
The `.Capabilities.APIVersions.Has` is server side, which means it breaks in workflows where `helm template` is used (ArgoCD for example)
2022-08-12 11:27:28 -05:00
stakater-user
4304880b6b [skip-ci] Update artifacts 2022-07-15 06:10:21 +00:00
Tanveer Alam
aef99a7bb8 Merge pull request #328 from stakater/update-dep-version
Update go-reloader version to v3.8.0
2022-07-15 11:32:54 +05:30
hussnain612
e387b21ed6 Updated dependencies 2022-07-14 17:51:40 +05:00
hussnain612
b6de33d501 Updated replaced dependencies 2022-07-14 17:36:33 +05:00
MahnoorAsghar
48160e0414 Update go-reloader version 2022-07-14 15:22:05 +03:00
Anurag Ekkati
d998c1a19e Reloader Reporting and Alerting #320
Alert a webhook supporting service ( e.g, slack ) whenever reloader reloads
workload on change
2022-07-06 16:32:18 -07:00
stakater-user
0b7ca82218 [skip-ci] Update artifacts 2022-06-20 07:26:00 +00:00
Faizan Ahmad
88fe843285 Merge pull request #311 from stakater/update-golang-version
Update golang version
2022-06-20 09:06:43 +02:00
faizanahmad055
cf31fed9d3 Merge branch 'master' of github.com:stakater/Reloader into update-golang-version 2022-06-18 23:56:53 +02:00
stakater-user
ba7f7537fb [skip-ci] Update artifacts 2022-06-18 21:55:13 +00:00
Faizan Ahmad
499ecf9da5 Merge pull request #314 from maxwell-jiang/reloader-update2
the specific configmap/secret name can be regexp-ly selected
2022-06-18 23:33:52 +02:00
stakater-user
6188811b94 [skip-ci] Update artifacts 2022-06-18 21:29:26 +00:00
faizanahmad055
0f2395309f Fix readme
Signed-off-by: faizanahmad055 <faizan.ahmad55@outlook.com>
2022-06-18 23:17:38 +02:00
faizanahmad055
41d4fa56ca Merge branch 'master' of github.com:stakater/Reloader into update-golang-version 2022-06-18 23:13:35 +02:00
Faizan Ahmad
bf21677357 Merge pull request #316 from scottd018/fix-cve-crypto-golang-version
fix: Fixes #315, upgraded version of crypto package to non-vulnerable…
2022-06-18 22:54:47 +02:00
stakater-user
c58d0965d5 [skip-ci] Update artifacts 2022-06-09 16:35:12 +00:00
Faizan Ahmad
ec1f7a68de Merge pull request #318 from daconstenla/patch-1
Set the namespace for the service
2022-06-09 18:11:53 +02:00
David Constenla
68a353d097 Set the namespace for the service
like for the other resources
2022-06-09 08:11:06 +02:00
Dustin Scott
c82886c921 fix: Fixes #315, upgraded version of crypto package to non-vulnerable version
As per CVE at https://nvd.nist.gov/vuln/detail/CVE-2020-29652, upgraded to the acceptable version.
It should be noted that this PR was originally in place to cover an upgrade to go version 1.17.9, however
a PR was discovered at https://github.com/stakater/Reloader/pull/311 which can be merged
independently of this one.  Once this commit is merged as well as https://github.com/stakater/Reloader/pull/311,
the fix for #315 is complete.

Signed-off-by: Dustin Scott <sdustin@vmware.com>
2022-06-01 11:52:16 -05:00
Maxwell Jiang
4b9844f5c3 the specific configmap/secret name can be regexp-ly selected 2022-05-31 01:34:56 -05:00
stakater-user
1e4016587c [skip-ci] Update artifacts 2022-05-27 10:08:24 +00:00
faizanahmad055
198e5631d4 Merge branch 'master' of github.com:stakater/Reloader into update-golang-version 2022-05-27 11:46:17 +02:00
Faizan Ahmad
f21ad29188 Merge pull request #312 from stakater/remove-spell-checker
Remove spell-checker
2022-05-27 11:45:22 +02:00
faizanahmad055
cd7ec500a7 Remove deadlink
Signed-off-by: faizanahmad055 <faizan.ahmad55@outlook.com>
2022-05-27 11:36:07 +02:00
faizanahmad055
030e51351a Remove spell-checker
Signed-off-by: faizanahmad055 <faizan.ahmad55@outlook.com>
2022-05-27 11:18:24 +02:00
faizanahmad055
8703c150e0 Remove deadlink
Signed-off-by: faizanahmad055 <faizan.ahmad55@outlook.com>
2022-05-27 10:37:43 +02:00
faizanahmad055
1d7192180f Merge branch 'master' of github.com:stakater/Reloader into update-golang-version 2022-05-26 18:24:38 +02:00
stakater-user
9d1733200a [skip-ci] Update artifacts 2022-05-26 15:33:56 +00:00
Faizan Ahmad
841db3c829 Merge pull request #310 from stakater/remove-docker-lint
Remove docker linting from Pull request
2022-05-26 17:11:18 +02:00
stakater-user
1155c981d6 [skip-ci] Update artifacts 2022-05-26 14:18:53 +00:00
faizanahmad055
d29c99ffef Remove docker linting from Pull request
Signed-off-by: faizanahmad055 <faizan.ahmad55@outlook.com>
2022-05-26 14:57:51 +02:00
faizanahmad055
3b572568be Update golang version to 1.18.2
Signed-off-by: faizanahmad055 <faizan.ahmad55@outlook.com>
2022-05-26 14:50:23 +02:00
Abdul Haseeb
3e5b1d09b8 Merge pull request #308 from stakater/update-golang-cli-version
Update golang-cli package versions
2022-05-26 17:47:59 +05:00
faizanahmad055
61b7a88462 Update golang-cli package versions
Signed-off-by: faizanahmad055 <faizan.ahmad55@outlook.com>
2022-05-26 14:46:32 +02:00
Faizan Ahmad
d9d986f1f2 Merge pull request #297 from karl-johan-grahn/doc-qa
feat(qa): add qa checks for dockerfile and documentation
2022-04-04 21:06:56 +02:00
stakater-user
42a25bfe64 [skip-ci] Update artifacts 2022-03-25 12:04:59 +00:00
Faizan Ahmad
df667b9c15 Merge pull request #296 from stefan-work/master
feat(kubernetes/chart): explicitly mount service-account-token in dep…
2022-03-25 12:57:47 +01:00
Stefan Klein
f1c71731d9 feat(kubernetes/chart): explicitly mount service-account-token in deployment 2022-03-25 12:09:10 +01:00
Karl-Johan Grahn
e2b14ab7b5 fix(qa): update dockerfile path 2022-03-21 21:32:49 +01:00
Karl-Johan Grahn
4592bd4331 feat(qa): add qa checks for dockerfile and documentation 2022-03-21 21:03:39 +01:00
stakater-user
e380fbaf03 [skip-ci] Update artifacts 2022-03-02 20:49:44 +00:00
Faizan Ahmad
2bce1352a3 Merge pull request #292 from alin-taranu/upgrade-go-version-to-1.17.7
Update go version to fix critical vulnerabilities
2022-03-02 21:42:39 +01:00
Alin Taranu
5b3b617f06 Update go version to fix critical vulnerabilites
The following CVEs should be fix by upgrading go version:
* CVE-2022-23806
* CVE-2022-23772
* CVE-2021-44717
* CVE-2022-23773
* CVE-2021-44716
* CVE-2021-41771
* CVE-2021-41772
2022-03-02 13:41:07 +01:00
stakater-user
5040a4236a [skip-ci] Update artifacts 2022-02-27 18:58:50 +00:00
Faizan Ahmad
f6cbc005fc Merge pull request #281 from ruinshe/add-container-sc-support
Add container security context support for Helm chart
2022-02-27 19:50:15 +01:00
stakater-user
91774c941f [skip-ci] Update artifacts 2022-02-27 18:40:03 +00:00
Faizan Ahmad
db0e127563 Merge pull request #282 from AyoyAB/feature/enable-internal-build
Enable internal builds without direct Internet access
2022-02-27 19:31:29 +01:00
John Allberg
3671d33447 Enable setting GOPROXY and GOPRIVATE during build. 2022-02-27 10:16:42 +01:00
John Allberg
e85176b5a7 Make build command more readable. 2022-02-27 10:16:42 +01:00
John Allberg
7941de60ac Enable setting builder and base image during build. 2022-02-27 10:16:38 +01:00
stakater-user
565612e421 [skip-ci] Update artifacts 2022-02-26 22:43:34 +00:00
Faizan Ahmad
31e247e3ae Merge pull request #291 from stakater/fix-reloading-on-create
Make reload on create optional
2022-02-26 23:22:54 +01:00
faizanahmad055
1e79b86f72 Update readme
Signed-off-by: faizanahmad055 <faizan.ahmad55@outlook.com>
2022-02-20 00:00:04 +01:00
faizanahmad055
b5b684c67b Fix reload on create flag
Signed-off-by: faizanahmad055 <faizan.ahmad55@outlook.com>
2022-02-19 23:23:33 +01:00
faizanahmad055
bbc6bd2dea Update go version
Signed-off-by: faizanahmad055 <faizan.ahmad55@outlook.com>
2022-02-14 10:33:55 +01:00
faizanahmad055
61ce150d7c Make reload on create optional
Signed-off-by: faizanahmad055 <faizan.ahmad55@outlook.com>
2022-02-13 19:53:49 +01:00
stakater-user
56e83ecde9 [skip-ci] Update artifacts 2022-02-13 12:16:49 +00:00
Faizan Ahmad
c33876508c Merge pull request #290 from ctschubel/master
add replicas config to helm-chart
2022-02-13 13:07:37 +01:00
ctschubel
55ea2e430e add replicas to values.yaml.tmpl 2022-02-10 19:33:29 +01:00
ctschubel
4beefc3f43 fix replica config value name in helm-chart 2022-02-10 16:05:03 +01:00
ctschubel
3b1d30141c add replicas config to helm-chart 2022-02-10 15:21:16 +01:00
Ruins He
fa75df8e96 feat(kubernetes/chart): add container security context configuration into values.yaml.tpl
Signed-off-by: Ruins He <lyhypacm@gmail.com>
2022-01-03 18:22:43 +08:00
Ruins He
21087aaddc feat(kubernetes/chart): add container security context support for Helm chart
Signed-off-by: Ruins He <lyhypacm@gmail.com>
2022-01-03 18:00:15 +08:00
28 changed files with 750 additions and 1714 deletions

View File

@@ -7,9 +7,9 @@ on:
env:
DOCKER_FILE_PATH: Dockerfile
GOLANG_VERSION: 1.15.2
GOLANG_VERSION: 1.18.2
KUBERNETES_VERSION: "1.18.0"
KIND_VERSION: "0.7.0"
KIND_VERSION: "0.10.0"
jobs:
build:
@@ -39,7 +39,7 @@ jobs:
- name: Run golangci-lint
uses: golangci/golangci-lint-action@v2.3.0
with:
version: v1.33
version: v1.45.2
only-new-issues: false
args: --timeout 10m
@@ -48,6 +48,9 @@ jobs:
cd deployments/kubernetes/chart/reloader
helm lint
- name: Link check
uses: gaurav-nelson/github-action-markdown-link-check@v1
- name: Install kubectl
run: |
curl -LO "https://storage.googleapis.com/kubernetes-release/release/v${KUBERNETES_VERSION}/bin/linux/amd64/kubectl"

View File

@@ -7,9 +7,9 @@ on:
env:
DOCKER_FILE_PATH: Dockerfile
GOLANG_VERSION: 1.15.2
GOLANG_VERSION: 1.18.2
KUBERNETES_VERSION: "1.18.0"
KIND_VERSION: "0.7.0"
KIND_VERSION: "0.10.0"
HELM_REGISTRY_URL: "https://stakater.github.io/stakater-charts"
jobs:
@@ -42,7 +42,7 @@ jobs:
- name: Run golangci-lint
uses: golangci/golangci-lint-action@v2.3.0
with:
version: v1.33
version: v1.45.2
only-new-issues: false
args: --timeout 10m
@@ -70,7 +70,7 @@ jobs:
- name: Generate Tag
id: generate_tag
uses: anothrNick/github-tag-action@1.26.0
uses: anothrNick/github-tag-action@1.36.0
env:
GITHUB_TOKEN: ${{ secrets.STAKATER_GITHUB_TOKEN }}
WITH_V: true
@@ -116,7 +116,7 @@ jobs:
# Generate tag for operator without "v"
- name: Generate Operator Tag
id: generate_operator_tag
uses: anothrNick/github-tag-action@1.26.0
uses: anothrNick/github-tag-action@1.36.0
env:
GITHUB_TOKEN: ${{ secrets.STAKATER_GITHUB_TOKEN }}
WITH_V: false
@@ -165,7 +165,7 @@ jobs:
branch: ${{ github.ref }}
- name: Push Latest Tag
uses: anothrNick/github-tag-action@1.26.0
uses: anothrNick/github-tag-action@1.36.0
env:
GITHUB_TOKEN: ${{ secrets.STAKATER_GITHUB_TOKEN }}
WITH_V: true

View File

@@ -6,7 +6,7 @@ on:
- "v*"
env:
GOLANG_VERSION: 1.15.2
GOLANG_VERSION: 1.18.2
jobs:
build:

View File

@@ -1,8 +1,13 @@
ARG BUILDER_IMAGE
ARG BASE_IMAGE
# Build the manager binary
FROM --platform=${BUILDPLATFORM} golang:1.16 as builder
FROM --platform=${BUILDPLATFORM} ${BUILDER_IMAGE:-golang:1.18.2} as builder
ARG TARGETOS
ARG TARGETARCH
ARG GOPROXY
ARG GOPRIVATE
WORKDIR /workspace
@@ -19,11 +24,17 @@ COPY internal/ internal/
COPY pkg/ pkg/
# Build
RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} GO111MODULE=on go build -mod=mod -a -o manager main.go
RUN CGO_ENABLED=0 \
GOOS=${TARGETOS} \
GOARCH=${TARGETARCH} \
GOPROXY=${GOPROXY} \
GOPRIVATE=${GOPRIVATE} \
GO111MODULE=on \
go build -mod=mod -a -o manager main.go
# Use distroless as minimal base image to package the manager binary
# Refer to https://github.com/GoogleContainerTools/distroless for more details
FROM gcr.io/distroless/static:nonroot
FROM ${BASE_IMAGE:-gcr.io/distroless/static:nonroot}
WORKDIR /
COPY --from=builder /workspace/manager .
USER 65532:65532

View File

@@ -6,7 +6,8 @@ OS ?= linux
ARCH ?= ???
ALL_ARCH ?= arm64 arm amd64
BUILDER ?= reloader-builder-${ARCH}
BUILDER_IMAGE ?=
BASE_IMAGE ?=
BINARY ?= Reloader
DOCKER_IMAGE ?= stakater/reloader
@@ -20,6 +21,8 @@ BUILD=
GOCMD = go
GOFLAGS ?= $(GOFLAGS:)
LDFLAGS =
GOPROXY ?=
GOPRIVATE ?=
default: build test
@@ -33,7 +36,17 @@ build:
"$(GOCMD)" build ${GOFLAGS} ${LDFLAGS} -o "${BINARY}"
build-image:
docker buildx build --platform ${OS}/${ARCH} --build-arg GOARCH=$(ARCH) -t "${REPOSITORY_ARCH}" --load -f Dockerfile .
docker buildx build \
--platform ${OS}/${ARCH} \
--build-arg GOARCH=$(ARCH) \
--build-arg BUILDER_IMAGE=$(BUILDER_IMAGE) \
--build-arg BASE_IMAGE=${BASE_IMAGE} \
--build-arg GOPROXY=${GOPROXY} \
--build-arg GOPRIVATE=${GOPRIVATE} \
-t "${REPOSITORY_ARCH}" \
--load \
-f Dockerfile \
.
push:
docker push ${REPOSITORY_ARCH}

View File

@@ -6,8 +6,6 @@
[![GitHub tag](https://img.shields.io/github/tag/stakater/reloader.svg?style=flat-square)](https://github.com/stakater/reloader/releases/latest)
[![Docker Pulls](https://img.shields.io/docker/pulls/stakater/reloader.svg?style=flat-square)](https://hub.docker.com/r/stakater/reloader/)
[![Docker Stars](https://img.shields.io/docker/stars/stakater/reloader.svg?style=flat-square)](https://hub.docker.com/r/stakater/reloader/)
[![MicroBadger Size](https://img.shields.io/microbadger/image-size/stakater/reloader.svg?style=flat-square)](https://microbadger.com/images/stakater/reloader)
[![MicroBadger Layers](https://img.shields.io/microbadger/layers/stakater/reloader.svg?style=flat-square)](https://microbadger.com/images/stakater/reloader)
[![license](https://img.shields.io/github/license/stakater/reloader.svg?style=flat-square)](LICENSE)
[![Get started with Stakater](https://stakater.github.io/README/stakater-github-banner.png)](http://stakater.com/?utm_source=Reloader&utm_medium=github)
@@ -33,7 +31,8 @@ metadata:
annotations:
reloader.stakater.com/auto: "true"
spec:
template: metadata:
template:
metadata:
```
This will discover deploymentconfigs/deployments/daemonsets/statefulset/rollouts automatically where `foo-configmap` or `foo-secret` is being used either via environment variable or from volume mount. And it will perform rolling upgrade on related pods when `foo-configmap` or `foo-secret`are updated.
@@ -88,7 +87,8 @@ metadata:
annotations:
configmap.reloader.stakater.com/reload: "foo-configmap"
spec:
template: metadata:
template:
metadata:
```
Use comma separated list to define multiple configmaps.
@@ -240,9 +240,10 @@ You can enable to scrape Reloader's Prometheus metrics by setting `serviceMonito
**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 |
## Help

View File

@@ -3,8 +3,8 @@
apiVersion: v1
name: reloader
description: Reloader chart that runs on kubernetes
version: v0.0.104
appVersion: v0.0.104
version: v0.0.121
appVersion: v0.0.121
keywords:
- Reloader
- kubernetes

View File

@@ -17,7 +17,7 @@ metadata:
name: {{ template "reloader-fullname" . }}
namespace: {{ .Release.Namespace }}
spec:
replicas: 1
replicas: {{ .Values.reloader.deployment.replicas }}
revisionHistoryLimit: 2
selector:
matchLabels:
@@ -114,12 +114,16 @@ spec:
periodSeconds: {{ .Values.reloader.deployment.readinessProbe.periodSeconds | default "10" }}
successThreshold: {{ .Values.reloader.deployment.readinessProbe.successThreshold | default "1" }}
{{- with .Values.reloader.deployment.containerSecurityContext }}
securityContext: {{ toYaml . | nindent 10 }}
{{- end }}
{{- if eq .Values.reloader.readOnlyRootFileSystem true }}
volumeMounts:
- mountPath: /tmp/
name: tmp-volume
{{- end }}
{{- if or (.Values.reloader.logFormat) (.Values.reloader.ignoreSecrets) (.Values.reloader.ignoreNamespaces) (.Values.reloader.ignoreConfigMaps) (.Values.reloader.custom_annotations) (eq .Values.reloader.isArgoRollouts true) (ne .Values.reloader.reloadStrategy "default")}}
{{- if or (.Values.reloader.logFormat) (.Values.reloader.ignoreSecrets) (.Values.reloader.ignoreNamespaces) (.Values.reloader.ignoreConfigMaps) (.Values.reloader.custom_annotations) (eq .Values.reloader.isArgoRollouts true) (eq .Values.reloader.reloadOnCreate true) (ne .Values.reloader.reloadStrategy "default")}}
args:
{{- if .Values.reloader.logFormat }}
- "--log-format={{ .Values.reloader.logFormat }}"
@@ -159,6 +163,9 @@ spec:
{{- if eq .Values.reloader.isArgoRollouts true }}
- "--is-Argo-Rollouts={{ .Values.reloader.isArgoRollouts }}"
{{- end }}
{{- if eq .Values.reloader.reloadOnCreate true }}
- "--reload-on-create={{ .Values.reloader.reloadOnCreate }}"
{{- end }}
{{- if ne .Values.reloader.reloadStrategy "default" }}
- "--reload-strategy={{ .Values.reloader.reloadStrategy }}"
{{- end }}
@@ -171,6 +178,9 @@ spec:
securityContext: {{ toYaml .Values.reloader.deployment.securityContext | nindent 8 }}
{{- end }}
serviceAccountName: {{ template "reloader-serviceAccountName" . }}
{{- if hasKey .Values.reloader.deployment "automountServiceAccountToken" }}
automountServiceAccountToken: {{ .Values.reloader.deployment.automountServiceAccountToken }}
{{- end }}
{{- if eq .Values.reloader.readOnlyRootFileSystem true }}
volumes:
- emptyDir: {}

View File

@@ -1,4 +1,4 @@
{{- if and ( .Capabilities.APIVersions.Has "monitoring.coreos.com/v1" ) ( .Values.reloader.podMonitor.enabled ) }}
{{- if ( .Values.reloader.podMonitor.enabled ) }}
apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:

View File

@@ -0,0 +1,21 @@
{{- if .Values.reloader.deployment.env.secret -}}
apiVersion: v1
kind: Secret
metadata:
name: {{ template "reloader-fullname" . }}
namespace: {{ .Release.Namespace }}
type: Opaque
data:
{{ if .Values.reloader.deployment.env.secret.ALERT_ON_RELOAD -}}
ALERT_ON_RELOAD: {{ .Values.reloader.deployment.env.secret.ALERT_ON_RELOAD | b64enc | quote }}
{{ end }}
{{- if .Values.reloader.deployment.env.secret.ALERT_SINK -}}
ALERT_SINK: {{ .Values.reloader.deployment.env.secret.ALERT_SINK | b64enc | quote }}
{{ end }}
{{- if .Values.reloader.deployment.env.secret.ALERT_WEBHOOK_URL -}}
ALERT_WEBHOOK_URL: {{ .Values.reloader.deployment.env.secret.ALERT_WEBHOOK_URL | b64enc | quote }}
{{ end }}
{{- if .Values.reloader.deployment.env.secret.ALERT_ADDITIONAL_INFO -}}
ALERT_ADDITIONAL_INFO: {{ .Values.reloader.deployment.env.secret.ALERT_ADDITIONAL_INFO | b64enc | quote }}
{{ end }}
{{ end }}

View File

@@ -13,6 +13,7 @@ metadata:
{{ toYaml .Values.reloader.service.labels | indent 4 }}
{{- end }}
name: {{ template "reloader-fullname" . }}
namespace: {{ .Release.Namespace }}
spec:
selector:
{{- if .Values.reloader.deployment.labels }}

View File

@@ -4,6 +4,9 @@ kind: ServiceAccount
{{- if .Values.global.imagePullSecrets }}
imagePullSecrets: {{ toYaml .Values.global.imagePullSecrets | nindent 2 }}
{{- end }}
{{- if hasKey .Values.reloader.serviceAccount "automountServiceAccountToken" }}
automountServiceAccountToken: {{ .Values.reloader.serviceAccount.automountServiceAccountToken }}
{{- end }}
metadata:
annotations:
{{ include "reloader-helm3.annotations" . | indent 4 }}

View File

@@ -13,6 +13,7 @@ reloader:
isOpenshift: false
ignoreSecrets: false
ignoreConfigMaps: false
reloadOnCreate: false
reloadStrategy: default # Set to default, env-vars or annotations
ignoreNamespaces: "" # Comma separated list of namespaces to ignore
logFormat: "" #json
@@ -23,6 +24,7 @@ reloader:
rbac: false
matchLabels: {}
deployment:
replicas: 1
nodeSelector:
# cloud.google.com/gke-nodepool: default-pool
@@ -41,6 +43,13 @@ reloader:
runAsNonRoot: true
runAsUser: 65534
containerSecurityContext: {}
# capabilities:
# drop:
# - ALL
# allowPrivilegeEscalation: false
# readOnlyRootFilesystem: true
# A list of tolerations to be applied to the Deployment.
# Example:
# tolerations:
@@ -53,10 +62,10 @@ reloader:
labels:
provider: stakater
group: com.stakater.platform
version: v0.0.104
version: v0.0.121
image:
name: stakater/reloader
tag: v0.0.104
tag: v0.0.121
pullPolicy: IfNotPresent
# Support for extra environment variables.
env:
@@ -64,6 +73,10 @@ reloader:
open:
# secret supports Key value pair as environment variables. It gets the values based on keys from default reloader secret if any.
secret:
# ALERT_ON_RELOAD: <"true"|"false">
# ALERT_SINK: <"slack"> # By default it will be a raw text based webhook
# ALERT_WEBHOOK_URL: <"webhook_url">
# ALERT_ADDITIONAL_INFO: <"Additional Info like Cluster Name if needed">
# field supports Key value pair as environment variables. It gets the values from other fields of pod.
field:
@@ -109,7 +122,7 @@ reloader:
annotations: {}
# The name of the ServiceAccount to use.
# If not set and create is true, a name is generated using the fullname template
name:
name:
# Optional flags to pass to the Reloader entrypoint
# Example:
# custom_annotations:

View File

@@ -9,7 +9,7 @@ metadata:
meta.helm.sh/release-name: "reloader"
labels:
app: reloader-reloader
chart: "reloader-v0.0.104"
chart: "reloader-v0.0.121"
release: "reloader"
heritage: "Helm"
app.kubernetes.io/managed-by: "Helm"

View File

@@ -9,7 +9,7 @@ metadata:
meta.helm.sh/release-name: "reloader"
labels:
app: reloader-reloader
chart: "reloader-v0.0.104"
chart: "reloader-v0.0.121"
release: "reloader"
heritage: "Helm"
app.kubernetes.io/managed-by: "Helm"

View File

@@ -8,13 +8,13 @@ metadata:
meta.helm.sh/release-name: "reloader"
labels:
app: reloader-reloader
chart: "reloader-v0.0.104"
chart: "reloader-v0.0.121"
release: "reloader"
heritage: "Helm"
app.kubernetes.io/managed-by: "Helm"
group: com.stakater.platform
provider: stakater
version: v0.0.104
version: v0.0.121
name: reloader-reloader
namespace: default
spec:
@@ -28,16 +28,16 @@ spec:
metadata:
labels:
app: reloader-reloader
chart: "reloader-v0.0.104"
chart: "reloader-v0.0.121"
release: "reloader"
heritage: "Helm"
app.kubernetes.io/managed-by: "Helm"
group: com.stakater.platform
provider: stakater
version: v0.0.104
version: v0.0.121
spec:
containers:
- image: "stakater/reloader:v0.0.104"
- image: "stakater/reloader:v0.0.121"
imagePullPolicy: IfNotPresent
name: reloader-reloader

View File

@@ -8,7 +8,7 @@ metadata:
meta.helm.sh/release-name: "reloader"
labels:
app: reloader-reloader
chart: "reloader-v0.0.104"
chart: "reloader-v0.0.121"
release: "reloader"
heritage: "Helm"
app.kubernetes.io/managed-by: "Helm"

View File

@@ -8,7 +8,7 @@ metadata:
meta.helm.sh/release-name: "reloader"
labels:
app: reloader-reloader
chart: "reloader-v0.0.104"
chart: "reloader-v0.0.121"
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-v0.0.104"
chart: "reloader-v0.0.121"
release: "reloader"
heritage: "Helm"
app.kubernetes.io/managed-by: "Helm"
@@ -73,7 +73,7 @@ metadata:
meta.helm.sh/release-name: "reloader"
labels:
app: reloader-reloader
chart: "reloader-v0.0.104"
chart: "reloader-v0.0.121"
release: "reloader"
heritage: "Helm"
app.kubernetes.io/managed-by: "Helm"
@@ -97,13 +97,13 @@ metadata:
meta.helm.sh/release-name: "reloader"
labels:
app: reloader-reloader
chart: "reloader-v0.0.104"
chart: "reloader-v0.0.121"
release: "reloader"
heritage: "Helm"
app.kubernetes.io/managed-by: "Helm"
group: com.stakater.platform
provider: stakater
version: v0.0.104
version: v0.0.121
name: reloader-reloader
namespace: default
spec:
@@ -117,16 +117,16 @@ spec:
metadata:
labels:
app: reloader-reloader
chart: "reloader-v0.0.104"
chart: "reloader-v0.0.121"
release: "reloader"
heritage: "Helm"
app.kubernetes.io/managed-by: "Helm"
group: com.stakater.platform
provider: stakater
version: v0.0.104
version: v0.0.121
spec:
containers:
- image: "stakater/reloader:v0.0.104"
- image: "stakater/reloader:v0.0.121"
imagePullPolicy: IfNotPresent
name: reloader-reloader

View File

@@ -13,6 +13,8 @@ reloader:
isOpenshift: false
ignoreSecrets: false
ignoreConfigMaps: false
reloadOnCreate: false
reloadStrategy: default # Set to default, env-vars or annotations
ignoreNamespaces: "" # Comma separated list of namespaces to ignore
logFormat: "" #json
watchGlobally: true
@@ -22,6 +24,7 @@ reloader:
rbac: false
matchLabels: {}
deployment:
replicas: 1
nodeSelector:
# cloud.google.com/gke-nodepool: default-pool
@@ -40,6 +43,13 @@ reloader:
runAsNonRoot: true
runAsUser: 65534
containerSecurityContext: {}
# capabilities:
# drop:
# - ALL
# allowPrivilegeEscalation: false
# readOnlyRootFilesystem: true
# A list of tolerations to be applied to the Deployment.
# Example:
# tolerations:

12
docs/Alerting.md Normal file
View File

@@ -0,0 +1,12 @@
# Alerting on Reload
Reloader can alert when it triggers a rolling upgrade on Deployments or StatefulSets. Webhook notification alert would be sent to the configured webhook server with all the required information
#### 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.
<pre> ALERT_ON_RELOAD: [ true/false ] Default: false
ALERT_SINK: [ slack/webhook ] Default: webhook
ALERT_WEBHOOK_URL: Required if ALERT_ON_RELOAD is true
ALERT_ADDITIONAL_INFO: Any additional information to be added to alert
#### Slack incoming-webhook creation docs
https://api.slack.com/messaging/webhooks

127
go.mod
View File

@@ -1,49 +1,102 @@
module github.com/stakater/Reloader
go 1.16
go 1.18
require (
github.com/argoproj/argo-rollouts v1.0.2
github.com/onsi/ginkgo v1.15.1 // indirect
github.com/onsi/gomega v1.11.0 // indirect
github.com/argoproj/argo-rollouts v1.2.1
github.com/openshift/api v0.0.0-20210527122704-efd9d5958e01
github.com/openshift/client-go v0.0.0-20210521082421-73d9475a9142
github.com/prometheus/client_golang v1.10.0
github.com/sirupsen/logrus v1.7.0
github.com/spf13/cobra v1.1.3
k8s.io/api v0.21.2
k8s.io/apimachinery v0.21.2
k8s.io/client-go v0.21.2
github.com/prometheus/client_golang v1.12.2
github.com/sirupsen/logrus v1.8.1
github.com/spf13/cobra v1.5.0
k8s.io/api v0.24.2
k8s.io/apimachinery v0.24.2
k8s.io/client-go v0.24.2
)
require (
cloud.google.com/go v0.99.0 // indirect
github.com/PuerkitoBio/purell v1.1.1 // indirect
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/emicklei/go-restful/v3 v3.8.0 // indirect
github.com/evanphx/json-patch v5.6.0+incompatible // indirect
github.com/go-logr/logr v1.2.3 // indirect
github.com/go-openapi/jsonpointer v0.19.5 // indirect
github.com/go-openapi/jsonreference v0.20.0 // indirect
github.com/go-openapi/swag v0.21.1 // indirect
github.com/gogo/protobuf v1.3.2 // indirect
github.com/golang/protobuf v1.5.2 // indirect
github.com/google/gnostic v0.6.9 // indirect
github.com/google/go-cmp v0.5.8 // indirect
github.com/google/gofuzz v1.2.0 // indirect
github.com/imdario/mergo v0.3.13 // indirect
github.com/inconshreveable/mousetrap v1.0.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/onsi/ginkgo v1.15.1 // indirect
github.com/onsi/gomega v1.19.0 // indirect
github.com/parnurzeal/gorequest v0.2.16 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/prometheus/client_model v0.2.0 // indirect
github.com/prometheus/common v0.36.0 // indirect
github.com/prometheus/procfs v0.7.3 // indirect
github.com/spf13/pflag v1.0.5 // indirect
golang.org/x/net v0.0.0-20220708220712-1185a9018129 // indirect
golang.org/x/oauth2 v0.0.0-20220630143837-2104d58473e0 // indirect
golang.org/x/sys v0.0.0-20220712014510-0a85c31ab51e // indirect
golang.org/x/term v0.0.0-20220526004731-065cf7ba2467 // indirect
golang.org/x/text v0.3.7 // indirect
golang.org/x/time v0.0.0-20220609170525-579cf78fd858 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/protobuf v1.28.0 // indirect
gopkg.in/inf.v0 v0.9.1 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
gopkg.in/yaml.v3 v3.0.1 // indirect
k8s.io/klog/v2 v2.60.1 // indirect
k8s.io/kube-openapi v0.0.0-20220627174259-011e075b9cb8 // indirect
k8s.io/utils v0.0.0-20220706174534-f6158b442e7c // indirect
moul.io/http2curl v1.0.0 // indirect
sigs.k8s.io/json v0.0.0-20211208200746-9f7c6b3444d2 // indirect
sigs.k8s.io/structured-merge-diff/v4 v4.2.1 // indirect
sigs.k8s.io/yaml v1.3.0 // indirect
)
// Replacements for argo-rollouts
replace (
github.com/go-check/check => github.com/go-check/check v0.0.0-20180628173108-788fd7840127
github.com/grpc-ecosystem/grpc-gateway => github.com/grpc-ecosystem/grpc-gateway v1.16.0
k8s.io/api => k8s.io/api v0.20.4
k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.20.4
k8s.io/apimachinery => k8s.io/apimachinery v0.21.0-alpha.0
k8s.io/apiserver => k8s.io/apiserver v0.20.4
k8s.io/cli-runtime => k8s.io/cli-runtime v0.20.4
k8s.io/client-go => k8s.io/client-go v0.20.4
k8s.io/cloud-provider => k8s.io/cloud-provider v0.20.4
k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.20.4
k8s.io/code-generator => k8s.io/code-generator v0.20.5-rc.0
k8s.io/component-base => k8s.io/component-base v0.20.4
k8s.io/component-helpers => k8s.io/component-helpers v0.20.4
k8s.io/controller-manager => k8s.io/controller-manager v0.20.4
k8s.io/cri-api => k8s.io/cri-api v0.20.5-rc.0
k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.20.4
k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.20.4
k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.20.4
k8s.io/kube-proxy => k8s.io/kube-proxy v0.20.4
k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.20.4
k8s.io/kubectl => k8s.io/kubectl v0.20.4
k8s.io/kubelet => k8s.io/kubelet v0.20.4
k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.20.4
k8s.io/metrics => k8s.io/metrics v0.20.4
k8s.io/mount-utils => k8s.io/mount-utils v0.20.5-rc.0
k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.20.4
k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.20.4
k8s.io/sample-controller => k8s.io/sample-controller v0.20.4
)
k8s.io/api v0.0.0 => k8s.io/api v0.24.2
k8s.io/apiextensions-apiserver v0.0.0 => k8s.io/apiextensions-apiserver v0.24.2
k8s.io/apimachinery v0.0.0 => k8s.io/apimachinery v0.21.0-alpha.0
k8s.io/apiserver v0.0.0 => k8s.io/apiserver v0.24.2
k8s.io/cli-runtime v0.0.0 => k8s.io/cli-runtime v0.24.2
k8s.io/client-go v0.0.0 => k8s.io/client-go v0.24.2
k8s.io/cloud-provider v0.0.0 => k8s.io/cloud-provider v0.24.2
k8s.io/cluster-bootstrap v0.0.0 => k8s.io/cluster-bootstrap v0.24.2
k8s.io/code-generator v0.0.0 => k8s.io/code-generator v0.20.5-rc.0
k8s.io/component-base v0.0.0 => k8s.io/component-base v0.24.2
k8s.io/component-helpers v0.0.0 => k8s.io/component-helpers v0.24.2
k8s.io/controller-manager v0.0.0 => k8s.io/controller-manager v0.24.2
k8s.io/cri-api v0.0.0 => k8s.io/cri-api v0.20.5-rc.0
k8s.io/csi-translation-lib v0.0.0 => k8s.io/csi-translation-lib v0.24.2
k8s.io/kube-aggregator v0.0.0 => k8s.io/kube-aggregator v0.24.2
k8s.io/kube-controller-manager v0.0.0 => k8s.io/kube-controller-manager v0.24.2
k8s.io/kube-proxy v0.0.0 => k8s.io/kube-proxy v0.24.2
k8s.io/kube-scheduler v0.0.0 => k8s.io/kube-scheduler v0.24.2
k8s.io/kubectl v0.0.0 => k8s.io/kubectl v0.24.2
k8s.io/kubelet v0.0.0 => k8s.io/kubelet v0.24.2
k8s.io/legacy-cloud-providers v0.0.0 => k8s.io/legacy-cloud-providers v0.24.2
k8s.io/metrics v0.0.0 => k8s.io/metrics v0.24.2
k8s.io/mount-utils v0.0.0 => k8s.io/mount-utils v0.20.5-rc.0
k8s.io/sample-apiserver v0.0.0 => k8s.io/sample-apiserver v0.24.2
k8s.io/sample-cli-plugin v0.0.0 => k8s.io/sample-cli-plugin v0.24.2
k8s.io/sample-controller v0.0.0 => k8s.io/sample-controller v0.24.2
)

1964
go.sum

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,94 @@
package alert
import (
"fmt"
"os"
"strings"
"github.com/parnurzeal/gorequest"
"github.com/sirupsen/logrus"
)
// function to send alert msg to webhook service
func SendWebhookAlert(msg string) {
webhook_url, ok := os.LookupEnv("ALERT_WEBHOOK_URL")
if !ok {
logrus.Error("ALERT_WEBHOOK_URL env variable not provided")
return
}
webhook_url = strings.TrimSpace(webhook_url)
alert_sink := os.Getenv("ALERT_SINK")
alert_sink = strings.ToLower(strings.TrimSpace(alert_sink))
// Provision to add Proxy to reach webhook server if required
webhook_proxy := os.Getenv("ALERT_WEBHOOK_PROXY")
webhook_proxy = strings.TrimSpace(webhook_proxy)
// Provision to add Additional information in the alert. e.g ClusterName
alert_additional_info, ok := os.LookupEnv("ALERT_ADDITIONAL_INFO")
if ok {
alert_additional_info = strings.TrimSpace(alert_additional_info)
msg = fmt.Sprintf("%s : %s", alert_additional_info, msg)
}
if alert_sink == "slack" {
sendSlackAlert(webhook_url, webhook_proxy, msg)
} else {
msg = strings.Replace(msg, "*", "", -1)
sendRawWebhookAlert(webhook_url, webhook_proxy, msg)
}
}
// function to handle server redirection
func redirectPolicy(req gorequest.Request, via []gorequest.Request) error {
return fmt.Errorf("incorrect token (redirection)")
}
// function to send alert to slack
func sendSlackAlert(webhookUrl string, proxy string, msg string) []error {
attachment := Attachment{
Text: msg,
Color: "good",
AuthorName: "Reloader",
}
payload := WebhookMessage{
Attachments: []Attachment{attachment},
}
request := gorequest.New().Proxy(proxy)
resp, _, err := request.
Post(webhookUrl).
RedirectPolicy(redirectPolicy).
Send(payload).
End()
if err != nil {
return err
}
if resp.StatusCode >= 400 {
return []error{fmt.Errorf("error sending msg. status: %v", resp.Status)}
}
return nil
}
// function to send alert to webhook service as text
func sendRawWebhookAlert(webhookUrl string, proxy string, msg string) []error {
request := gorequest.New().Proxy(proxy)
resp, _, err := request.
Post(webhookUrl).
Type("text").
RedirectPolicy(redirectPolicy).
Send(msg).
End()
if err != nil {
return err
}
if resp.StatusCode >= 400 {
return []error{fmt.Errorf("error sending msg. status: %v", resp.Status)}
}
return nil
}

View File

@@ -0,0 +1,61 @@
package alert
type WebhookMessage struct {
Username string `json:"username,omitempty"`
IconEmoji string `json:"icon_emoji,omitempty"`
IconURL string `json:"icon_url,omitempty"`
Channel string `json:"channel,omitempty"`
ThreadTimestamp string `json:"thread_ts,omitempty"`
Text string `json:"text,omitempty"`
Attachments []Attachment `json:"attachments,omitempty"`
Parse string `json:"parse,omitempty"`
ResponseType string `json:"response_type,omitempty"`
ReplaceOriginal bool `json:"replace_original,omitempty"`
DeleteOriginal bool `json:"delete_original,omitempty"`
ReplyBroadcast bool `json:"reply_broadcast,omitempty"`
}
type Attachment struct {
Color string `json:"color,omitempty"`
Fallback string `json:"fallback,omitempty"`
CallbackID string `json:"callback_id,omitempty"`
ID int `json:"id,omitempty"`
AuthorID string `json:"author_id,omitempty"`
AuthorName string `json:"author_name,omitempty"`
AuthorSubname string `json:"author_subname,omitempty"`
AuthorLink string `json:"author_link,omitempty"`
AuthorIcon string `json:"author_icon,omitempty"`
Title string `json:"title,omitempty"`
TitleLink string `json:"title_link,omitempty"`
Pretext string `json:"pretext,omitempty"`
Text string `json:"text,omitempty"`
ImageURL string `json:"image_url,omitempty"`
ThumbURL string `json:"thumb_url,omitempty"`
ServiceName string `json:"service_name,omitempty"`
ServiceIcon string `json:"service_icon,omitempty"`
FromURL string `json:"from_url,omitempty"`
OriginalURL string `json:"original_url,omitempty"`
MarkdownIn []string `json:"mrkdwn_in,omitempty"`
Footer string `json:"footer,omitempty"`
FooterIcon string `json:"footer_icon,omitempty"`
}
type Field struct {
Title string `json:"title"`
Value string `json:"value"`
Short bool `json:"short"`
}
type Action struct {
Type string `json:"type"`
Text string `json:"text"`
Url string `json:"url"`
Style string `json:"style"`
}

View File

@@ -37,6 +37,7 @@ func NewReloaderCommand() *cobra.Command {
cmd.PersistentFlags().StringSlice("namespaces-to-ignore", []string{}, "list of namespaces to ignore")
cmd.PersistentFlags().StringVar(&options.IsArgoRollouts, "is-Argo-Rollouts", "false", "Add support for argo rollouts")
cmd.PersistentFlags().StringVar(&options.ReloadStrategy, constants.ReloadStrategyFlag, constants.EnvVarsReloadStrategy, "Specifies the desired reload strategy")
cmd.PersistentFlags().StringVar(&options.ReloadOnCreate, "reload-on-create", "false", "Add support to watch create events")
return cmd
}

View File

@@ -2,6 +2,7 @@ package controller
import (
"fmt"
"github.com/stakater/Reloader/internal/pkg/options"
"time"
"github.com/sirupsen/logrus"
@@ -60,11 +61,13 @@ func NewController(
// Add function to add a new object to the queue in case of creating a resource
func (c *Controller) Add(obj interface{}) {
if !c.resourceInIgnoredNamespace(obj) && controllerInitialized {
c.queue.Add(handler.ResourceCreatedHandler{
Resource: obj,
Collectors: c.collectors,
})
if options.ReloadOnCreate == "true" {
if !c.resourceInIgnoredNamespace(obj) && controllerInitialized {
c.queue.Add(handler.ResourceCreatedHandler{
Resource: obj,
Collectors: c.collectors,
})
}
}
}

View File

@@ -4,8 +4,11 @@ import (
"encoding/json"
"errors"
"fmt"
"os"
"github.com/prometheus/client_golang/prometheus"
"github.com/sirupsen/logrus"
alert "github.com/stakater/Reloader/internal/pkg/alerts"
"github.com/stakater/Reloader/internal/pkg/callbacks"
"github.com/stakater/Reloader/internal/pkg/constants"
"github.com/stakater/Reloader/internal/pkg/metrics"
@@ -13,6 +16,7 @@ import (
"github.com/stakater/Reloader/internal/pkg/util"
"github.com/stakater/Reloader/pkg/kube"
v1 "k8s.io/api/core/v1"
"regexp"
"strconv"
"strings"
)
@@ -154,8 +158,9 @@ func PerformRollingUpgrade(clients kube.Clients, config util.Config, upgradeFunc
if result != constants.Updated && annotationValue != "" {
values := strings.Split(annotationValue, ",")
for _, value := range values {
value = strings.Trim(value, " ")
if value == config.ResourceName {
value = strings.TrimSpace(value)
re := regexp.MustCompile("^" + value + "$")
if re.Match([]byte(config.ResourceName)) {
result = invokeReloadStrategy(upgradeFuncs, i, config, false)
if result == constants.Updated {
break
@@ -182,6 +187,13 @@ func PerformRollingUpgrade(clients kube.Clients, config util.Config, upgradeFunc
logrus.Infof("Changes detected in '%s' of type '%s' in namespace '%s'", config.ResourceName, config.Type, config.Namespace)
logrus.Infof("Updated '%s' of type '%s' in namespace '%s'", resourceName, upgradeFuncs.ResourceType, config.Namespace)
collectors.Reloaded.With(prometheus.Labels{"success": "true"}).Inc()
alert_on_reload, ok := os.LookupEnv("ALERT_ON_RELOAD")
if ok && alert_on_reload == "true" {
msg := fmt.Sprintf(
"Reloader detected changes in *%s* of type *%s* in namespace *%s*. Hence reloaded *%s* of type *%s* in namespace *%s*",
config.ResourceName, config.Type, config.Namespace, resourceName, upgradeFuncs.ResourceType, config.Namespace)
alert.SendWebhookAlert(msg)
}
}
}
}

View File

@@ -23,4 +23,6 @@ var (
IsArgoRollouts = "false"
// ReloadStrategy Specify the update strategy
ReloadStrategy = constants.EnvVarsReloadStrategy
// ReloadOnCreate Adds support to watch create events
ReloadOnCreate = "false"
)