Skip to content

Commit d9c6104

Browse files
jarvis9443Copilot
andcommitted
feat: add file-server helm chart templates
Add optional file-server component to the API7 helm chart. The file-server is a standalone binary that serves file downloads without authentication, sharing the same database as dashboard and dp-manager. Disabled by default (file_server.enabled: false). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 59db2e3 commit d9c6104

5 files changed

Lines changed: 221 additions & 0 deletions

File tree

charts/api7/README.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,33 @@ A Helm chart for Kubernetes
221221
| dp_manager_service.tlsNodePort | int | `nil` | The nodePort for HTTPS service, only used if dp_manager_service.type is NodePort. If not set, a random port will be assigned by Kubernetes. |
222222
| dp_manager_service.tlsPort | int | `7943` | |
223223
| dp_manager_service.type | string | `"ClusterIP"` | |
224+
| file_server.enabled | bool | `false` | |
225+
| file_server.extraEnvVars | list | `[]` | |
226+
| file_server.extraVolumeMounts | list | `[]` | |
227+
| file_server.extraVolumes | list | `[]` | |
228+
| file_server.image.pullPolicy | string | `"Always"` | |
229+
| file_server.image.repository | string | `"api7/api7-ee-file-server"` | |
230+
| file_server.image.tag | string | `"v3.9.7"` | |
231+
| file_server.livenessProbe.failureThreshold | int | `3` | |
232+
| file_server.livenessProbe.initialDelaySeconds | int | `10` | |
233+
| file_server.livenessProbe.periodSeconds | int | `3` | |
234+
| file_server.podLabels | object | `{}` | |
235+
| file_server.readinessProbe.failureThreshold | int | `3` | |
236+
| file_server.readinessProbe.initialDelaySeconds | int | `5` | |
237+
| file_server.readinessProbe.periodSeconds | int | `3` | |
238+
| file_server.replicaCount | int | `1` | |
239+
| file_server.topologySpreadConstraints | list | `[]` | Topology Spread Constraints for pod assignment https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ The value is evaluated as a template |
240+
| file_server_configuration.database.dsn | string | `"postgres://api7ee:changeme@api7-postgresql:5432/api7ee"` | |
241+
| file_server_configuration.database.max_idle_time | string | `"30s"` | |
242+
| file_server_configuration.database.max_open_conns | int | `10` | |
243+
| file_server_configuration.database.timeout | string | `"5s"` | |
244+
| file_server_configuration.log.level | string | `"warn"` | |
245+
| file_server_configuration.log.output | string | `"stderr"` | |
246+
| file_server_configuration.server.listen.host | string | `"0.0.0.0"` | |
247+
| file_server_configuration.server.listen.port | int | `8080` | |
248+
| file_server_service.annotations | object | `{}` | |
249+
| file_server_service.port | int | `8080` | |
250+
| file_server_service.type | string | `"ClusterIP"` | |
224251
| fullnameOverride | string | `""` | |
225252
| global.storageClass | string | `""` | |
226253
| imagePullSecret | string | `""` | |
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{{- if .Values.file_server.enabled }}
2+
kind: ConfigMap
3+
apiVersion: v1
4+
metadata:
5+
name: {{ include "api7ee3.fullname" . }}-file-server-config
6+
namespace: {{ .Release.Namespace | quote }}
7+
data:
8+
config.yaml: |
9+
{{- toYaml .Values.file_server_configuration | nindent 4 }}
10+
{{- end }}
Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
{{- if .Values.file_server.enabled }}
2+
apiVersion: apps/v1
3+
kind: Deployment
4+
metadata:
5+
name: {{ include "api7ee3.fullname" . }}-file-server
6+
namespace: {{ .Release.Namespace | quote }}
7+
labels:
8+
{{- include "api7ee3.labels" . | nindent 4 }}
9+
spec:
10+
replicas: {{ .Values.file_server.replicaCount }}
11+
selector:
12+
matchLabels:
13+
{{- include "api7ee3.selectorLabels" . | nindent 6 }}
14+
app.kubernetes.io/component: file-server
15+
template:
16+
metadata:
17+
annotations:
18+
checksum/config: {{ include (print $.Template.BasePath "/file-server-configmap.yaml") . | sha256sum }}
19+
{{- with .Values.podAnnotations }}
20+
{{- toYaml . | nindent 8 }}
21+
{{- end }}
22+
labels:
23+
{{- include "api7ee3.selectorLabels" . | nindent 8 }}
24+
app.kubernetes.io/component: file-server
25+
{{- if .Values.file_server.podLabels }}
26+
{{- range $key, $value := $.Values.file_server.podLabels }}
27+
{{ $key }}: {{ $value | quote }}
28+
{{- end }}
29+
{{- end }}
30+
spec:
31+
{{- if .Values.imagePullSecret }}
32+
imagePullSecrets:
33+
- name: {{ .Values.imagePullSecret }}
34+
{{- end }}
35+
serviceAccountName: {{ include "api7ee3.serviceAccountName" . }}
36+
securityContext:
37+
{{- toYaml .Values.podSecurityContext | nindent 8 }}
38+
volumes:
39+
- name: config
40+
configMap:
41+
name: {{ include "api7ee3.fullname" . }}-file-server-config
42+
{{- if .Values.file_server.extraVolumes }}
43+
{{- include "api7ee3.tplvalues.render" (dict "value" .Values.file_server.extraVolumes "context" $) | nindent 8 }}
44+
{{- end }}
45+
containers:
46+
- name: file-server
47+
securityContext:
48+
{{- toYaml .Values.securityContext | nindent 12 }}
49+
image: "{{ .Values.file_server.image.repository }}:{{ .Values.file_server.image.tag | default .Chart.AppVersion }}"
50+
imagePullPolicy: {{ .Values.file_server.image.pullPolicy }}
51+
command:
52+
- /usr/local/api7/api7-ee-file-server
53+
- -c
54+
- /api7-ee/config.yaml
55+
ports:
56+
- name: http
57+
containerPort: {{ .Values.file_server_configuration.server.listen.port }}
58+
protocol: TCP
59+
livenessProbe:
60+
httpGet:
61+
path: /healthz
62+
port: http
63+
initialDelaySeconds: {{ .Values.file_server.livenessProbe.initialDelaySeconds }}
64+
periodSeconds: {{ .Values.file_server.livenessProbe.periodSeconds }}
65+
failureThreshold: {{ .Values.file_server.livenessProbe.failureThreshold }}
66+
readinessProbe:
67+
httpGet:
68+
path: /healthz
69+
port: http
70+
initialDelaySeconds: {{ .Values.file_server.readinessProbe.initialDelaySeconds }}
71+
periodSeconds: {{ .Values.file_server.readinessProbe.periodSeconds }}
72+
failureThreshold: {{ .Values.file_server.readinessProbe.failureThreshold }}
73+
volumeMounts:
74+
- name: config
75+
mountPath: /api7-ee
76+
{{- if .Values.file_server.extraVolumeMounts }}
77+
{{- include "api7ee3.tplvalues.render" (dict "value" .Values.file_server.extraVolumeMounts "context" $) | nindent 12 }}
78+
{{- end }}
79+
resources:
80+
{{- if .Values.file_server.resources }}
81+
{{- toYaml .Values.file_server.resources | nindent 12 }}
82+
{{- else }}
83+
{{- toYaml .Values.resources | nindent 12 }}
84+
{{- end }}
85+
env:
86+
{{- if .Values.file_server.extraEnvVars }}
87+
{{- include "api7ee3.tplvalues.render" (dict "value" .Values.file_server.extraEnvVars "context" $) | nindent 12 }}
88+
{{- end }}
89+
90+
{{- with .Values.nodeSelector }}
91+
nodeSelector:
92+
{{- toYaml . | nindent 8 }}
93+
{{- end }}
94+
{{- with .Values.affinity }}
95+
affinity:
96+
{{- toYaml . | nindent 8 }}
97+
{{- end }}
98+
{{- with .Values.tolerations }}
99+
tolerations:
100+
{{- toYaml . | nindent 8 }}
101+
{{- end }}
102+
{{- with or .Values.file_server.topologySpreadConstraints .Values.topologySpreadConstraints }}
103+
topologySpreadConstraints:
104+
{{- tpl (. | toYaml) $ | nindent 8 }}
105+
{{- end }}
106+
{{- end }}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{{- if .Values.file_server.enabled }}
2+
apiVersion: v1
3+
kind: Service
4+
metadata:
5+
name: {{ include "api7ee3.fullname" . }}-file-server
6+
namespace: {{ .Release.Namespace | quote }}
7+
labels:
8+
{{- include "api7ee3.labels" . | nindent 4 }}
9+
{{- with .Values.file_server_service.annotations }}
10+
annotations:
11+
{{- toYaml . | nindent 4 }}
12+
{{- end }}
13+
spec:
14+
type: {{ .Values.file_server_service.type }}
15+
ports:
16+
- port: {{ .Values.file_server_service.port }}
17+
targetPort: http
18+
protocol: TCP
19+
name: http
20+
selector:
21+
{{- include "api7ee3.selectorLabels" . | nindent 4 }}
22+
app.kubernetes.io/component: file-server
23+
{{- end }}

charts/api7/values.yaml

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,42 @@ developer_portal:
111111
periodSeconds: 3
112112
failureThreshold: 3
113113

114+
file_server:
115+
enabled: false
116+
replicaCount: 1
117+
image:
118+
repository: api7/api7-ee-file-server
119+
pullPolicy: Always
120+
tag: "v3.9.7"
121+
# Resources of the deployment.
122+
# It has a higher priority than the common resources configuration:
123+
# when this field is configured, it is used first in the deployment,
124+
# otherwise the common resources configuration is used.
125+
# resources:
126+
# limits:
127+
# cpu: 100m
128+
# memory: 128Mi
129+
# requests:
130+
# cpu: 100m
131+
# memory: 128Mi
132+
133+
extraEnvVars: []
134+
extraVolumes: []
135+
extraVolumeMounts: []
136+
podLabels: {}
137+
# -- Topology Spread Constraints for pod assignment
138+
# https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
139+
# The value is evaluated as a template
140+
topologySpreadConstraints: []
141+
livenessProbe:
142+
initialDelaySeconds: 10
143+
periodSeconds: 3
144+
failureThreshold: 3
145+
readinessProbe:
146+
initialDelaySeconds: 5
147+
periodSeconds: 3
148+
failureThreshold: 3
149+
114150
imagePullSecret: ""
115151
nameOverride: ""
116152
fullnameOverride: ""
@@ -223,6 +259,11 @@ developer_portal_service:
223259
# hosts:
224260
# - developer-portal.local
225261

262+
file_server_service:
263+
type: ClusterIP
264+
annotations: {}
265+
port: 8080
266+
226267
resources: {}
227268
# We usually recommend not to specify default resources and to leave this as a conscious
228269
# choice for the user. This also increases chances charts run on environments with little
@@ -515,3 +556,17 @@ developer_portal_configuration:
515556
max_open_conns: 30
516557
max_idle_time: 30s
517558
timeout: 5s
559+
560+
file_server_configuration:
561+
server:
562+
listen:
563+
host: "0.0.0.0"
564+
port: 8080
565+
log:
566+
level: warn
567+
output: stderr
568+
database:
569+
dsn: "postgres://api7ee:changeme@api7-postgresql:5432/api7ee"
570+
max_open_conns: 10
571+
max_idle_time: 30s
572+
timeout: 5s

0 commit comments

Comments
 (0)