Files
HelmChartSammlung/charts/cailbre-web/templates/deployment.yaml
Marko Oldenburg 9e35b1cfad Add Helm chart for calibre-web deployment
This commit introduces a new Helm chart for deploying calibre-web
on Kubernetes. The chart includes essential templates for
deployment, service, ingress, and persistent volume claims, along
with default values configured in a `values.yaml` file.

The addition of the Helm chart enables easier deployment and
management of calibre-web, allowing users to customize settings
like the replica count, image settings, service type, and storage
options through the `values.yaml`. A GitHub Actions workflow
(`build-chart-calibre-web.yml`) is also included to automate the
packaging and uploading of the Helm chart upon updates to the
main branch.

The structure and organization of the templates adhere to Helm
best practices, ensuring compatibility and ease of use. There are no
breaking changes associated with this addition, but users should
review the `values.yaml` for configurable options.
2025-12-09 08:42:24 +01:00

92 lines
2.7 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "calibre-web.fullname" . }}
labels:
{{- include "calibre-web.labels" . | nindent 4 }}
{{- with .Values.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "calibre-web.selectorLabels" . | nindent 6 }}
template:
metadata:
labels:
{{- include "calibre-web.selectorLabels" . | nindent 8 }}
{{- with .Values.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "calibre-web.serviceAccountName" . }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Chart.AppVersion }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
{{ toYaml .Values.env | nindent 12 }}
ports:
- name: http
containerPort: 8083
protocol: TCP
startupProbe:
httpGet:
path: /
port: http
failureThreshold: 30
periodSeconds: 5
livenessProbe:
httpGet:
path: /
port: http
readinessProbe:
httpGet:
path: /
port: http
volumeMounts:
- name: data
mountPath: /books
- name: config
mountPath: /config
resources:
{{- toYaml .Values.resources | nindent 12 }}
volumes:
- name: data
persistentVolumeClaim:
{{- if .Values.persistence.data.claimName }}
claimName: "{{ .Values.persistence.data.claimName }}"
{{- else }}
claimName: "{{ template "calibre-web.fullname" . }}-data"
{{- end }}
- name: config
persistentVolumeClaim:
{{- if .Values.persistence.config.claimName }}
claimName: "{{ .Values.persistence.config.claimName }}"
{{- else }}
claimName: "{{ template "calibre-web.fullname" . }}-config"
{{- end }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}