Skip to content

Commit f44327f

Browse files
CR-21441 -- add event reporter as argocd component (#31)
* almost final statefulset * final statefulset * add metrics * add role * add rolebinding * add serviceaccount.yaml * add servicemonitor.yaml + update values * add prometheusrule.yaml * add networkpolicy.yaml * add pdb * add cluster roles * change version + add change * fix indents * fix doc * update docs * disable event reporter by default * disable old reporter by value * add missing docs * update chart * update docs * remove hardcoded defaults + add correct template for argocd-cm * use production version of argo-cd * update default amount of reporter replicas * fix values and docs * fix metrics service
1 parent 4eed965 commit f44327f

File tree

16 files changed

+932
-3
lines changed

16 files changed

+932
-3
lines changed

charts/argo-cd/Chart.yaml

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
apiVersion: v2
2-
appVersion: v2.8.1-cap-CR-20837
2+
appVersion: v2.8.1-cap-CR-21281-new-reporter
33
kubeVersion: ">=1.23.0-0"
44
description: A Helm chart for Argo CD, a declarative, GitOps continuous delivery tool for Kubernetes.
55
name: argo-cd
6-
version: 5.50.1-0-cap-CR-20837
6+
version: 5.50.1-1-cap-CR-21429
77
home: https://github.com/argoproj/argo-helm
88
icon: https://argo-cd.readthedocs.io/en/stable/assets/logo.png
99
sources:
@@ -26,5 +26,9 @@ annotations:
2626
fingerprint: 2B8F22F57260EFA67BE1C5824B11F800CD9D2252
2727
url: https://argoproj.github.io/argo-helm/pgp_keys.asc
2828
artifacthub.io/changes: |
29+
- kind: added
30+
description: Add event reporter as a separate component
2931
- kind: changed
30-
description: Update ArgoCD version to v2.8.1-cap-CR-20837
32+
description: Update ArgoCD version to v2.8.1-cap-CR-21281-new-reporter
33+
- kind: changed
34+
description: Add ability to switch between reporters

charts/argo-cd/README.md

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,79 @@ NAME: my-release
390390
| crds.keep | bool | `true` | Keep CRDs on chart uninstall |
391391
| createAggregateRoles | bool | `false` | Create aggregated roles that extend existing cluster roles to interact with argo-cd resources |
392392
| createClusterRoles | bool | `true` | Create cluster roles for cluster-wide installation. |
393+
| eventReporter.affinity | object | `{}` (defaults to global.affinity preset) | Assign custom [affinity] rules to the deployment |
394+
| eventReporter.clusterRoleRules.enabled | bool | `false` | Enable custom rules for the event reporter's ClusterRole resource |
395+
| eventReporter.clusterRoleRules.rules | list | `[]` | List of custom rules for the event reporter's ClusterRole resource |
396+
| eventReporter.containerPorts.health | int | `8088` | |
397+
| eventReporter.containerPorts.metrics | int | `8087` | Metrics container port |
398+
| eventReporter.containerSecurityContext | object | See [values.yaml] | Event reporter container-level security context |
399+
| eventReporter.dnsConfig | object | `{}` | [DNS configuration] |
400+
| eventReporter.dnsPolicy | string | `"ClusterFirst"` | Alternative DNS policy for event reporter pods |
401+
| eventReporter.enabled | bool | `false` | |
402+
| eventReporter.env | list | `[]` | Environment variables to pass to event reporter |
403+
| eventReporter.envFrom | list | `[]` (See [values.yaml]) | envFrom to pass to event reporter |
404+
| eventReporter.extraArgs | list | `[]` | Additional command line arguments to pass to event reporter |
405+
| eventReporter.extraContainers | list | `[]` | Additional containers to be added to the event reporter pod |
406+
| eventReporter.hostNetwork | bool | `false` | Host Network for event reporter pods |
407+
| eventReporter.image.imagePullPolicy | string | `""` (defaults to global.image.imagePullPolicy) | Image pull policy for the event reporter |
408+
| eventReporter.image.repository | string | `""` (defaults to global.image.repository) | Repository to use for the event reporter |
409+
| eventReporter.image.tag | string | `""` (defaults to global.image.tag) | Tag to use for the event reporter |
410+
| eventReporter.imagePullSecrets | list | `[]` (defaults to global.imagePullSecrets) | Secrets with credentials to pull images from a private registry |
411+
| eventReporter.initContainers | list | `[]` | Init containers to add to the event reporter pod |
412+
| eventReporter.metrics.applicationLabels.enabled | bool | `false` | Enables additional labels in argocd_app_labels metric |
413+
| eventReporter.metrics.applicationLabels.labels | list | `[]` | Additional labels |
414+
| eventReporter.metrics.enabled | bool | `false` | Deploy metrics service |
415+
| eventReporter.metrics.rules.additionalLabels | object | `{}` | PrometheusRule labels |
416+
| eventReporter.metrics.rules.annotations | object | `{}` | PrometheusRule annotations |
417+
| eventReporter.metrics.rules.enabled | bool | `false` | Deploy a PrometheusRule for the event reporter |
418+
| eventReporter.metrics.rules.namespace | string | `""` | PrometheusRule namespace |
419+
| eventReporter.metrics.rules.selector | object | `{}` | PrometheusRule selector |
420+
| eventReporter.metrics.rules.spec | list | `[]` | PrometheusRule.Spec for the event reporter |
421+
| eventReporter.metrics.service.annotations | object | `{}` | Metrics service annotations |
422+
| eventReporter.metrics.service.clusterIP | string | `""` | Metrics service clusterIP. `None` makes a "headless service" (no virtual IP) |
423+
| eventReporter.metrics.service.labels | object | `{}` | Metrics service labels |
424+
| eventReporter.metrics.service.portName | string | `"http-metrics"` | Metrics service port name |
425+
| eventReporter.metrics.service.servicePort | int | `8087` | Metrics service port |
426+
| eventReporter.metrics.service.type | string | `"ClusterIP"` | Metrics service type |
427+
| eventReporter.metrics.serviceMonitor.additionalLabels | object | `{}` | Prometheus ServiceMonitor labels |
428+
| eventReporter.metrics.serviceMonitor.annotations | object | `{}` | Prometheus ServiceMonitor annotations |
429+
| eventReporter.metrics.serviceMonitor.enabled | bool | `false` | Enable a prometheus ServiceMonitor |
430+
| eventReporter.metrics.serviceMonitor.interval | string | `"30s"` | Prometheus ServiceMonitor interval |
431+
| eventReporter.metrics.serviceMonitor.metricRelabelings | list | `[]` | Prometheus [MetricRelabelConfigs] to apply to samples before ingestion |
432+
| eventReporter.metrics.serviceMonitor.namespace | string | `""` | Prometheus ServiceMonitor namespace |
433+
| eventReporter.metrics.serviceMonitor.relabelings | list | `[]` | Prometheus [RelabelConfigs] to apply to samples before scraping |
434+
| eventReporter.metrics.serviceMonitor.scheme | string | `""` | Prometheus ServiceMonitor scheme |
435+
| eventReporter.metrics.serviceMonitor.selector | object | `{}` | Prometheus ServiceMonitor selector |
436+
| eventReporter.metrics.serviceMonitor.tlsConfig | object | `{}` | Prometheus ServiceMonitor tlsConfig |
437+
| eventReporter.name | string | `"event-reporter"` | |
438+
| eventReporter.nodeSelector | object | `{}` (defaults to global.nodeSelector) | [Node selector] |
439+
| eventReporter.pdb.annotations | object | `{}` | Annotations to be added to event reporter pdb |
440+
| eventReporter.pdb.enabled | bool | `false` | Deploy a [PodDisruptionBudget] for the event reporter |
441+
| eventReporter.pdb.labels | object | `{}` | Labels to be added to event reporter pdb |
442+
| eventReporter.pdb.maxUnavailable | string | `""` | Number of pods that are unavailable after eviction as number or percentage (eg.: 50%). |
443+
| eventReporter.pdb.minAvailable | string | `""` (defaults to 0 if not specified) | Number of pods that are available after eviction as number or percentage (eg.: 50%) |
444+
| eventReporter.podAnnotations | object | `{}` | Annotations to be added to event reporter pods |
445+
| eventReporter.podLabels | object | `{}` | Labels to be added to event reporter pods |
446+
| eventReporter.priorityClassName | string | `""` (defaults to global.priorityClassName) | Priority class for the event reporter pods |
447+
| eventReporter.readinessProbe.failureThreshold | int | `3` | Minimum consecutive failures for the [probe] to be considered failed after having succeeded |
448+
| eventReporter.readinessProbe.initialDelaySeconds | int | `10` | Number of seconds after the container has started before [probe] is initiated |
449+
| eventReporter.readinessProbe.periodSeconds | int | `10` | How often (in seconds) to perform the [probe] |
450+
| eventReporter.readinessProbe.successThreshold | int | `1` | Minimum consecutive successes for the [probe] to be considered successful after having failed |
451+
| eventReporter.readinessProbe.timeoutSeconds | int | `1` | Number of seconds after which the [probe] times out |
452+
| eventReporter.replicas | int | `3` | |
453+
| eventReporter.resources | object | `{}` | Resource limits and requests for the event reporter pods |
454+
| eventReporter.serviceAccount.annotations | object | `{}` | Annotations applied to created service account |
455+
| eventReporter.serviceAccount.automountServiceAccountToken | bool | `true` | Automount API credentials for the Service Account |
456+
| eventReporter.serviceAccount.create | bool | `true` | Create a service account for the event reporter |
457+
| eventReporter.serviceAccount.labels | object | `{}` | Labels applied to created service account |
458+
| eventReporter.serviceAccount.name | string | `"event-reporter"` | Service account name |
459+
| eventReporter.statefulsetAnnotations | object | `{}` | Annotations for the event reporter StatefulSet |
460+
| eventReporter.terminationGracePeriodSeconds | int | `30` | terminationGracePeriodSeconds for container lifecycle hook |
461+
| eventReporter.tolerations | list | `[]` (defaults to global.tolerations) | [Tolerations] for use with node taints |
462+
| eventReporter.topologySpreadConstraints | list | `[]` (defaults to global.topologySpreadConstraints) | Assign custom [TopologySpreadConstraints] rules to the event reporter |
463+
| eventReporter.version | string | `"v1"` | |
464+
| eventReporter.volumeMounts | list | `[]` | Additional volumeMounts to the event reporter main container |
465+
| eventReporter.volumes | list | `[]` | Additional volumes to the event reporter pod |
393466
| extraObjects | list | `[]` | Array of extra K8s manifests to deploy |
394467
| fullnameOverride | string | `""` | String to fully override `"argo-cd.fullname"` |
395468
| kubeVersionOverride | string | `""` | Override the Kubernetes version, which is used to evaluate certain manifests |

charts/argo-cd/templates/_helpers.tpl

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,3 +216,20 @@ Merge Argo Params Configuration with Preset Configuration
216216
{{ $key }}: {{ toString $value | toYaml }}
217217
{{- end }}
218218
{{- end -}}
219+
220+
{{/*
221+
Create event reporter name and version as used by the chart label.
222+
*/}}
223+
{{- define "argo-cd.event-reporter.fullname" -}}
224+
{{- printf "%s-%s" (include "argo-cd.fullname" .) .Values.eventReporter.name | trunc 63 | trimSuffix "-" -}}
225+
{{- end -}}
226+
{{/*
227+
Create the name of the Argo CD server service account to use
228+
*/}}
229+
{{- define "argo-cd.eventReporterServiceAccountName" -}}
230+
{{- if .Values.eventReporter.serviceAccount.create -}}
231+
{{ default (include "argo-cd.event-reporter.fullname" .) .Values.eventReporter.serviceAccount.name }}
232+
{{- else -}}
233+
{{ default "default" .Values.eventReporter.serviceAccount.name }}
234+
{{- end -}}
235+
{{- end -}}

charts/argo-cd/templates/argocd-configs/argocd-cm.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,8 @@ metadata:
1414
{{- end }}
1515
data:
1616
{{- include "argo-cd.config.cm" . | trim | nindent 2 }}
17+
18+
{{- if and .Values.eventReporter.enabled .Values.eventReporter.version }}
19+
codefresh.reporterVersion: {{ .Values.eventReporter.version | quote }}
20+
{{- end }}
1721
{{- end }}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
{{- if .Values.eventReporter.enabled }}
2+
{{- $config := .Values.eventReporter.clusterAdminAccess | default dict -}}
3+
{{- if hasKey $config "enabled" | ternary $config.enabled .Values.createClusterRoles }}
4+
apiVersion: rbac.authorization.k8s.io/v1
5+
kind: ClusterRole
6+
metadata:
7+
name: {{ include "argo-cd.event-reporter.fullname" . }}
8+
labels:
9+
{{- include "argo-cd.labels" (dict "context" . "component" .Values.eventReporter.name "name" .Values.eventReporter.name) | nindent 4 }}
10+
rules:
11+
{{- if .Values.eventReporter.clusterRoleRules.enabled }}
12+
{{- toYaml .Values.eventReporter.clusterRoleRules.rules | nindent 2 }}
13+
{{- else }}
14+
- apiGroups:
15+
- '*'
16+
resources:
17+
- '*'
18+
verbs:
19+
- '*'
20+
- nonResourceURLs:
21+
- '*'
22+
verbs:
23+
- '*'
24+
{{- end }}
25+
{{- end }}
26+
{{- end }}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{{- if .Values.eventReporter.enabled }}
2+
{{- $config := .Values.eventReporter.clusterAdminAccess | default dict -}}
3+
{{- if hasKey $config "enabled" | ternary $config.enabled .Values.createClusterRoles }}
4+
apiVersion: rbac.authorization.k8s.io/v1
5+
kind: ClusterRoleBinding
6+
metadata:
7+
name: {{ include "argo-cd.event-reporter.fullname" . }}
8+
labels:
9+
{{- include "argo-cd.labels" (dict "context" . "component" .Values.eventReporter.name "name" .Values.eventReporter.name) | nindent 4 }}
10+
roleRef:
11+
apiGroup: rbac.authorization.k8s.io
12+
kind: ClusterRole
13+
name: {{ include "argo-cd.event-reporter.fullname" . }}
14+
subjects:
15+
- kind: ServiceAccount
16+
name: {{ include "argo-cd.eventReporterServiceAccountName" . }}
17+
namespace: {{ .Release.Namespace }}
18+
{{- end }}
19+
{{- end }}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
{{- if and .Values.eventReporter.enabled .Values.eventReporter.metrics.enabled }}
2+
apiVersion: v1
3+
kind: Service
4+
metadata:
5+
name: {{ include "argo-cd.event-reporter.fullname" . }}-metrics
6+
namespace: {{ .Release.Namespace | quote }}
7+
labels:
8+
{{- include "argo-cd.labels" (dict "context" . "component" .Values.eventReporter.name "name" (printf "%s-metrics" .Values.eventReporter.name)) | nindent 4 }}
9+
{{- with .Values.eventReporter.metrics.service.labels }}
10+
{{- toYaml . | nindent 4 }}
11+
{{- end }}
12+
{{- if or .Values.eventReporter.metrics.service.annotations .Values.global.addPrometheusAnnotations }}
13+
annotations:
14+
{{- if .Values.global.addPrometheusAnnotations }}
15+
prometheus.io/port: {{ .Values.eventReporter.metrics.service.servicePort | quote }}
16+
prometheus.io/scrape: "true"
17+
{{- end }}
18+
{{- range $key, $value := .Values.eventReporter.metrics.service.annotations }}
19+
{{ $key }}: {{ $value | quote }}
20+
{{- end }}
21+
{{- end }}
22+
spec:
23+
type: {{ .Values.eventReporter.metrics.service.type }}
24+
{{- if and .Values.eventReporter.metrics.service.clusterIP (eq .Values.eventReporter.metrics.service.type "ClusterIP") }}
25+
clusterIP: {{ .Values.eventReporter.metrics.service.clusterIP }}
26+
{{- end }}
27+
ports:
28+
- name: {{ .Values.eventReporter.metrics.service.portName }}
29+
protocol: TCP
30+
port: {{ .Values.eventReporter.metrics.service.servicePort }}
31+
targetPort: metrics
32+
selector:
33+
{{- include "argo-cd.selectorLabels" (dict "context" . "name" .Values.eventReporter.name) | nindent 4 }}
34+
{{- end }}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
{{- if and .Values.eventReporter.enabled .Values.global.networkPolicy.create }}
2+
apiVersion: networking.k8s.io/v1
3+
kind: NetworkPolicy
4+
metadata:
5+
labels:
6+
{{- include "argo-cd.labels" (dict "context" . "component" .Values.eventReporter.name "name" .Values.eventReporter.name) | nindent 4 }}
7+
name: {{ template "argo-cd.event-reporter.fullname" . }}
8+
namespace: {{ .Release.Namespace | quote }}
9+
spec:
10+
ingress:
11+
- from:
12+
- namespaceSelector: {}
13+
ports:
14+
- port: metrics
15+
podSelector:
16+
matchLabels:
17+
{{- include "argo-cd.selectorLabels" (dict "context" . "name" .Values.eventReporter.name) | nindent 6 }}
18+
policyTypes:
19+
- Ingress
20+
{{- end }}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
{{- if and .Values.eventReporter.enabled .Values.eventReporter.pdb.enabled }}
2+
apiVersion: policy/v1
3+
kind: PodDisruptionBudget
4+
metadata:
5+
name: {{ include "argo-cd.event-reporter.fullname" . }}
6+
namespace: {{ .Release.Namespace | quote }}
7+
labels:
8+
{{- include "argo-cd.labels" (dict "context" . "component" .Values.eventReporter.name "name" .Values.eventReporter.name) | nindent 4 }}
9+
{{- with .Values.eventReporter.pdb.labels }}
10+
{{- toYaml . | nindent 4 }}
11+
{{- end }}
12+
{{- with .Values.eventReporter.pdb.annotations }}
13+
annotations:
14+
{{- range $key, $value := . }}
15+
{{ $key }}: {{ $value | quote }}
16+
{{- end }}
17+
{{- end }}
18+
spec:
19+
{{- with .Values.eventReporter.pdb.maxUnavailable }}
20+
maxUnavailable: {{ . }}
21+
{{- else }}
22+
minAvailable: {{ .Values.eventReporter.pdb.minAvailable | default 0 }}
23+
{{- end }}
24+
selector:
25+
matchLabels:
26+
{{- include "argo-cd.selectorLabels" (dict "context" . "name" .Values.eventReporter.name) | nindent 6 }}
27+
{{- end }}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{{- if and .Values.eventReporter.enabled .Values.eventReporter.metrics.enabled .Values.eventReporter.metrics.rules.enabled }}
2+
apiVersion: monitoring.coreos.com/v1
3+
kind: PrometheusRule
4+
metadata:
5+
name: {{ template "argo-cd.event-reporter.fullname" . }}
6+
namespace: {{ default .Release.Namespace .Values.eventReporter.metrics.rules.namespace | quote }}
7+
labels:
8+
{{- include "argo-cd.labels" (dict "context" . "component" .Values.eventReporter.name "name" .Values.eventReporter.name) | nindent 4 }}
9+
{{- if .Values.eventReporter.metrics.rules.selector }}
10+
{{- toYaml .Values.eventReporter.metrics.rules.selector | nindent 4 }}
11+
{{- end }}
12+
{{- if .Values.eventReporter.metrics.rules.additionalLabels }}
13+
{{- toYaml .Values.eventReporter.metrics.rules.additionalLabels | nindent 4 }}
14+
{{- end }}
15+
{{- with .Values.eventReporter.metrics.rules.annotations }}
16+
annotations:
17+
{{- toYaml . | nindent 4 }}
18+
{{- end }}
19+
spec:
20+
groups:
21+
- name: argocd
22+
rules:
23+
{{- toYaml .Values.eventReporter.metrics.rules.spec | nindent 4 }}
24+
{{- end }}

0 commit comments

Comments
 (0)