From a1bc8103d66a7487d64a1e9abd2e1cf4b57b5cac Mon Sep 17 00:00:00 2001 From: R-man3000 Date: Sun, 31 May 2026 21:50:53 +0300 Subject: add linkding app --- apps/linkding/templates/_helpers.tpl | 15 ++++++++++ apps/linkding/templates/configmap.yaml | 10 +++++++ apps/linkding/templates/deployment.yaml | 49 +++++++++++++++++++++++++++++++++ apps/linkding/templates/ingress.yaml | 22 +++++++++++++++ apps/linkding/templates/job.yaml | 47 +++++++++++++++++++++++++++++++ apps/linkding/templates/pvc.yaml | 16 +++++++++++ apps/linkding/templates/service.yaml | 15 ++++++++++ 7 files changed, 174 insertions(+) create mode 100644 apps/linkding/templates/_helpers.tpl create mode 100644 apps/linkding/templates/configmap.yaml create mode 100644 apps/linkding/templates/deployment.yaml create mode 100644 apps/linkding/templates/ingress.yaml create mode 100644 apps/linkding/templates/job.yaml create mode 100644 apps/linkding/templates/pvc.yaml create mode 100644 apps/linkding/templates/service.yaml (limited to 'apps/linkding/templates') diff --git a/apps/linkding/templates/_helpers.tpl b/apps/linkding/templates/_helpers.tpl new file mode 100644 index 0000000..2bf188c --- /dev/null +++ b/apps/linkding/templates/_helpers.tpl @@ -0,0 +1,15 @@ +{{- define "linkding.name" -}} +{{- .Chart.Name }} +{{- end }} + +{{- define "linkding.labels" -}} +helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }} +app.kubernetes.io/name: {{ include "linkding.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{- define "linkding.selectorLabels" -}} +app.kubernetes.io/name: {{ include "linkding.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} diff --git a/apps/linkding/templates/configmap.yaml b/apps/linkding/templates/configmap.yaml new file mode 100644 index 0000000..bf38029 --- /dev/null +++ b/apps/linkding/templates/configmap.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "linkding.name" . }}-bookmarks + namespace: {{ .Release.Namespace }} + labels: + {{- include "linkding.labels" . | nindent 4 }} +data: + bookmarks.html: | + {{- .Files.Get "bookmarks.html" | nindent 4 }} diff --git a/apps/linkding/templates/deployment.yaml b/apps/linkding/templates/deployment.yaml new file mode 100644 index 0000000..3db4ae4 --- /dev/null +++ b/apps/linkding/templates/deployment.yaml @@ -0,0 +1,49 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "linkding.name" . }} + namespace: {{ .Release.Namespace }} + labels: + {{- include "linkding.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.replicaCount }} + selector: + matchLabels: + {{- include "linkding.selectorLabels" . | nindent 6 }} + template: + metadata: + labels: + {{- include "linkding.selectorLabels" . | nindent 8 }} + spec: + containers: + - name: {{ .Chart.Name }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - containerPort: 9090 + protocol: TCP + env: + - name: LD_SUPERUSER_NAME + value: {{ .Values.env.superuserName | quote }} + - name: LD_SUPERUSER_PASSWORD + value: {{ .Values.env.superuserPassword | quote }} + volumeMounts: + - name: data + mountPath: /etc/linkding/data + - name: bookmarks + mountPath: /bookmarks + {{- with .Values.resources }} + resources: + {{- toYaml . | nindent 12 }} + {{- end }} + volumes: + - name: data + {{- if .Values.persistence.enabled }} + persistentVolumeClaim: + claimName: {{ include "linkding.name" . }}-pvc + {{- else }} + emptyDir: {} + {{- end }} + - name: bookmarks + configMap: + name: {{ include "linkding.name" . }}-bookmarks diff --git a/apps/linkding/templates/ingress.yaml b/apps/linkding/templates/ingress.yaml new file mode 100644 index 0000000..39f16ff --- /dev/null +++ b/apps/linkding/templates/ingress.yaml @@ -0,0 +1,22 @@ +{{- if .Values.ingress.enabled }} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ include "linkding.name" . }}-ingress + namespace: {{ .Release.Namespace }} + labels: + {{- include "linkding.labels" . | nindent 4 }} +spec: + ingressClassName: {{ .Values.ingress.className }} + rules: + - host: {{ .Values.ingress.host }} + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: {{ include "linkding.name" . }}-service + port: + number: {{ .Values.service.port }} +{{- end }} diff --git a/apps/linkding/templates/job.yaml b/apps/linkding/templates/job.yaml new file mode 100644 index 0000000..8b0705b --- /dev/null +++ b/apps/linkding/templates/job.yaml @@ -0,0 +1,47 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: {{ include "linkding.name" . }}-import + namespace: {{ .Release.Namespace }} + labels: + {{- include "linkding.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": post-install + "helm.sh/hook-weight": "1" + "helm.sh/hook-delete-policy": hook-succeeded,hook-failed +spec: + template: + spec: + restartPolicy: OnFailure + containers: + - name: import + image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + command: + - /bin/sh + - -c + - | + echo "Waiting for linkding to be ready..." + until wget -qO- "http://{{ include "linkding.name" . }}-service:{{ .Values.service.port }}/health" > /dev/null 2>&1; do + echo "Not ready, retrying in 3s..." + sleep 3 + done + echo "Linkding is up, waiting 5s for full init..." + sleep 5 + echo "Importing bookmarks..." + python /etc/linkding/manage.py import_bookmarks \ + /bookmarks/bookmarks.html \ + --user {{ .Values.auth.adminUser | quote }} + echo "Done!" + volumeMounts: + - name: data + mountPath: /etc/linkding/data + - name: bookmarks + mountPath: /bookmarks + volumes: + - name: data + persistentVolumeClaim: + claimName: {{ include "linkding.name" . }}-pvc + - name: bookmarks + configMap: + name: {{ include "linkding.name" . }}-bookmarks diff --git a/apps/linkding/templates/pvc.yaml b/apps/linkding/templates/pvc.yaml new file mode 100644 index 0000000..141f51c --- /dev/null +++ b/apps/linkding/templates/pvc.yaml @@ -0,0 +1,16 @@ +{{- if .Values.persistence.enabled }} +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: {{ include "linkding.name" . }}-pvc + namespace: {{ .Release.Namespace }} + labels: + {{- include "linkding.labels" . | nindent 4 }} +spec: + accessModes: + - ReadWriteOnce + storageClassName: {{ .Values.persistence.storageClass }} + resources: + requests: + storage: {{ .Values.persistence.size }} +{{- end }} diff --git a/apps/linkding/templates/service.yaml b/apps/linkding/templates/service.yaml new file mode 100644 index 0000000..1475b17 --- /dev/null +++ b/apps/linkding/templates/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "linkding.name" . }}-service + namespace: {{ .Release.Namespace }} + labels: + {{- include "linkding.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + selector: + {{- include "linkding.selectorLabels" . | nindent 4 }} + ports: + - protocol: TCP + port: {{ .Values.service.port }} + targetPort: 9090 -- cgit v1.2.3