Skip to content

feat: rollout-reporter with external argo rollouts #441

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Apr 10, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 17 additions & 13 deletions charts/gitops-runtime/templates/_helpers.tpl
Original file line number Diff line number Diff line change
Expand Up @@ -118,10 +118,10 @@ Determine argocd argocd repo server port


{{/*
Determine argocd repoServer url
Determine argocd repoServer url
*/}}
{{- define "codefresh-gitops-runtime.argocd.reposerver.url" -}}
{{- $argoCDValues := (get .Values "argo-cd") }}
{{- $argoCDValues := (get .Values "argo-cd") }}
{{- if and (index .Values "argo-cd" "enabled") }}
{{- $serviceName := include "codefresh-gitops-runtime.argocd.reposerver.servicename" . }}
{{- $port := include "codefresh-gitops-runtime.argocd.reposerver.serviceport" . }}
Expand Down Expand Up @@ -149,8 +149,12 @@ Determine argocd servicename. Must be called with chart root context
Determine rollouts name
*/}}
{{- define "codefresh-gitops-runtime.argo-rollouts.name" -}}
{{/* For now use template from rollouts chart until better approach */}}
{{- template "argo-rollouts.fullname" (dict "Values" (get .Values "argo-rollouts")) }}
{{- if and (index .Values "argo-rollouts" "enabled") }}
{{/* For now use template from rollouts chart until better approach */}}
{{- template "argo-rollouts.fullname" (dict "Values" (get .Values "argo-rollouts")) }}
{{- else }}
{{- printf "argo-rollouts" }}
{{- end }}
{{- end }}


Expand Down Expand Up @@ -200,7 +204,7 @@ Determine argocd server url. Must be called with chart root context
{{- $port := (required "ArgoCD is not enabled and .Values.global.external-argo-cd.server.port is not port" $argoCDSrv.port) | toString }}
{{- $rootpath := (index .Values "global" "external-argo-cd" "server" "rootpath") }}
{{- if and (eq $port "80") }}
{{- printf "%s://%s%s" $protocol $svc $rootpath }}
{{- printf "%s://%s%s" $protocol $svc $rootpath }}
{{- else }}
{{- printf "%s://%s:%s%s" $protocol $svc $port $rootpath }}
{{- end }}
Expand All @@ -213,7 +217,7 @@ Determine argocd server url. Must be called with chart root context
Determine argocd server url witout the protocol. Must be called with chart root context
*/}}
{{- define "codefresh-gitops-runtime.argocd.server.no-protocol-url" -}}
{{- $argoCDValues := (get .Values "argo-cd") }}
{{- $argoCDValues := (get .Values "argo-cd") }}
{{- if and (index .Values "argo-cd" "enabled") }}
{{- $serverName := include "codefresh-gitops-runtime.argocd.server.servicename" . }}
{{- $port := include "codefresh-gitops-runtime.argocd.server.serviceport" . }}
Expand All @@ -231,7 +235,7 @@ Determine argocd server url witout the protocol. Must be called with chart root
{{- end}}

{{/*
Determine argocd server password.
Determine argocd server password.
*/}}
{{- define "codefresh-gitops-runtime.argocd.server.password" }}
{{- if and (index .Values "argo-cd" "enabled") }}
Expand Down Expand Up @@ -265,7 +269,7 @@ valueFrom:


{{/*
Determine argocd token password.
Determine argocd token password.
*/}}
{{- define "codefresh-gitops-runtime.argocd.server.token" }}
{{- if and (eq (index .Values "global" "external-argo-cd" "auth" "type") "token") (index .Values "global" "external-argo-cd" "auth" "tokenSecretKeyRef" "name") (index .Values "global" "external-argo-cd" "auth" "tokenSecretKeyRef" "key")}}
Expand All @@ -289,7 +293,7 @@ valueFrom:
{{- end }}

{{/*
Determine argocd server password.
Determine argocd server password.
*/}}
{{- define "codefresh-gitops-runtime.argocd.server.username-env-var" }}
{{- if and (index .Values "argo-cd" "enabled") }}
Expand All @@ -310,7 +314,7 @@ valueFrom:
{{- end }}

{{/*
Determine argocd server password.
Determine argocd server password.
*/}}
{{- define "codefresh-gitops-runtime.argocd.server.username-cm" }}
{{- if and (index .Values "argo-cd" "enabled") }}
Expand All @@ -323,10 +327,10 @@ Determine argocd server password.
{{- end }}

{{/*
Determine argocd redis url
Determine argocd redis url
*/}}
{{- define "codefresh-gitops-runtime.argocd.redis.url" -}}
{{- $argoCDValues := (get .Values "argo-cd") }}
{{- $argoCDValues := (get .Values "argo-cd") }}
{{- if and (index .Values "argo-cd" "enabled") }}
{{- $serviceName := include "codefresh-gitops-runtime.argocd.redis.servicename" . }}
{{- $port := include "codefresh-gitops-runtime.argocd.redis.serviceport" . }}
Expand Down Expand Up @@ -458,7 +462,7 @@ Output comma separated list of installed runtime components
{{- end }}
{{- if not (index .Values "argo-cd" "enabled") }}
{{- $eventReporter := dict "name" "event-reporter" "version" (get .Subcharts "cf-argocd-extras").Chart.AppVersion }}
{{- $comptList = append $comptList $eventReporter }}
{{- $comptList = append $comptList $eventReporter }}
{{- end }}
{{- $comptList | toYaml }}
{{- end }}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
{{/* Mapping of argo rollouts clusterrole if such is created (see https://github.com/codefresh-io/argo-helm/blob/argo-rollouts/charts/argo-rollouts/templates/controller/clusterrolebinding.yaml)
to the reporters ServiceAccount
*/}}
{{- if index (get .Values "argo-rollouts") "enabled" }}
{{- if and (index (get .Values "argo-rollouts") "clusterInstall") (index (get .Values "argo-rollouts") "controller" "createClusterRole") }}
{{- if or (index (get .Values "argo-rollouts") "enabled") (and (not (index (get .Values "argo-rollouts") "enabled")) (index .Values.global "external-argo-rollouts" "rollout-reporter" "enabled" )) }}
{{- if or (and (index (get .Values "argo-rollouts") "clusterInstall") (index (get .Values "argo-rollouts") "controller" "createClusterRole")) (and (not (index (get .Values "argo-rollouts") "enabled")) (index .Values.global "external-argo-rollouts" "rollout-reporter" "enabled" ))}}
{{- $eventReporterContext := deepCopy . }}
{{- $_ := set $eventReporterContext "Values" (deepCopy (get .Values "event-reporters")) }}
{{- $_ := set $eventReporterContext.Values "global" (deepCopy (get .Values "global")) }}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{{- if index (get .Values "argo-rollouts") "enabled" }}
{{- if or (index (get .Values "argo-rollouts") "enabled") (and (not (index (get .Values "argo-rollouts") "enabled")) (index .Values.global "external-argo-rollouts" "rollout-reporter" "enabled" )) }}
{{- $eventReporterContext := deepCopy . }}
{{- $_ := set $eventReporterContext "Values" (deepCopy (get .Values "event-reporters")) }}
{{- $_ := set $eventReporterContext.Values "global" (deepCopy (get .Values "global")) }}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{{- if index (get .Values "argo-rollouts") "enabled" }}
{{- if or (index (get .Values "argo-rollouts") "enabled") (and (not (index (get .Values "argo-rollouts") "enabled")) (index .Values.global "external-argo-rollouts" "rollout-reporter" "enabled" )) }}
{{- $eventReporterContext := deepCopy . }}
{{- $_ := set $eventReporterContext "Values" (deepCopy (get .Values "event-reporters")) }}
{{- $_ := set $eventReporterContext.Values "global" (deepCopy (get .Values "global")) }}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{{- if index (get .Values "argo-rollouts") "enabled" }}
{{- if or (index (get .Values "argo-rollouts") "enabled") (and (not (index (get .Values "argo-rollouts") "enabled")) (index .Values.global "external-argo-rollouts" "rollout-reporter" "enabled" )) }}
{{- $eventReporterContext := deepCopy . }}
{{- $_ := set $eventReporterContext "Values" (deepCopy (get .Values "event-reporters")) }}
{{- $_ := set $eventReporterContext.Values "global" (deepCopy (get .Values "global")) }}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
{{- if index (get .Values "argo-rollouts") "enabled" }}
{{- if or (index (get .Values "argo-rollouts") "enabled") (and (not (index (get .Values "argo-rollouts") "enabled")) (index .Values.global "external-argo-rollouts" "rollout-reporter" "enabled" )) }}
{{- $eventReporterContext := deepCopy . }}
{{- $_ := set $eventReporterContext "Values" (deepCopy (get .Values "event-reporters")) }}
{{- $_ := set $eventReporterContext.Values "global" (deepCopy (get .Values "global")) }}
Expand Down
88 changes: 88 additions & 0 deletions charts/gitops-runtime/tests/external_argo_rollouts_test.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# yaml-language-server: $schema=https://raw.githubusercontent.com/helm-unittest/helm-unittest/main/schema/helm-testsuite.json
suite: Test External Argo Rolouts with GitOps Runtime
templates:
- event-reporters/rollout-reporter/*
tests:
- it: Should not deploy rollout-reporter if argo-rollouts disabled
set:
argo-rollouts:
enabled: false
asserts:
- containsDocument:
apiVersion: v1
kind: ServiceAccount
name: rollout-reporter
template: event-reporters/rollout-reporter/serviceaccount.yaml
not: true
- containsDocument:
apiVersion: argoproj.io/v1alpha1
kind: Sensor
name: rollout-reporter
template: event-reporters/rollout-reporter/sensor.yaml
not: true
- containsDocument:
apiVersion: argoproj.io/v1alpha1
kind: EventSource
name: rollout-reporter
template: event-reporters/rollout-reporter/eventsource.yaml
not: true
- containsDocument:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
name: rollout-reporter-sa
template: event-reporters/rollout-reporter/rbac.yaml
not: true
- containsDocument:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
name: rollout-reporter-sa
template: event-reporters/rollout-reporter/rbac.yaml
not: true
- containsDocument:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
name: codefresh-rollouts-reporter
template: event-reporters/rollout-reporter/clusterrolebinding.yaml
not: true

- it: Should deploy rollout-reporter if argo-rollouts disabled AND .global.external-argo-rollouts.rollout-reporter.enabled is true
set:
argo-rollouts:
enabled: false
global:
external-argo-rollouts:
rollout-reporter:
enabled: true
asserts:
- containsDocument:
apiVersion: v1
kind: ServiceAccount
name: rollout-reporter
template: event-reporters/rollout-reporter/serviceaccount.yaml
- containsDocument:
apiVersion: argoproj.io/v1alpha1
kind: Sensor
name: rollout-reporter
template: event-reporters/rollout-reporter/sensor.yaml
- containsDocument:
apiVersion: argoproj.io/v1alpha1
kind: EventSource
name: rollout-reporter
template: event-reporters/rollout-reporter/eventsource.yaml
- containsDocument:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
name: rollout-reporter-sa
template: event-reporters/rollout-reporter/rbac.yaml
documentIndex: 0
- containsDocument:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
name: rollout-reporter-sa
template: event-reporters/rollout-reporter/rbac.yaml
documentIndex: 1
- containsDocument:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
name: codefresh-rollouts-reporter
template: event-reporters/rollout-reporter/clusterrolebinding.yaml
8 changes: 8 additions & 0 deletions charts/gitops-runtime/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,14 @@ global:
# name: argocd-token
# key: token

# -- Configuration for external Argo Rollouts
external-argo-rollouts:
# -- Rollout reporter settings
rollout-reporter:
# -- Enable or disable rollout reporter
# Configuration is defined at .Values.event-reporters.rollout
enabled: false

# -------------------------------------------------------------------------------------------------------------------------
# Installer
# -------------------------------------------------------------------------------------------------------------------------
Expand Down