Skip to content

Commit 5e6bd59

Browse files
feat: add separate redis for cf-argocd-extras and app-proxy
1 parent 45ef0cc commit 5e6bd59

File tree

17 files changed

+731
-43
lines changed

17 files changed

+731
-43
lines changed

charts/gitops-runtime/Chart.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,3 +40,7 @@ dependencies:
4040
- name: cf-common
4141
repository: oci://quay.io/codefresh/charts
4242
version: 0.27.0
43+
- name: redis-ha
44+
version: 4.33.4
45+
repository: https://dandydeveloper.github.io/charts/
46+
condition: redis-ha.enabled

charts/gitops-runtime/templates/_components/cap-app-proxy/environment-variables/_main-container.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,13 @@ LEADER_ID:
217217
fieldRef:
218218
fieldPath: metadata.name
219219
{{- end }}
220+
CACHE_HOST: {{ (splitList ":" (include "codefresh-gitops-runtime.argocd.redis.url" .) | first) }}
221+
CACHE_PORT: {{ (splitList ":" (include "codefresh-gitops-runtime.argocd.redis.url" .) | last) }}
222+
CACHE_PASSWORD:
223+
valueFrom:
224+
secretKeyRef:
225+
name: gitops-runtime-redis
226+
key: auth
220227
{{ include "codefresh-gitops-runtime.get-proxy-env-vars" . }}
221228
{{- end -}}
222229

charts/gitops-runtime/templates/_components/cf-argocd-extras/_default-values.tpl

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -148,29 +148,29 @@ eventReporter:
148148
REDISDB:
149149
valueFrom:
150150
configMapKeyRef:
151-
name: argocd-cmd-params-cm
151+
name: event-reporter-cmd-params-cm
152152
key: redis.db
153153
optional: true
154154
REDIS_COMPRESSION:
155155
valueFrom:
156156
configMapKeyRef:
157-
name: argocd-cmd-params-cm
157+
name: event-reporter-cmd-params-cm
158158
key: redis.compression
159159
optional: true
160160
REDIS_PASSWORD:
161161
valueFrom:
162162
secretKeyRef:
163-
name: argocd-redis
163+
name: gitops-runtime-redis
164164
key: auth
165165
REDIS_SERVER:
166166
valueFrom:
167167
configMapKeyRef:
168-
name: argocd-cmd-params-cm
168+
name: event-reporter-cmd-params-cm
169169
key: redis.server
170170
REDIS_USERNAME:
171171
valueFrom:
172172
secretKeyRef:
173-
name: argocd-redis
173+
name: event-reporter-cmd-params-cm
174174
key: redis-username
175175
optional: true
176176
REPO_SERVER:
@@ -427,29 +427,29 @@ sourcesServer:
427427
REDISDB:
428428
valueFrom:
429429
configMapKeyRef:
430-
name: argocd-cmd-params-cm
430+
name: sources-server-cmd-params-cm
431431
key: redis.db
432432
optional: true
433433
REDIS_COMPRESSION:
434434
valueFrom:
435435
configMapKeyRef:
436-
name: argocd-cmd-params-cm
436+
name: sources-server-cmd-params-cm
437437
key: redis.compression
438438
optional: true
439439
REDIS_PASSWORD:
440440
valueFrom:
441441
secretKeyRef:
442-
name: argocd-redis
442+
name: gitops-runtime-redis
443443
key: auth
444444
REDIS_SERVER:
445445
valueFrom:
446446
configMapKeyRef:
447-
name: argocd-cmd-params-cm
447+
name: sources-server-cmd-params-cm
448448
key: redis.server
449449
REDIS_USERNAME:
450450
valueFrom:
451451
secretKeyRef:
452-
name: argocd-redis
452+
name: sources-server-cmd-params-cm
453453
key: redis-username
454454
optional: true
455455
REPO_SERVER:

charts/gitops-runtime/templates/_helpers.tpl

Lines changed: 83 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -330,18 +330,18 @@ Determine argocd server password.
330330
Determine argocd redis url
331331
*/}}
332332
{{- define "codefresh-gitops-runtime.argocd.redis.url" -}}
333-
{{- $argoCDValues := (get .Values "argo-cd") }}
334-
{{- if and (index .Values "argo-cd" "enabled") }}
335-
{{- $serviceName := include "codefresh-gitops-runtime.argocd.redis.servicename" . }}
336-
{{- $port := include "codefresh-gitops-runtime.argocd.redis.serviceport" . }}
337-
{{- printf "%s:%s" $serviceName $port }}
338-
{{- else if and (index .Values "global" "external-argo-cd" "redis") }}
339-
{{- $redis := (index .Values "global" "external-argo-cd" "redis") }}
340-
{{- $svc := required "ArgoCD is not enabled and .Values.global.external-argo-cd.redis.svc is not set" $redis.svc }}
341-
{{- $port := required "ArgoCD is not enabled and .Values.global.external-argo-cd.redis.port is not set" $redis.port }}
342-
{{- printf "%s:%v" $svc $port }}
333+
{{- if and (index .Values "redis-ha" "enabled") (index .Values "redis-ha" "haproxy" "enabled") }}
334+
{{- $redisHa := (index .Values "redis-ha") -}}
335+
{{- $redisHaContext := dict "Chart" (dict "Name" "redis-ha") "Release" .Release "Values" $redisHa -}}
336+
{{- $serverName := printf "%s-haproxy" (include "redis-ha.fullname" $redisHaContext) | trunc 63 | trimSuffix "-" -}}
337+
{{- $port := $redisHa.haproxy.servicePort -}}
338+
{{- printf "%s:%v" $serverName $port }}
339+
{{- else if .Values.redis.enabled }}
340+
{{- $serviceName := include "redis.fullname" . }}
341+
{{- $port := .Values.redis.service.ports.redis.port }}
342+
{{- printf "%s:%v" $serviceName $port }}
343343
{{- else }}
344-
{{- fail "ArgoCD is not enabled and .Values.global.external-argo-cd.redis is not set" }}
344+
{{- fail "ERROR: .Values.redis or .Values.redis-ha must be enabled!" }}
345345
{{- end }}
346346
{{- end}}
347347

@@ -536,3 +536,75 @@ NO_PROXY: {{ .Values.global.noProxy | quote }}
536536

537537
{{- printf "%s" $eventBusName }}
538538
{{- end }}
539+
540+
{{- define "codefresh-gitops-runtime.image.name" -}}
541+
{{/* Restoring root $ context */}}
542+
{{- $ := .context -}}
543+
544+
{{- $registryName := .image.registry -}}
545+
{{- $repositoryName := .image.repository -}}
546+
{{- $imageTag := .image.tag | toString -}}
547+
{{- $imageDigest := .image.digest }}
548+
549+
{{- if $.Values.global -}}
550+
{{- if $.Values.global.imageRegistry -}}
551+
{{ $registryName = $.Values.global.imageRegistry }}
552+
{{- end -}}
553+
{{- end -}}
554+
555+
{{- if $registryName -}}
556+
{{- if $imageDigest }}
557+
{{- printf "%s/%s:%s@%s" $registryName $repositoryName $imageTag $imageDigest -}}
558+
{{- else }}
559+
{{- printf "%s/%s:%s" $registryName $repositoryName $imageTag -}}
560+
{{- end }}
561+
{{- else }}
562+
{{- if $imageDigest }}
563+
{{- printf "%s:%s@%s" $repositoryName $imageTag $imageDigest -}}
564+
{{- else }}
565+
{{- printf "%s:%s" $repositoryName $imageTag -}}
566+
{{- end }}
567+
{{- end }}
568+
{{- end }}
569+
570+
{{- define "codefresh-gitops-runtime.env-vars"}}
571+
{{- $ := .context }}
572+
{{- if .Values }}
573+
{{- if not (kindIs "map" .Values) }}
574+
{{ fail "ERROR: env block must be a map"}}
575+
{{- end }}
576+
{{- end }}
577+
{{- $env := .Values }}
578+
{{- $templatedEnv := include "codefresh-gitops-runtime.tplrender" (dict "Values" $env "context" $) | fromYaml }}
579+
{{- range $name, $val := $templatedEnv }}
580+
{{- if or (kindIs "string" $val) (kindIs "bool" $val) (kindIs "int" $val) (kindIs "float64" $val) }}
581+
- name: {{ $name }}
582+
value: {{ $val | quote }}
583+
{{- else if kindIs "map" $val}}
584+
{{- if hasKey $val "valueFrom" }}
585+
{{- if or (hasKey $val.valueFrom "secretKeyRef") (hasKey $val.valueFrom "configMapKeyRef") (hasKey $val.valueFrom "fieldRef") }}
586+
- name: {{ $name }}
587+
{{- $val | toYaml | nindent 2 }}
588+
{{- else}}
589+
{{ fail "ERROR: Only secretKeyRef/configMapKeyRef/fieldRef are supported for valueFrom block for environment variables!" }}
590+
{{- end}}
591+
{{- else }}
592+
{{ fail "ERROR: Cannot generate environment variables only strings and valueFrom are supported!"}}
593+
{{- end }}
594+
{{- else }}
595+
{{ fail "ERROR: Only maps and string/int/bool are supported for environment variables!"}}
596+
{{- end }}
597+
{{- end }}
598+
{{- end }}
599+
600+
{{- define "codefresh-gitops-runtime.tplrender" -}}
601+
{{- $tpl := .Values -}}
602+
{{- if not (typeIs "string" $tpl) -}}
603+
{{- $tpl = toYaml $tpl -}}
604+
{{- end -}}
605+
{{- if contains "{{" $tpl -}}
606+
{{- tpl $tpl .context }}
607+
{{- else -}}
608+
{{- $tpl -}}
609+
{{- end -}}
610+
{{- end -}}

charts/gitops-runtime/templates/app-proxy/deployment.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
{{- $_ := set $appProxyContext "Values" (deepCopy (get .Values "app-proxy")) }}
44
{{- $_ := set $appProxyContext.Values "global" (deepCopy (get .Values "global")) }}
55
{{- $_ := set $appProxyContext.Values "argo-cd" (get .Values "argo-cd") }}
6+
{{- $_ := set $appProxyContext.Values "redis" (get .Values "redis") }}
7+
{{- $_ := set $appProxyContext.Values "redis-ha" (get .Values "redis-ha") }}
68

79
{{/* Merge environment variables with the ones in _app-proxy-env.yaml */}}
810
{{- $mainContainerMergedValues := mergeOverwrite $appProxyContext.Values.env (include "codefresh-gitops-runtime.app-proxy.calculated-env-vars" . | fromYaml) }}
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
apiVersion: batch/v1
2+
kind: Job
3+
metadata:
4+
name: redis-secret-init
5+
annotations:
6+
helm.sh/hook: pre-install,pre-upgrade
7+
helm.sh/hook-delete-policy: hook-succeeded,before-hook-creation
8+
helm.sh/hook-weight: "10"
9+
spec:
10+
backoffLimit: 0
11+
ttlSecondsAfterFinished: 300
12+
template:
13+
spec:
14+
serviceAccountName: redis-secret-init
15+
restartPolicy: Never
16+
containers:
17+
- name: redis-secret-init
18+
image: {{ include "codefresh-gitops-runtime.image.name" (dict "image" (index .Values "redis-secret-init" "image") "context" .) }}
19+
imagePullPolicy: {{ index .Values "redis-secret-init" "image" "pullPolicy" | default "IfNotPresent" }}
20+
command: ["sh", "-c"]
21+
args:
22+
- |
23+
PASSWORD=$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c16)
24+
if kubectl get secret gitops-runtime-redis -o jsonpath="{.data.auth}" &> /dev/null; then
25+
echo "Secret gitops-runtime-redis already exists, skipping creation"
26+
exit 0
27+
fi
28+
kubectl create secret generic gitops-runtime-redis --from-literal=auth=$PASSWORD --dry-run=client -o yaml | kubectl apply -f -
29+
{{- with (index .Values "redis-secret-init" "nodeSelector") | default .Values.global.nodeSelector }}
30+
nodeSelector: {{ toYaml . | nindent 8 }}
31+
{{- end }}
32+
{{- with (index .Values "redis-secret-init" "tolerations") | default .Values.global.tolerations }}
33+
tolerations: {{ toYaml . | nindent 6 }}
34+
{{- end }}
35+
{{- with (index .Values "redis-secret-init" "affinity") }}
36+
affinity: {{ toYaml . | nindent 8 }}
37+
{{- end }}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
apiVersion: rbac.authorization.k8s.io/v1
2+
kind: Role
3+
metadata:
4+
name: redis-secret-init
5+
namespace: {{ .Release.Namespace }}
6+
annotations:
7+
helm.sh/hook: pre-install,pre-upgrade
8+
helm.sh/hook-delete-policy: hook-succeeded,before-hook-creation,hook-failed
9+
helm.sh/hook-weight: "-10"
10+
rules:
11+
- apiGroups:
12+
- ""
13+
resources:
14+
- secrets
15+
resourceNames:
16+
- gitops-runtime-redis
17+
verbs:
18+
- get
19+
- apiGroups:
20+
- ""
21+
resources:
22+
- secrets
23+
verbs:
24+
- create
25+
---
26+
apiVersion: rbac.authorization.k8s.io/v1
27+
kind: RoleBinding
28+
metadata:
29+
name: redis-secret-init
30+
namespace: {{ .Release.Namespace }}
31+
annotations:
32+
helm.sh/hook: pre-install,pre-upgrade
33+
helm.sh/hook-delete-policy: hook-succeeded,before-hook-creation,hook-failed
34+
helm.sh/hook-weight: "-10"
35+
roleRef:
36+
apiGroup: rbac.authorization.k8s.io
37+
kind: Role
38+
name: redis-secret-init
39+
subjects:
40+
- kind: ServiceAccount
41+
name: redis-secret-init
42+
namespace: {{ .Release.Namespace }}
43+
---
44+
apiVersion: v1
45+
kind: ServiceAccount
46+
metadata:
47+
name: redis-secret-init
48+
annotations:
49+
helm.sh/hook: pre-install,pre-upgrade
50+
helm.sh/hook-delete-policy: hook-succeeded,before-hook-creation,hook-failed
51+
helm.sh/hook-weight: "-10"
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
{{/*
2+
Create a default fully qualified app name.
3+
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
4+
If release name contains chart name it will be used as a full name.
5+
*/}}
6+
{{- define "redis.fullname" -}}
7+
{{- print "redis" }}
8+
{{- end }}
9+
10+
{{/*
11+
Create chart name and version as used by the chart label.
12+
*/}}
13+
{{- define "redis.chart" -}}
14+
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
15+
{{- end }}
16+
17+
{{/*
18+
Common labels
19+
*/}}
20+
{{- define "redis.labels" -}}
21+
helm.sh/chart: {{ include "redis.chart" . }}
22+
{{ include "redis.selectorLabels" . }}
23+
{{- if .Chart.AppVersion }}
24+
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
25+
{{- end }}
26+
app.kubernetes.io/managed-by: {{ .Release.Service }}
27+
app.kubernetes.io/part-of: redis
28+
codefresh.io/internal: "true"
29+
{{- end }}
30+
31+
{{/*
32+
Selector labels
33+
*/}}
34+
{{- define "redis.selectorLabels" -}}
35+
app.kubernetes.io/name: redis
36+
app.kubernetes.io/instance: {{ .Release.Name }}
37+
{{- end }}
38+
39+
{{/*
40+
Create the name of the service account to use
41+
*/}}
42+
{{- define "redis.serviceAccountName" -}}
43+
{{- if .Values.redis.serviceAccount.create }}
44+
{{- default (include "redis.fullname" .) .Values.redis.serviceAccount.name }}
45+
{{- else }}
46+
{{- default "default" .Values.redis.serviceAccount.name }}
47+
{{- end }}
48+
{{- end }}

0 commit comments

Comments
 (0)