Adding the helm chart

This commit is contained in:
Ketan Patel committed 2026-04-16 21:10:03 -04:00
1 parent 49d96722cb
commit 08438b2252
10 files changed
+279

No files matched your search

+20
View File
@@ -0,0 +1,20 @@
{{- define "app.labels" -}}
app.kubernetes.io/name: {{ .Chart.Name }}
app.kubernetes.io/part-of: {{ .Chart.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{- define "app.selectorLabels" -}}
app.kubernetes.io/name: {{ .Chart.Name }}
{{- end -}}
{{- define "redis.labels" -}}
app.kubernetes.io/name: redis
app.kubernetes.io/part-of: {{ .Chart.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{- define "redis.selectorLabels" -}}
app.kubernetes.io/name: redis
{{- end -}}
+11
View File
@@ -0,0 +1,11 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ .Chart.Name }}-config
namespace: {{ .Values.namespace }}
labels:
{{- include "app.labels" . | nindent 4 }}
data:
{{- range $key, $val := .Values.config }}
{{ $key }}: {{ $val | quote }}
{{- end }}
+65
View File
@@ -0,0 +1,65 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Chart.Name }}
namespace: {{ .Values.namespace }}
labels:
{{- include "app.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.app.replicas }}
strategy:
type: RollingUpdate
rollingUpdate:
maxUnavailable: 0
maxSurge: 1
selector:
matchLabels:
{{- include "app.selectorLabels" . | nindent 6 }}
template:
metadata:
labels:
{{- include "app.selectorLabels" . | nindent 8 }}
spec:
securityContext:
runAsUser: {{ .Values.app.securityContext.runAsUser }}
runAsGroup: {{ .Values.app.securityContext.runAsGroup }}
runAsNonRoot: true
fsGroup: {{ .Values.app.securityContext.runAsGroup }}
containers:
- name: web
image: {{ .Values.app.image }}
ports:
- containerPort: {{ .Values.app.port }}
protocol: TCP
envFrom:
- configMapRef:
name: {{ .Chart.Name }}-config
- secretRef:
name: {{ .Chart.Name }}-secret
livenessProbe:
httpGet:
path: {{ .Values.app.probes.liveness.path }}
port: {{ .Values.app.port }}
initialDelaySeconds: {{ .Values.app.probes.liveness.initialDelaySeconds }}
periodSeconds: {{ .Values.app.probes.liveness.periodSeconds }}
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
httpGet:
path: {{ .Values.app.probes.readiness.path }}
port: {{ .Values.app.port }}
initialDelaySeconds: {{ .Values.app.probes.readiness.initialDelaySeconds }}
periodSeconds: {{ .Values.app.probes.readiness.periodSeconds }}
timeoutSeconds: 5
failureThreshold: 3
resources:
{{- toYaml .Values.app.resources | nindent 12 }}
securityContext:
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
volumeMounts:
- name: tmp
mountPath: /tmp
volumes:
- name: tmp
emptyDir: {}
+18
View File
@@ -0,0 +1,18 @@
{{- if .Values.redis.enabled }}
apiVersion: v1
kind: Service
metadata:
name: redis
namespace: {{ .Values.namespace }}
labels:
{{- include "redis.labels" . | nindent 4 }}
spec:
type: ClusterIP
selector:
{{- include "redis.selectorLabels" . | nindent 4 }}
ports:
- name: redis
protocol: TCP
port: {{ .Values.redis.port }}
targetPort: {{ .Values.redis.port }}
{{- end }}
+68
View File
@@ -0,0 +1,68 @@
{{- if .Values.redis.enabled }}
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: redis
namespace: {{ .Values.namespace }}
labels:
{{- include "redis.labels" . | nindent 4 }}
spec:
serviceName: redis
replicas: 1
selector:
matchLabels:
{{- include "redis.selectorLabels" . | nindent 6 }}
template:
metadata:
labels:
{{- include "redis.selectorLabels" . | nindent 8 }}
spec:
securityContext:
runAsUser: {{ .Values.redis.securityContext.runAsUser }}
runAsGroup: {{ .Values.redis.securityContext.runAsGroup }}
fsGroup: {{ .Values.redis.securityContext.runAsGroup }}
containers:
- name: redis
image: {{ .Values.redis.image }}
command:
- redis-server
- --appendonly
- "yes"
- --appendfsync
- everysec
ports:
- containerPort: {{ .Values.redis.port }}
protocol: TCP
livenessProbe:
exec:
command:
- redis-cli
- ping
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 5
readinessProbe:
exec:
command:
- redis-cli
- ping
initialDelaySeconds: 5
periodSeconds: 5
timeoutSeconds: 3
failureThreshold: 3
resources:
{{- toYaml .Values.redis.resources | nindent 12 }}
volumeMounts:
- name: redis-data
mountPath: /data
volumeClaimTemplates:
- metadata:
name: redis-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.redis.storage }}
{{- end }}
+12
View File
@@ -0,0 +1,12 @@
apiVersion: v1
kind: Secret
metadata:
name: {{ .Chart.Name }}-secret
namespace: {{ .Values.namespace }}
labels:
{{- include "app.labels" . | nindent 4 }}
type: Opaque
stringData:
{{- range $key, $val := .Values.secrets }}
{{ $key }}: {{ $val | quote }}
{{- end }}
+16
View File
@@ -0,0 +1,16 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
namespace: {{ .Values.namespace }}
labels:
{{- include "app.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
selector:
{{- include "app.selectorLabels" . | nindent 4 }}
ports:
- name: http
protocol: TCP
port: {{ .Values.service.port }}
targetPort: {{ .Values.app.port }}