Skip to content

Commit a18bd6b

Browse files
committed
Updated charts.
1 parent fbef34d commit a18bd6b

File tree

5 files changed

+99
-1
lines changed

5 files changed

+99
-1
lines changed

.github/workflows/helm_smoke.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,15 @@ jobs:
3737
>/tmp/ocr-service-rendered-hpa.yaml
3838
test -s /tmp/ocr-service-rendered-hpa.yaml
3939
40+
- name: Helm template (env files enabled)
41+
run: |
42+
helm template ocr-service charts/ocr-service \
43+
--set envFiles.enabled=true \
44+
--set-file 'envFiles.contents[0]=env/ocr_service.env' \
45+
--set-file 'envFiles.contents[1]=env/general.env' \
46+
>/tmp/ocr-service-rendered-envfiles.yaml
47+
test -s /tmp/ocr-service-rendered-envfiles.yaml
48+
4049
smoke:
4150
needs: lint
4251
runs-on: ubuntu-24.04

charts/ocr-service/README.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,30 @@ Deploys the CogStack OCR service as a Kubernetes `Deployment` + `Service`, with
88
helm install ocr-service ./charts/ocr-service
99
```
1010

11+
### Install with repo env files (dynamic)
12+
13+
```bash
14+
helm upgrade --install ocr-service ./charts/ocr-service \
15+
--set envFiles.enabled=true \
16+
--set-file envFiles.contents[0]=./env/ocr_service.env \
17+
--set-file envFiles.contents[1]=./env/general.env
18+
```
19+
20+
Text-only profile (overlay on top of base):
21+
22+
```bash
23+
helm upgrade --install ocr-service ./charts/ocr-service \
24+
--set envFiles.enabled=true \
25+
--set-file envFiles.contents[0]=./env/ocr_service.env \
26+
--set-file envFiles.contents[1]=./env/ocr_service_text_only.env \
27+
--set-file envFiles.contents[2]=./env/general.env
28+
```
29+
30+
Notes:
31+
- Env files are applied in order; later files override earlier ones.
32+
- Parsed env-file values override `values.yaml` `env` keys when `envFiles.enabled=true`.
33+
- Values are treated as literal strings (shell substitutions like `${VAR:-default}` are not expanded by Helm).
34+
1135
## Upgrade
1236

1337
```bash
@@ -18,6 +42,7 @@ helm upgrade ocr-service ./charts/ocr-service
1842

1943
- `image.repository` / `image.tag`: container image to run.
2044
- `env`: OCR service environment variables.
45+
- `envFiles.enabled` + `envFiles.contents`: parse one or more `.env` files at deploy time. Later files override earlier files.
2146
- `tmp.*`: writable `emptyDir` mount for `/ocr_service/tmp`.
2247
- `probes.*`: startup/readiness/liveness probe settings.
2348
- `autoscaling.enabled`: enable/disable HPA.

charts/ocr-service/templates/_helpers.tpl

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,3 +58,54 @@ Create the name of the service account to use.
5858
{{- default "default" .Values.serviceAccount.name }}
5959
{{- end }}
6060
{{- end }}
61+
62+
{{/*
63+
Parse KEY=VALUE lines from env files passed through `.Values.envFiles.contents`.
64+
Supports comments, blank lines, and optional `export ` prefix.
65+
*/}}
66+
{{- define "ocr-service.envFromFilesMap" -}}
67+
{{- $env := dict -}}
68+
{{- if and .Values.envFiles.enabled .Values.envFiles.contents }}
69+
{{- range $content := .Values.envFiles.contents }}
70+
{{- range $line := splitList "\n" (toString $content) }}
71+
{{- $trimmed := trim $line -}}
72+
{{- if and $trimmed (not (hasPrefix "#" $trimmed)) (contains "=" $trimmed) }}
73+
{{- $parts := regexSplit "=" $trimmed 2 -}}
74+
{{- if eq (len $parts) 2 }}
75+
{{- $rawKey := trim (index $parts 0) -}}
76+
{{- $key := $rawKey -}}
77+
{{- if hasPrefix "export " $rawKey }}
78+
{{- $key = trim (trimPrefix "export " $rawKey) -}}
79+
{{- end }}
80+
{{- if regexMatch "^[A-Za-z_][A-Za-z0-9_]*$" $key }}
81+
{{- $value := trim (index $parts 1) -}}
82+
{{- if and (hasPrefix "\"" $value) (hasSuffix "\"" $value) }}
83+
{{- $value = trimSuffix "\"" (trimPrefix "\"" $value) -}}
84+
{{- else if and (hasPrefix "'" $value) (hasSuffix "'" $value) }}
85+
{{- $value = trimSuffix "'" (trimPrefix "'" $value) -}}
86+
{{- end }}
87+
{{- $_ := set $env $key $value -}}
88+
{{- end }}
89+
{{- end }}
90+
{{- end }}
91+
{{- end }}
92+
{{- end }}
93+
{{- end }}
94+
{{- toYaml $env -}}
95+
{{- end }}
96+
97+
{{/*
98+
Merge chart env values with optional parsed env-file values.
99+
When env files are enabled, env-file values override `.Values.env`.
100+
*/}}
101+
{{- define "ocr-service.mergedEnvMap" -}}
102+
{{- $baseEnv := .Values.env | default dict -}}
103+
{{- $envFromFiles := include "ocr-service.envFromFilesMap" . | fromYaml | default dict -}}
104+
{{- $merged := dict -}}
105+
{{- if .Values.envFiles.enabled }}
106+
{{- $merged = mergeOverwrite $merged $baseEnv $envFromFiles -}}
107+
{{- else }}
108+
{{- $merged = mergeOverwrite $merged $baseEnv -}}
109+
{{- end }}
110+
{{- toYaml $merged -}}
111+
{{- end }}

charts/ocr-service/templates/deployment.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
apiVersion: apps/v1
22
kind: Deployment
3+
{{- $mergedEnv := include "ocr-service.mergedEnvMap" . | fromYaml | default dict }}
34
metadata:
45
name: {{ include "ocr-service.fullname" . }}
56
labels:
@@ -42,7 +43,7 @@ spec:
4243
securityContext:
4344
{{- toYaml .Values.securityContext | nindent 12 }}
4445
env:
45-
{{- range $key, $value := .Values.env }}
46+
{{- range $key, $value := $mergedEnv }}
4647
- name: {{ $key }}
4748
value: {{ $value | quote }}
4849
{{- end }}

charts/ocr-service/values.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,18 @@ env:
106106
OCR_TMP_DIR: "/ocr_service/tmp"
107107
OMP_THREAD_LIMIT: "1"
108108

109+
# Dynamic env-file ingestion (for repo-local ./env/*.env files).
110+
# Example:
111+
# helm upgrade --install ocr-service ./charts/ocr-service \
112+
# --set envFiles.enabled=true \
113+
# --set-file envFiles.contents[0]=./env/ocr_service.env \
114+
# --set-file envFiles.contents[1]=./env/general.env
115+
#
116+
# Values from env files override keys in `env` when `enabled=true`.
117+
envFiles:
118+
enabled: false
119+
contents: []
120+
109121
extraEnv: []
110122
extraEnvFrom: []
111123

0 commit comments

Comments
 (0)