Compare commits
121 Commits
cdcfea017d
...
main
Author | SHA1 | Date | |
---|---|---|---|
a5a977cb5f | |||
62c8e8b9c1 | |||
2527c8668c | |||
c2937e2437 | |||
6d714483ff | |||
9c999158ec | |||
6d0764947b | |||
199ceeddf8 | |||
f9df49ddd1 | |||
601bde7463 | |||
a9f09a3a29 | |||
ef155f7733 | |||
a120d34f40 | |||
1672020396 | |||
0eee0e7455 | |||
a5fc085ab9 | |||
ba732eb734 | |||
c18b5c7514 | |||
f3fbaf942e | |||
8b3e5d2cc7 | |||
1d7c89f32c | |||
a52dc5a34b | |||
f034f58c5f | |||
179f4f022d | |||
66e03103a9 | |||
7156f97617 | |||
4fa27126ef | |||
d4351617e2 | |||
319a404d87 | |||
a73b48c7d2 | |||
39c026abd8 | |||
4e16ddafa2 | |||
88a0c10498 | |||
17c340fcef | |||
3cec5cb5c1 | |||
f33fabf492 | |||
e67ba5537f | |||
e2d449051e | |||
9748f7668d | |||
08be643c91 | |||
c822ec79b1 | |||
7e06f43c5e | |||
b300e85847 | |||
b46d32a9df | |||
afdc089b01 | |||
8f0929119b | |||
786a5f3b97 | |||
375e401024 | |||
ff87aaa3a6 | |||
e968d4fe66 | |||
4bbd8a8fc9 | |||
1887a59226 | |||
9d30557cdc | |||
64c4afda35 | |||
531a2d9f97 | |||
e3d520d878 | |||
de579f43c3 | |||
56d539157f | |||
19658e7deb | |||
99ad6bd7cc | |||
9a992b12ea | |||
ac922fe4a0 | |||
886cf72eb3 | |||
2a262ba943 | |||
dc5c502e13 | |||
5498850d01 | |||
6714632232 | |||
03095b2f5c | |||
7b39281caf | |||
d46d1c0fbb | |||
82808a0df3 | |||
6f2c3cf6a1 | |||
38fc2b483a | |||
50f40a9729 | |||
2b2605ce0e | |||
021b57c878 | |||
bbe808fc26 | |||
d1c417eb08 | |||
6c2ba47264 | |||
f32622ead4 | |||
275a4eb6d8 | |||
e3d6c809a7 | |||
814028266b | |||
185e3515a1 | |||
482a0743a7 | |||
80c697e821 | |||
dbc98eef5d | |||
47609ebe39 | |||
cceb234055 | |||
a86280ba2c | |||
04c7983773 | |||
d70fc19889 | |||
69f6db4b7a | |||
132da10297 | |||
834fd2b584 | |||
aa76e07c64 | |||
1b1bd7974e | |||
277f2d5b00 | |||
40c947139c | |||
a1cf3b5ef9 | |||
b2daa948f9 | |||
163f19382f | |||
7b6aea1222 | |||
2a947a8e8d | |||
44d2f26075 | |||
b199b53b84 | |||
0919f07efd | |||
df63414f6f | |||
29aebbd14d | |||
161237d5ff | |||
9c1ddb8a8b | |||
61da0d50d0 | |||
5489c21f04 | |||
da4b1d9a42 | |||
a2c3a985bd | |||
4a8694922d | |||
d143a941f4 | |||
a104563b97 | |||
76b1b975d4 | |||
1a65dec4d5 | |||
d6ceee2d48 |
@ -28,8 +28,9 @@ jobs:
|
|||||||
|
|
||||||
- name: Setup Helm
|
- name: Setup Helm
|
||||||
run: |
|
run: |
|
||||||
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
|
#curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
|
||||||
helm version
|
curl -kSso /usr/local/bin/helm https://debmirror.cooltux.net/helm-v3.18.3 && chmod +x /usr/local/bin/helm
|
||||||
|
helm version
|
||||||
|
|
||||||
- name: Package Helm Chart
|
- name: Package Helm Chart
|
||||||
run: |
|
run: |
|
||||||
|
@ -28,8 +28,9 @@ jobs:
|
|||||||
|
|
||||||
- name: Setup Helm
|
- name: Setup Helm
|
||||||
run: |
|
run: |
|
||||||
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
|
#curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
|
||||||
helm version
|
curl -kSso /usr/local/bin/helm https://debmirror.cooltux.net/helm-v3.18.3 && chmod +x /usr/local/bin/helm
|
||||||
|
helm version
|
||||||
|
|
||||||
- name: Package Helm Chart
|
- name: Package Helm Chart
|
||||||
run: |
|
run: |
|
||||||
|
43
.gitea/workflows/build-chart-excalidraw.yml
Normal file
43
.gitea/workflows/build-chart-excalidraw.yml
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
name: "Build Helm Chart"
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- "charts/excalidraw/Chart.yaml"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
helm-package:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
APP: charts/excalidraw
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set Helm Chart App Name and Version
|
||||||
|
id: get_version
|
||||||
|
run: |
|
||||||
|
APP_NAME=$(grep -oP '(?<=^name: ).*' ${{ env.APP }}/Chart.yaml)
|
||||||
|
echo "Helm Chart App Name: $APP_NAME"
|
||||||
|
echo "::set-output name=app::$APP_NAME"
|
||||||
|
|
||||||
|
CHART_VERSION=$(grep -oP '(?<=^version: ).*' ${{ env.APP }}/Chart.yaml)
|
||||||
|
echo "Helm Chart version: $CHART_VERSION"
|
||||||
|
echo "::set-output name=tag::$CHART_VERSION"
|
||||||
|
|
||||||
|
- name: Setup Helm
|
||||||
|
run: |
|
||||||
|
#curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
|
||||||
|
curl -kSso /usr/local/bin/helm https://debmirror.cooltux.net/helm-v3.18.3 && chmod +x /usr/local/bin/helm
|
||||||
|
helm version
|
||||||
|
|
||||||
|
- name: Package Helm Chart
|
||||||
|
run: |
|
||||||
|
helm dependency update ${{ env.APP }}
|
||||||
|
helm lint ${{ env.APP }}
|
||||||
|
helm package ${{ env.APP }}
|
||||||
|
|
||||||
|
- name: Upload Helm Package to repo
|
||||||
|
run: |
|
||||||
|
curl --user ${{ secrets.USER }}:${{ secrets.TOKEN }} -X POST --upload-file ./${{ steps.get_version.outputs.app }}-${{ steps.get_version.outputs.tag }}.tgz ${{ vars.HELMREGISTRY }}/api/packages/${{ vars.OWNER }}/helm/api/charts
|
43
.gitea/workflows/build-chart-paperless-ai.yml
Normal file
43
.gitea/workflows/build-chart-paperless-ai.yml
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
name: "Build Helm Chart"
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- "charts/paperless-ai/Chart.yaml"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
helm-package:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
APP: charts/paperless-ai
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: Set Helm Chart App Name and Version
|
||||||
|
id: get_version
|
||||||
|
run: |
|
||||||
|
APP_NAME=$(grep -oP '(?<=^name: ).*' ${{ env.APP }}/Chart.yaml)
|
||||||
|
echo "Helm Chart App Name: $APP_NAME"
|
||||||
|
echo "::set-output name=app::$APP_NAME"
|
||||||
|
|
||||||
|
CHART_VERSION=$(grep -oP '(?<=^version: ).*' ${{ env.APP }}/Chart.yaml)
|
||||||
|
echo "Helm Chart version: $CHART_VERSION"
|
||||||
|
echo "::set-output name=tag::$CHART_VERSION"
|
||||||
|
|
||||||
|
- name: Setup Helm
|
||||||
|
run: |
|
||||||
|
#curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
|
||||||
|
curl -kSso /usr/local/bin/helm https://debmirror.cooltux.net/helm-v3.18.3 && chmod +x /usr/local/bin/helm
|
||||||
|
helm version
|
||||||
|
|
||||||
|
- name: Package Helm Chart
|
||||||
|
run: |
|
||||||
|
helm dependency update ${{ env.APP }}
|
||||||
|
helm lint ${{ env.APP }}
|
||||||
|
helm package ${{ env.APP }}
|
||||||
|
|
||||||
|
- name: Upload Helm Package to repo
|
||||||
|
run: |
|
||||||
|
curl --user ${{ secrets.USER }}:${{ secrets.TOKEN }} -X POST --upload-file ./${{ steps.get_version.outputs.app }}-${{ steps.get_version.outputs.tag }}.tgz ${{ vars.HELMREGISTRY }}/api/packages/${{ vars.OWNER }}/helm/api/charts
|
@ -2,8 +2,8 @@ apiVersion: v2
|
|||||||
name: audiobookshelf
|
name: audiobookshelf
|
||||||
description: A Helm chart for Audiobookshelf
|
description: A Helm chart for Audiobookshelf
|
||||||
type: application
|
type: application
|
||||||
version: 1.7.0
|
version: 1.9.2
|
||||||
appVersion: "2.20.0"
|
appVersion: "2.25.1"
|
||||||
home: https://git.cooltux.net/marko/HelmChartSammlung/src/branch/main/charts/audiobookshelf
|
home: https://git.cooltux.net/marko/HelmChartSammlung/src/branch/main/charts/audiobookshelf
|
||||||
keywords:
|
keywords:
|
||||||
- audiobookshelf
|
- audiobookshelf
|
||||||
|
@ -115,31 +115,25 @@ resources:
|
|||||||
# choice for the user. This also increases chances charts run on environments with little
|
# choice for the user. This also increases chances charts run on environments with little
|
||||||
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||||
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||||
# limits:
|
|
||||||
# cpu: 100m
|
|
||||||
# memory: 128Mi
|
|
||||||
# requests:
|
|
||||||
# cpu: 100m
|
|
||||||
# memory: 128Mi
|
|
||||||
limits:
|
limits:
|
||||||
cpu: 500m
|
cpu: 100m
|
||||||
memory: 512Mi
|
memory: 128Mi
|
||||||
requests:
|
requests:
|
||||||
cpu: 100m
|
cpu: 100m
|
||||||
memory: 192Mi
|
memory: 128Mi
|
||||||
|
|
||||||
livenessProbe:
|
livenessProbe:
|
||||||
httpGet:
|
tcpSocket:
|
||||||
path: /
|
|
||||||
port: http
|
port: http
|
||||||
initialDelaySeconds: 15
|
initialDelaySeconds: 10
|
||||||
timeoutSeconds: 10
|
periodSeconds: 4
|
||||||
|
failureThreshold: 8
|
||||||
readinessProbe:
|
readinessProbe:
|
||||||
httpGet:
|
tcpSocket:
|
||||||
path: /
|
|
||||||
port: http
|
port: http
|
||||||
initialDelaySeconds: 15
|
initialDelaySeconds: 10
|
||||||
timeoutSeconds: 1
|
periodSeconds: 3
|
||||||
|
failureThreshold: 3
|
||||||
|
|
||||||
# Additional volumes on the output Deployment definition.
|
# Additional volumes on the output Deployment definition.
|
||||||
volumes: []
|
volumes: []
|
||||||
|
@ -6,11 +6,11 @@ annotations:
|
|||||||
licenses: Apache-2.0
|
licenses: Apache-2.0
|
||||||
images: |
|
images: |
|
||||||
- name: apache-exporter
|
- name: apache-exporter
|
||||||
image: docker.io/bitnami/apache-exporter:1.0.9-debian-12-r6
|
image: docker.io/bitnami/apache-exporter:1.0.10-debian-12-r5
|
||||||
- name: dokuwiki
|
- name: dokuwiki
|
||||||
image: git.cooltux.net/marko/docker-dokuwiki-debian12:20241217.1.0-debian-12-r15
|
image: git.cooltux.net/marko/docker-dokuwiki-debian12:20250516-debian-12
|
||||||
- name: os-shell
|
- name: os-shell
|
||||||
image: docker.io/bitnami/os-shell:12-debian-12-r34
|
image: docker.io/bitnami/os-shell:12-debian-12-r43
|
||||||
apiVersion: v2
|
apiVersion: v2
|
||||||
dependencies:
|
dependencies:
|
||||||
- name: common
|
- name: common
|
||||||
@ -18,20 +18,19 @@ dependencies:
|
|||||||
tags:
|
tags:
|
||||||
- bitnami-common
|
- bitnami-common
|
||||||
version: 2.x.x
|
version: 2.x.x
|
||||||
deprecated: false
|
|
||||||
description: DokuWiki is a standards-compliant wiki optimized for creating documentation. Designed to be simple to use for small organizations, it stores all data in plain text files so no database is required.
|
description: DokuWiki is a standards-compliant wiki optimized for creating documentation. Designed to be simple to use for small organizations, it stores all data in plain text files so no database is required.
|
||||||
home: https://bitnami.com
|
home: https://bitnami.com
|
||||||
icon: https://bitnami.com/assets/stacks/dokuwiki/img/dokuwiki-stack-220x234.png
|
icon: https://bitnami.com/assets/stacks/dokuwiki/img/dokuwiki-stack-220x234.png
|
||||||
keywords:
|
keywords:
|
||||||
- dokuwiki
|
- dokuwiki
|
||||||
- wiki
|
- wiki
|
||||||
- http
|
- http
|
||||||
- web
|
- web
|
||||||
- application
|
- application
|
||||||
- php
|
- php
|
||||||
maintainers: []
|
maintainers: []
|
||||||
name: dokuwiki
|
name: dokuwiki
|
||||||
sources:
|
sources:
|
||||||
- https://git.cooltux.net/Interne-Entwicklungen/TuxNet-helm-charts.git/dokuwiki
|
- https://git.cooltux.net/Interne-Entwicklungen/TuxNet-helm-charts.git/dokuwiki
|
||||||
version: 1.0.17
|
version: 1.1.1
|
||||||
appVersion: "20241217.1.0-debian-12-r15"
|
appVersion: "20250530-debian-12"
|
||||||
|
@ -1,5 +1,3 @@
|
|||||||
This Helm chart is deprecated on our side and will not receive new updates.
|
|
||||||
|
|
||||||
CHART NAME: {{ .Chart.Name }}
|
CHART NAME: {{ .Chart.Name }}
|
||||||
CHART VERSION: {{ .Chart.Version }}
|
CHART VERSION: {{ .Chart.Version }}
|
||||||
APP VERSION: {{ .Chart.AppVersion }}
|
APP VERSION: {{ .Chart.AppVersion }}
|
||||||
|
@ -31,9 +31,7 @@ spec:
|
|||||||
{{- toYaml .Values.ingress.extraPaths | nindent 10 }}
|
{{- toYaml .Values.ingress.extraPaths | nindent 10 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
- path: {{ .Values.ingress.path }}
|
- path: {{ .Values.ingress.path }}
|
||||||
{{- if eq "true" (include "common.ingress.supportsPathType" .) }}
|
|
||||||
pathType: {{ .Values.ingress.pathType }}
|
pathType: {{ .Values.ingress.pathType }}
|
||||||
{{- end }}
|
|
||||||
backend: {{- include "common.ingress.backend" (dict "serviceName" (include "common.names.fullname" .) "servicePort" "http" "context" $) | nindent 14 }}
|
backend: {{- include "common.ingress.backend" (dict "serviceName" (include "common.names.fullname" .) "servicePort" "http" "context" $) | nindent 14 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- range .Values.ingress.extraHosts }}
|
{{- range .Values.ingress.extraHosts }}
|
||||||
@ -41,9 +39,7 @@ spec:
|
|||||||
http:
|
http:
|
||||||
paths:
|
paths:
|
||||||
- path: {{ default "/" .path }}
|
- path: {{ default "/" .path }}
|
||||||
{{- if eq "true" (include "common.ingress.supportsPathType" $) }}
|
|
||||||
pathType: {{ default "ImplementationSpecific" .pathType }}
|
pathType: {{ default "ImplementationSpecific" .pathType }}
|
||||||
{{- end }}
|
|
||||||
backend: {{- include "common.ingress.backend" (dict "serviceName" (include "common.names.fullname" $) "servicePort" "http" "context" $) | nindent 14 }}
|
backend: {{- include "common.ingress.backend" (dict "serviceName" (include "common.names.fullname" $) "servicePort" "http" "context" $) | nindent 14 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- if .Values.ingress.extraRules }}
|
{{- if .Values.ingress.extraRules }}
|
||||||
|
@ -70,7 +70,7 @@ extraDeploy: []
|
|||||||
image:
|
image:
|
||||||
registry: git.cooltux.net
|
registry: git.cooltux.net
|
||||||
repository: marko/docker-dokuwiki-debian12
|
repository: marko/docker-dokuwiki-debian12
|
||||||
tag: "20241217.1.0-debian-12-r15"
|
tag: "20250530-debian-12"
|
||||||
digest: ""
|
digest: ""
|
||||||
## Specify a imagePullPolicy
|
## Specify a imagePullPolicy
|
||||||
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
## Defaults to 'Always' if image tag is 'latest', else set to 'IfNotPresent'
|
||||||
|
23
charts/excalidraw/.helmignore
Normal file
23
charts/excalidraw/.helmignore
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# Patterns to ignore when building packages.
|
||||||
|
# This supports shell glob matching, relative path matching, and
|
||||||
|
# negation (prefixed with !). Only one pattern per line.
|
||||||
|
.DS_Store
|
||||||
|
# Common VCS dirs
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
.bzr/
|
||||||
|
.bzrignore
|
||||||
|
.hg/
|
||||||
|
.hgignore
|
||||||
|
.svn/
|
||||||
|
# Common backup files
|
||||||
|
*.swp
|
||||||
|
*.bak
|
||||||
|
*.tmp
|
||||||
|
*.orig
|
||||||
|
*~
|
||||||
|
# Various IDEs
|
||||||
|
.project
|
||||||
|
.idea/
|
||||||
|
*.tmproj
|
||||||
|
.vscode/
|
17
charts/excalidraw/Chart.yaml
Normal file
17
charts/excalidraw/Chart.yaml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
name: excalidraw
|
||||||
|
maintainers:
|
||||||
|
- name: kubitodev
|
||||||
|
url: https://kubito.dev
|
||||||
|
apiVersion: v2
|
||||||
|
appVersion: 0.18.0
|
||||||
|
version: 1.0.2
|
||||||
|
description: Kubito Excalidraw Helm Chart
|
||||||
|
home: https://github.com/kubitodev/helm/tree/main/charts/excalidraw
|
||||||
|
icon: https://kubito.dev/images/kubito.svg
|
||||||
|
keywords:
|
||||||
|
- kubernetes
|
||||||
|
- excalidraw
|
||||||
|
- diagrams
|
||||||
|
- design
|
||||||
|
sources:
|
||||||
|
- https://github.com/excalidraw/excalidraw
|
113
charts/excalidraw/README.md
Normal file
113
charts/excalidraw/README.md
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
# Excalidraw
|
||||||
|
|
||||||
|
Virtual whiteboard for sketching hand-drawn like diagrams.
|
||||||
|
|
||||||
|
## TL;DR
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm repo add kubitodev https://charts.kubito.dev
|
||||||
|
helm install excalidraw kubitodev/excalidraw
|
||||||
|
```
|
||||||
|
|
||||||
|
## Introduction
|
||||||
|
|
||||||
|
An open source virtual hand-drawn style whiteboard. Collaborative and end-to-end encrypted.
|
||||||
|
|
||||||
|
## Prerequisites
|
||||||
|
|
||||||
|
- Kubernetes 1.12+
|
||||||
|
- Helm 3.2.0+
|
||||||
|
|
||||||
|
## Installing the Chart
|
||||||
|
|
||||||
|
To install the chart with the release name `excalidraw`:
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm install excalidraw kubitodev/excalidraw
|
||||||
|
```
|
||||||
|
|
||||||
|
The command deploys excalidraw on the Kubernetes cluster in the default configuration. The [Parameters](#parameters) section lists the parameters that can be configured during installation.
|
||||||
|
|
||||||
|
> **Tip**: List all releases using `helm list`
|
||||||
|
|
||||||
|
## Uninstalling the Chart
|
||||||
|
|
||||||
|
To uninstall/delete the `excalidraw` deployment:
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm delete excalidraw
|
||||||
|
```
|
||||||
|
|
||||||
|
The command removes all the Kubernetes components associated with the chart and deletes the release.
|
||||||
|
|
||||||
|
## Parameters
|
||||||
|
|
||||||
|
### Excalidraw parameters
|
||||||
|
|
||||||
|
| Name | Description | Value |
|
||||||
|
| ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |
|
||||||
|
| `replicaCount` | The number of replicas to deploy. | `1` |
|
||||||
|
| `image.repository` | The Docker repository to pull the image from. For `arm64` platforms, use `peek1e/excalidraw-arm64` until they add support. | `excalidraw/excalidraw` |
|
||||||
|
| `image.tag` | The image tag to use. | `latest` |
|
||||||
|
| `image.pullPolicy` | The logic of image pulling. | `IfNotPresent` |
|
||||||
|
| `imagePullSecrets` | The image pull secrets to use. | `[]` |
|
||||||
|
| `deployment.strategy.type` | The deployment strategy to use. | `Recreate` |
|
||||||
|
| `serviceAccount.create` | Whether to create a service account. | `true` |
|
||||||
|
| `serviceAccount.annotations` | Additional annotations to add to the service account. | `{}` |
|
||||||
|
| `serviceAccount.name` | The name of the service account to use. If not set and create is true, a new service account will be created with a generated name. | `""` |
|
||||||
|
| `podAnnotations` | Additional annotations to add to the pod. | `{}` |
|
||||||
|
| `podSecurityContext` | The security context to use for the pod. | `{}` |
|
||||||
|
| `securityContext` | The security context to use for the container. | `{}` |
|
||||||
|
| `initContainers` | Additional init containers to add to the pod. | `[]` |
|
||||||
|
| `service.type` | The type of service to create. | `ClusterIP` |
|
||||||
|
| `service.port` | The port on which the service will run. | `8080` |
|
||||||
|
| `service.nodePort` | The nodePort to use for the service. Only used if service.type is NodePort. | `""` |
|
||||||
|
| `ingress.enabled` | Whether to create an ingress for the service. | `false` |
|
||||||
|
| `ingress.className` | The ingress class name to use. | `""` |
|
||||||
|
| `ingress.annotations` | Additional annotations to add to the ingress. | `{}` |
|
||||||
|
| `ingress.hosts[0].host` | The host to use for the ingress. | `chart-example.local` |
|
||||||
|
| `ingress.hosts[0].paths[0].path` | The path to use for the ingress. | `/` |
|
||||||
|
| `ingress.hosts[0].paths[0].pathType` | The path type to use for the ingress. | `ImplementationSpecific` |
|
||||||
|
| `ingress.tls` | The TLS configuration for the ingress. | `[]` |
|
||||||
|
| `resources` | The resources to use for the pod. | `{}` |
|
||||||
|
| `autoscaling.enabled` | Whether to enable autoscaling. | `false` |
|
||||||
|
| `autoscaling.minReplicas` | The minimum number of replicas to scale to. | `1` |
|
||||||
|
| `autoscaling.maxReplicas` | The maximum number of replicas to scale to. | `100` |
|
||||||
|
| `autoscaling.targetCPUUtilizationPercentage` | The target CPU utilization percentage to use for autoscaling. | `80` |
|
||||||
|
| `autoscaling.targetMemoryUtilizationPercentage` | The target memory utilization percentage to use for autoscaling. | `80` |
|
||||||
|
| `nodeSelector` | The node selector to use for the pod. | `{}` |
|
||||||
|
| `tolerations` | The tolerations to use for the pod. | `[]` |
|
||||||
|
| `affinity` | The affinity to use for the pod. | `{}` |
|
||||||
|
|
||||||
|
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm install example \
|
||||||
|
--set user=example \
|
||||||
|
--set password=example \
|
||||||
|
kubitodev/example
|
||||||
|
```
|
||||||
|
|
||||||
|
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
|
||||||
|
|
||||||
|
```console
|
||||||
|
helm install example -f values.yaml kubitodev/example
|
||||||
|
```
|
||||||
|
|
||||||
|
> **Tip**: You can use the default [values.yaml](values.yaml)
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
Copyright © 2024 Kubito
|
||||||
|
|
||||||
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
you may not use this file except in compliance with the License.
|
||||||
|
You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing, software
|
||||||
|
distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
See the License for the specific language governing permissions and
|
||||||
|
limitations under the License.
|
66
charts/excalidraw/templates/deployment.yaml
Normal file
66
charts/excalidraw/templates/deployment.yaml
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: excalidraw
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: excalidraw
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
||||||
|
spec:
|
||||||
|
{{- if not .Values.autoscaling.enabled }}
|
||||||
|
replicas: {{ .Values.replicaCount }}
|
||||||
|
{{- end }}
|
||||||
|
strategy:
|
||||||
|
{{- .Values.deployment.strategy | toYaml | nindent 4 }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app.kubernetes.io/name: excalidraw
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- with .Values.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: excalidraw
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
||||||
|
spec:
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: {{ .Values.serviceAccount.name | default "excalidraw" }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||||
|
{{- if .Values.initContainers }}
|
||||||
|
initContainers:
|
||||||
|
{{- toYaml .Values.initContainers | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
containers:
|
||||||
|
- name: {{ .Chart.Name }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||||
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||||
|
ports:
|
||||||
|
- name: http
|
||||||
|
containerPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.resources | nindent 12 }}
|
||||||
|
{{- with .Values.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }}
|
||||||
|
{{- end }}
|
31
charts/excalidraw/templates/hpa.yaml
Normal file
31
charts/excalidraw/templates/hpa.yaml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
{{- if .Values.autoscaling.enabled }}
|
||||||
|
apiVersion: autoscaling/v2beta1
|
||||||
|
kind: HorizontalPodAutoscaler
|
||||||
|
metadata:
|
||||||
|
name: excalidraw
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: excalidraw
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
||||||
|
spec:
|
||||||
|
scaleTargetRef:
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
name: excalidraw
|
||||||
|
minReplicas: {{ .Values.autoscaling.minReplicas }}
|
||||||
|
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
|
||||||
|
metrics:
|
||||||
|
{{- if .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: cpu
|
||||||
|
targetAverageUtilization: {{ .Values.autoscaling.targetCPUUtilizationPercentage }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||||
|
- type: Resource
|
||||||
|
resource:
|
||||||
|
name: memory
|
||||||
|
targetAverageUtilization: {{ .Values.autoscaling.targetMemoryUtilizationPercentage }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
64
charts/excalidraw/templates/ingress.yaml
Normal file
64
charts/excalidraw/templates/ingress.yaml
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
{{- if .Values.ingress.enabled }}
|
||||||
|
{{- $fullName := "excalidraw" -}}
|
||||||
|
{{- $svcPort := .Values.service.port -}}
|
||||||
|
{{- if and .Values.ingress.className (not (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion)) }}
|
||||||
|
{{- if not (hasKey .Values.ingress.annotations "kubernetes.io/ingress.class") }}
|
||||||
|
{{- $_ := set .Values.ingress.annotations "kubernetes.io/ingress.class" .Values.ingress.className}}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if semverCompare ">=1.19-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
{{- else if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||||
|
apiVersion: networking.k8s.io/v1beta1
|
||||||
|
{{- else -}}
|
||||||
|
apiVersion: extensions/v1beta1
|
||||||
|
{{- end }}
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: {{ $fullName }}
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: excalidraw
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
||||||
|
{{- with .Values.ingress.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- if and .Values.ingress.className (semverCompare ">=1.18-0" .Capabilities.KubeVersion.GitVersion) }}
|
||||||
|
ingressClassName: {{ .Values.ingress.className }}
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.ingress.tls }}
|
||||||
|
tls:
|
||||||
|
{{- range .Values.ingress.tls }}
|
||||||
|
- hosts:
|
||||||
|
{{- range .hosts }}
|
||||||
|
- {{ . | quote }}
|
||||||
|
{{- end }}
|
||||||
|
secretName: {{ .secretName }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
rules:
|
||||||
|
{{- range .Values.ingress.hosts }}
|
||||||
|
- host: {{ .host | quote }}
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
{{- range .paths }}
|
||||||
|
- path: {{ .path }}
|
||||||
|
{{- if and .pathType (semverCompare ">=1.18-0" $.Capabilities.KubeVersion.GitVersion) }}
|
||||||
|
pathType: {{ .pathType }}
|
||||||
|
{{- end }}
|
||||||
|
backend:
|
||||||
|
{{- if semverCompare ">=1.19-0" $.Capabilities.KubeVersion.GitVersion }}
|
||||||
|
service:
|
||||||
|
name: {{ $fullName }}
|
||||||
|
port:
|
||||||
|
number: {{ $svcPort }}
|
||||||
|
{{- else }}
|
||||||
|
serviceName: {{ $fullName }}
|
||||||
|
servicePort: {{ $svcPort }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
22
charts/excalidraw/templates/service.yaml
Normal file
22
charts/excalidraw/templates/service.yaml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: excalidraw
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: excalidraw
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.service.type | default "ClusterIP" }}
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.service.port | default 8080 }}
|
||||||
|
targetPort: http
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
{{ if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePort))) }}
|
||||||
|
nodePort: {{.Values.service.nodePort}}
|
||||||
|
{{ end }}
|
||||||
|
selector:
|
||||||
|
app.kubernetes.io/name: excalidraw
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
15
charts/excalidraw/templates/serviceaccount.yaml
Normal file
15
charts/excalidraw/templates/serviceaccount.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{{- if .Values.serviceAccount.create }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ServiceAccount
|
||||||
|
metadata:
|
||||||
|
name: excalidraw
|
||||||
|
labels:
|
||||||
|
app.kubernetes.io/name: excalidraw
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name | quote }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
|
||||||
|
{{- with .Values.serviceAccount.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
118
charts/excalidraw/values.yaml
Normal file
118
charts/excalidraw/values.yaml
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
## @section Excalidraw parameters
|
||||||
|
|
||||||
|
## @param replicaCount The number of replicas to deploy.
|
||||||
|
## @param image.repository The Docker repository to pull the image from. For `arm64` platforms, use `peek1e/excalidraw-arm64` until they add support.
|
||||||
|
## @param image.tag The image tag to use.
|
||||||
|
## @param image.pullPolicy The logic of image pulling.
|
||||||
|
## @param imagePullSecrets The image pull secrets to use.
|
||||||
|
## @param deployment.strategy.type The deployment strategy to use.
|
||||||
|
## @param serviceAccount.create Whether to create a service account.
|
||||||
|
## @param serviceAccount.annotations Additional annotations to add to the service account.
|
||||||
|
## @param serviceAccount.name The name of the service account to use. If not set and create is true, a new service account will be created with a generated name.
|
||||||
|
## @param podAnnotations Additional annotations to add to the pod.
|
||||||
|
## @param podSecurityContext The security context to use for the pod.
|
||||||
|
## @param securityContext The security context to use for the container.
|
||||||
|
## @param initContainers Additional init containers to add to the pod.
|
||||||
|
## @param service.type The type of service to create.
|
||||||
|
## @param service.port The port on which the service will run.
|
||||||
|
## @param service.nodePort The nodePort to use for the service. Only used if service.type is NodePort.
|
||||||
|
## @param ingress.enabled Whether to create an ingress for the service.
|
||||||
|
## @param ingress.className The ingress class name to use.
|
||||||
|
## @param ingress.annotations Additional annotations to add to the ingress.
|
||||||
|
## @param ingress.hosts[0].host The host to use for the ingress.
|
||||||
|
## @param ingress.hosts[0].paths[0].path The path to use for the ingress.
|
||||||
|
## @param ingress.hosts[0].paths[0].pathType The path type to use for the ingress.
|
||||||
|
## @param ingress.tls The TLS configuration for the ingress.
|
||||||
|
## @param resources The resources to use for the pod.
|
||||||
|
## @param autoscaling.enabled Whether to enable autoscaling.
|
||||||
|
## @param autoscaling.minReplicas The minimum number of replicas to scale to.
|
||||||
|
## @param autoscaling.maxReplicas The maximum number of replicas to scale to.
|
||||||
|
## @param autoscaling.targetCPUUtilizationPercentage The target CPU utilization percentage to use for autoscaling.
|
||||||
|
## @param autoscaling.targetMemoryUtilizationPercentage The target memory utilization percentage to use for autoscaling.
|
||||||
|
## @param nodeSelector The node selector to use for the pod.
|
||||||
|
## @param tolerations The tolerations to use for the pod.
|
||||||
|
## @param affinity The affinity to use for the pod.
|
||||||
|
##
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: excalidraw/excalidraw
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
tag: "latest" # latest is only available
|
||||||
|
|
||||||
|
imagePullSecrets: []
|
||||||
|
|
||||||
|
deployment:
|
||||||
|
strategy:
|
||||||
|
type: Recreate
|
||||||
|
|
||||||
|
serviceAccount:
|
||||||
|
create: true
|
||||||
|
annotations: {}
|
||||||
|
name: ""
|
||||||
|
|
||||||
|
podAnnotations: {}
|
||||||
|
|
||||||
|
podSecurityContext:
|
||||||
|
{}
|
||||||
|
# fsGroup: 2000
|
||||||
|
|
||||||
|
securityContext:
|
||||||
|
{}
|
||||||
|
# capabilities:
|
||||||
|
# drop:
|
||||||
|
# - ALL
|
||||||
|
# readOnlyRootFilesystem: true
|
||||||
|
# runAsNonRoot: true
|
||||||
|
# runAsUser: 1000
|
||||||
|
|
||||||
|
# -- Init Containers
|
||||||
|
initContainers:
|
||||||
|
[]
|
||||||
|
# - name: init-container
|
||||||
|
# image: busybox
|
||||||
|
# command: ['sh', '-c', 'echo "this is an init container"']
|
||||||
|
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
|
port: 8080
|
||||||
|
nodePort: ""
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
enabled: false
|
||||||
|
className: ""
|
||||||
|
annotations:
|
||||||
|
{}
|
||||||
|
# kubernetes.io/ingress.class: nginx
|
||||||
|
# kubernetes.io/tls-acme: "true"
|
||||||
|
hosts:
|
||||||
|
- host: chart-example.local
|
||||||
|
paths:
|
||||||
|
- path: /
|
||||||
|
pathType: ImplementationSpecific
|
||||||
|
tls: []
|
||||||
|
# - secretName: chart-example-tls
|
||||||
|
# hosts:
|
||||||
|
# - chart-example.local
|
||||||
|
|
||||||
|
resources:
|
||||||
|
{}
|
||||||
|
# limits:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
# requests:
|
||||||
|
# cpu: 100m
|
||||||
|
# memory: 128Mi
|
||||||
|
|
||||||
|
autoscaling:
|
||||||
|
enabled: false
|
||||||
|
minReplicas: 1
|
||||||
|
maxReplicas: 100
|
||||||
|
targetCPUUtilizationPercentage: 80
|
||||||
|
targetMemoryUtilizationPercentage: 80
|
||||||
|
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
affinity: {}
|
17
charts/paperless-ai/Chart.yaml
Normal file
17
charts/paperless-ai/Chart.yaml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
name: paperless-ai
|
||||||
|
description: Ein Helm Chart für Paperless AI, basierend auf der Docker Compose Konfiguration.
|
||||||
|
version: 0.1.2
|
||||||
|
appVersion: 3.0.7
|
||||||
|
keywords:
|
||||||
|
- paperless-ai
|
||||||
|
- document-management
|
||||||
|
- ai
|
||||||
|
home: https://git.cooltux.net/marko/HelmChartSammlung/src/branch/main/charts/paperless-ai
|
||||||
|
sources:
|
||||||
|
- https://github.com/clusterzx/paperless-ai
|
||||||
|
- https://git.cooltux.net/marko/HelmChartSammlung/src/branch/main/charts/paperless-ai
|
||||||
|
maintainers:
|
||||||
|
- name: Marko Oldenburg
|
||||||
|
email: development@cooltux.net
|
||||||
|
url: https://git.cooltux.net/marko
|
84
charts/paperless-ai/templates/_helpers.tpl
Normal file
84
charts/paperless-ai/templates/_helpers.tpl
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
{{/*
|
||||||
|
_helpers.tpl
|
||||||
|
Enthält nützliche Template-Funktionen, die in anderen Chart-Templates verwendet werden.
|
||||||
|
*/}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Erweitert den Namen des Charts.
|
||||||
|
*/}}
|
||||||
|
{{- define "paperless-ai.name" -}}
|
||||||
|
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Erstellt einen vollständig qualifizierten App-Namen.
|
||||||
|
Wir kürzen auf 63 Zeichen, da einige Kubernetes-Namenfelder darauf beschränkt sind (gemäß DNS-Namensspezifikation).
|
||||||
|
Wenn der Release-Name den Chart-Namen enthält, wird er als vollständiger Name verwendet.
|
||||||
|
*/}}
|
||||||
|
{{- define "paperless-ai.fullname" -}}
|
||||||
|
{{- if .Values.fullnameOverride -}}
|
||||||
|
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- $name := default .Chart.Name .Values.nameOverride -}}
|
||||||
|
{{- if contains $name .Release.Name -}}
|
||||||
|
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- else -}}
|
||||||
|
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Erstellt den Chart-Namen und die Version, wie sie vom Chart-Label verwendet werden.
|
||||||
|
*/}}
|
||||||
|
{{- define "paperless-ai.chart" -}}
|
||||||
|
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Gängige Labels, die allen Ressourcen hinzugefügt werden.
|
||||||
|
*/}}
|
||||||
|
{{- define "paperless-ai.labels" -}}
|
||||||
|
helm.sh/chart: {{ include "paperless-ai.chart" . }}
|
||||||
|
{{ include "paperless-ai.selectorLabels" . }}
|
||||||
|
{{- if .Chart.AppVersion }}
|
||||||
|
app.kubernetes.io/app-version: {{ .Chart.AppVersion | quote }}
|
||||||
|
{{- end }}
|
||||||
|
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Selector-Labels, die für die Auswahl von Pods verwendet werden.
|
||||||
|
*/}}
|
||||||
|
{{- define "paperless-ai.selectorLabels" -}}
|
||||||
|
app.kubernetes.io/name: {{ include "paperless-ai.name" . }}
|
||||||
|
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Erstellt den Namen des zu verwendenden Service Accounts.
|
||||||
|
*/}}
|
||||||
|
{{- define "paperless-ai.serviceAccountName" -}}
|
||||||
|
{{- if .Values.serviceAccount.create -}}
|
||||||
|
{{ default (include "paperless-ai.fullname" .) .Values.serviceAccount.name }}
|
||||||
|
{{- else -}}
|
||||||
|
{{ default "default" .Values.serviceAccount.name }}
|
||||||
|
{{- end -}}
|
||||||
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/*
|
||||||
|
Generiert den Inhalt der .env-Datei aus den Werten in .Values.secretEnv
|
||||||
|
*/}}
|
||||||
|
{{- define "generateEnv" -}}
|
||||||
|
{{- if .Values.paperless.apiUrl }}PAPERLESS_API_URL={{ .Values.paperless.apiUrl }}{{ "\n" }}{{- end }}
|
||||||
|
{{- if .Values.ai.provider }}AI_PROVIDER={{ .Values.ai.provider }}{{ "\n" }}{{- end }}
|
||||||
|
{{- if .Values.ai.addProcessedTag }}ADD_AI_PROCESSED_TAG={{ .Values.ai.addProcessedTag }}{{ "\n" }}{{- end }}
|
||||||
|
{{- if .Values.ai.processedTagName }}AI_PROCESSED_TAG_NAME={{ .Values.ai.processedTagName }}{{ "\n" }}{{- end }}
|
||||||
|
{{- if .Values.prompt.useTags }}USE_PROMPT_TAGS={{ .Values.prompt.useTags }}{{ "\n" }}{{- end }}
|
||||||
|
{{- if .Values.prompt.tags }}PROMPT_TAGS={{ .Values.prompt.tags }}{{ "\n" }}{{- end }}
|
||||||
|
{{- if .Values.scanInterval }}SCAN_INTERVAL={{ .Values.scanInterval }}{{ "\n" }}{{- end }}
|
||||||
|
{{- if .Values.systemPrompt }}SYSTEM_PROMPT=`{{ .Values.systemPrompt }}`{{ "\n" }}{{- end }}
|
||||||
|
{{- if .Values.processPredefinedDocuments }}PROCESS_PREDEFINED_DOCUMENTS={{ .Values.processPredefinedDocuments }}{{ "\n" }}{{- end }}
|
||||||
|
TAGS={{ .Values.tags }}{{ "\n" }}
|
||||||
|
{{- if .Values.openAi.model }}OPENAI_MODEL={{ .Values.openAi.model }}{{ "\n" }}{{- end }}
|
||||||
|
{{- end }}
|
80
charts/paperless-ai/templates/deployment.yaml
Normal file
80
charts/paperless-ai/templates/deployment.yaml
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
# deployment.yaml
|
||||||
|
# Definiert das Kubernetes Deployment für die Paperless AI Anwendung.
|
||||||
|
# Ein Deployment verwaltet die Erstellung und Skalierung von Pods.
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: {{ include "paperless-ai.fullname" . }} # Der Name des Deployments, generiert mit dem fullname-Template.
|
||||||
|
labels:
|
||||||
|
{{- include "paperless-ai.labels" . | nindent 4 }} # Allgemeine Labels für das Deployment.
|
||||||
|
spec:
|
||||||
|
{{- if not .Values.autoscaling.enabled }}
|
||||||
|
replicas: {{ .Values.replicaCount }} # Anzahl der gewünschten Pod-Replikate, wenn Autoscaling deaktiviert ist.
|
||||||
|
{{- end }}
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
{{- include "paperless-ai.selectorLabels" . | nindent 6 }} # Selector, um die Pods zu finden, die zu diesem Deployment gehören.
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
{{- with .Values.podAnnotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 8 }} # Zusätzliche Anmerkungen für den Pod.
|
||||||
|
{{- end }}
|
||||||
|
labels:
|
||||||
|
{{- include "paperless-ai.selectorLabels" . | nindent 8 }} # Labels für den Pod.
|
||||||
|
spec:
|
||||||
|
{{- with .Values.imagePullSecrets }}
|
||||||
|
imagePullSecrets:
|
||||||
|
{{- toYaml . | nindent 8 }} # Secrets für den Image-Pull, falls private Registries verwendet werden.
|
||||||
|
{{- end }}
|
||||||
|
serviceAccountName: {{ include "paperless-ai.serviceAccountName" . }} # Der zu verwendende Service Account.
|
||||||
|
{{- if .Values.securityContext.enabled }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.securityContext.pod | nindent 8 }} # Sicherheitskontext-Einstellungen für den gesamten Pod.
|
||||||
|
{{- end }}
|
||||||
|
containers:
|
||||||
|
- name: {{ .Chart.Name }} # Name des Containers.
|
||||||
|
{{- if .Values.securityContext.enabled }}
|
||||||
|
securityContext:
|
||||||
|
{{- toYaml .Values.securityContext.container | nindent 12 }} # Sicherheitskontext-Einstellungen für diesen Container.
|
||||||
|
{{- end }}
|
||||||
|
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" # Das zu verwendende Image.
|
||||||
|
imagePullPolicy: {{ .Values.image.pullPolicy }} # Die Image-Pull-Policy.
|
||||||
|
ports:
|
||||||
|
- name: http # Name des Ports.
|
||||||
|
containerPort: {{ .Values.service.targetPort }} # Der Port, der im Container geöffnet ist.
|
||||||
|
protocol: TCP # Das Protokoll des Ports.
|
||||||
|
livenessProbe:
|
||||||
|
{{- toYaml .Values.livenessProbe | nindent 12 }}
|
||||||
|
readinessProbe:
|
||||||
|
{{- toYaml .Values.readinessProbe | nindent 12 }}
|
||||||
|
env:
|
||||||
|
{{- range $key, $value := .Values.env }}
|
||||||
|
- name: {{ $key }} # Name der Umgebungsvariable.
|
||||||
|
value: {{ $value | quote }} # Wert der Umgebungsvariable.
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.persistence.enabled }}
|
||||||
|
volumeMounts:
|
||||||
|
- name: paperless-ai-data # Name des Volumes, das gemountet werden soll.
|
||||||
|
mountPath: /app/data # Der Pfad im Container, an dem das Volume gemountet wird.
|
||||||
|
{{- end }}
|
||||||
|
resources:
|
||||||
|
{{- toYaml .Values.resources | nindent 12 }} # Ressourcenanforderungen und -limits für den Container.
|
||||||
|
{{- with .Values.nodeSelector }}
|
||||||
|
nodeSelector:
|
||||||
|
{{- toYaml . | nindent 8 }} # Node-Selector-Regeln für die Pod-Platzierung.
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.affinity }}
|
||||||
|
affinity:
|
||||||
|
{{- toYaml . | nindent 8 }} # Affinitätsregeln für die Pod-Platzierung.
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.tolerations }}
|
||||||
|
tolerations:
|
||||||
|
{{- toYaml . | nindent 8 }} # Toleranzen für die Pod-Platzierung auf Tainted Nodes.
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.persistence.enabled }}
|
||||||
|
volumes:
|
||||||
|
- name: paperless-ai-data # Definiert ein Volume mit dem Namen 'paperless-ai-data'.
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: {{ include "paperless-ai.fullname" . }}-data # Verweist auf den Persistent Volume Claim.
|
||||||
|
{{- end }}
|
38
charts/paperless-ai/templates/ingress.yaml
Normal file
38
charts/paperless-ai/templates/ingress.yaml
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
# ingress.yaml
|
||||||
|
# Definiert einen Kubernetes Ingress, um externen Zugriff auf den Service zu ermöglichen.
|
||||||
|
# Standardmäßig ist dieser Ingress deaktiviert und muss in 'values.yaml' aktiviert werden.
|
||||||
|
{{- if .Values.ingress.enabled -}} # Dieses Template wird nur gerendert, wenn 'ingress.enabled' true ist.
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
name: {{ include "paperless-ai.fullname" . }} # Der Name des Ingress
|
||||||
|
labels:
|
||||||
|
{{- include "paperless-ai.labels" . | nindent 4 }} # Allgemeine Labels für den Ingress.
|
||||||
|
{{- with .Values.ingress.annotations }}
|
||||||
|
annotations:
|
||||||
|
{{- toYaml . | nindent 4 }} # Zusätzliche Anmerkungen für den Ingress (z.B. für Cert-Manager oder Nginx-Controller).
|
||||||
|
{{- end }}
|
||||||
|
spec:
|
||||||
|
{{- if .Values.ingress.className }}
|
||||||
|
ingressClassName: {{ .Values.ingress.className }} # Der Name der Ingress-Klasse.
|
||||||
|
{{- end }}
|
||||||
|
{{- if .Values.ingress.tls }}
|
||||||
|
tls:
|
||||||
|
{{- toYaml .Values.ingress.tls | nindent 4 }} # TLS-Konfiguration für HTTPS.
|
||||||
|
{{- end }}
|
||||||
|
rules:
|
||||||
|
{{- range .Values.ingress.hosts }}
|
||||||
|
- host: {{ .host | quote }} # Der Hostname für den Ingress.
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
{{- range .paths }}
|
||||||
|
- path: {{ .path }} # Der Pfad, der weitergeleitet werden soll.
|
||||||
|
pathType: {{ .pathType }} # Der Typ des Pfades (Prefix, Exact, ImplementationSpecific).
|
||||||
|
backend:
|
||||||
|
service:
|
||||||
|
name: {{ include "paperless-ai.fullname" $ }} # Name des Services, an den weitergeleitet wird.
|
||||||
|
port:
|
||||||
|
number: {{ $.Values.service.port }} # Port des Services.
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
11
charts/paperless-ai/templates/paperlessApiSecret.yaml
Normal file
11
charts/paperless-ai/templates/paperlessApiSecret.yaml
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
{{- if .Values.paperless.apiToken }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: {{ include "paperless-ai.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "paperless-ai.labels" . | nindent 4 }}
|
||||||
|
type: Opaque
|
||||||
|
data:
|
||||||
|
PAPERLESS_API_TOKEN: {{ .Values.paperless.apiToken | b64enc | quote }}
|
||||||
|
{{- end }}
|
17
charts/paperless-ai/templates/pvc.yaml
Normal file
17
charts/paperless-ai/templates/pvc.yaml
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
{{- if .Values.persistence.enabled }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
name: {{ include "paperless-ai.fullname" . }}-data
|
||||||
|
labels:
|
||||||
|
{{- include "paperless-ai.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- {{ .Values.persistence.accessMode }}
|
||||||
|
{{- if .Values.persistence.storageClassName }}
|
||||||
|
storageClassName: {{ .Values.persistence.storageClassName }}
|
||||||
|
{{- end }}
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: {{ .Values.persistence.size }}
|
||||||
|
{{- end }}
|
15
charts/paperless-ai/templates/service.yaml
Normal file
15
charts/paperless-ai/templates/service.yaml
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
name: {{ include "paperless-ai.fullname" . }}
|
||||||
|
labels:
|
||||||
|
{{- include "paperless-ai.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
type: {{ .Values.service.type }}
|
||||||
|
ports:
|
||||||
|
- port: {{ .Values.service.port }}
|
||||||
|
targetPort: {{ .Values.service.targetPort }}
|
||||||
|
protocol: TCP
|
||||||
|
name: http
|
||||||
|
selector:
|
||||||
|
{{- include "paperless-ai.selectorLabels" . | nindent 4 }}
|
131
charts/paperless-ai/values.yaml
Normal file
131
charts/paperless-ai/values.yaml
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
# paperless-ai config
|
||||||
|
paperless:
|
||||||
|
apiUrl: "http://paperless-ngx:8000"
|
||||||
|
apiToken:
|
||||||
|
|
||||||
|
ai:
|
||||||
|
provider: "openai"
|
||||||
|
addProcessedTag: yes
|
||||||
|
processedTagName: ai-processed
|
||||||
|
|
||||||
|
prompt:
|
||||||
|
useTags: yes
|
||||||
|
tags: Rechnung,Kontoauszug,Vertrag,Arbeitgeber
|
||||||
|
|
||||||
|
openAi:
|
||||||
|
apiKey:
|
||||||
|
model: "gpt-4o-mini"
|
||||||
|
|
||||||
|
ollama:
|
||||||
|
apiUrl: ""
|
||||||
|
model: ""
|
||||||
|
|
||||||
|
scanInterval: "*/30 * * * *"
|
||||||
|
|
||||||
|
systemPrompt: |-
|
||||||
|
Return the result EXCLUSIVELY as a JSON object. The Tags and Title MUST be in the language that is used in the document.:
|
||||||
|
|
||||||
|
{
|
||||||
|
"title": "xxxxx",
|
||||||
|
"correspondent": "xxxxxxxx",
|
||||||
|
"tags": ["Tag1", "Tag2", "Tag3", "Tag4"],
|
||||||
|
"document_date": "YYYY-MM-DD",
|
||||||
|
"language": "en/de/es/..."
|
||||||
|
}
|
||||||
|
processPredefinedDocuments: "no"
|
||||||
|
tags: "ai-indexed,ai-indexed2"
|
||||||
|
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: clusterzx/paperless-ai
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
tag: ""
|
||||||
|
|
||||||
|
serviceAccount:
|
||||||
|
create: false
|
||||||
|
annotations: {}
|
||||||
|
name: ""
|
||||||
|
|
||||||
|
service:
|
||||||
|
type: ClusterIP
|
||||||
|
port: 3000
|
||||||
|
targetPort: 3000
|
||||||
|
|
||||||
|
env:
|
||||||
|
PUID: 1000
|
||||||
|
PGID: 2000
|
||||||
|
PAPERLESS_AI_PORT: 3000
|
||||||
|
RAG_SERVICE_URL: http://localhost:8000
|
||||||
|
RAG_SERVICE_ENABLED: true
|
||||||
|
|
||||||
|
# Konfiguration für persistente Speicherung (Persistent Volume Claim).
|
||||||
|
persistence:
|
||||||
|
enabled: true
|
||||||
|
storageClassName: ""
|
||||||
|
accessMode: ReadWriteOnce
|
||||||
|
size: 1Gi
|
||||||
|
|
||||||
|
livenessProbe:
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: http
|
||||||
|
readinessProbe:
|
||||||
|
initialDelaySeconds: 30
|
||||||
|
httpGet:
|
||||||
|
path: /
|
||||||
|
port: http
|
||||||
|
|
||||||
|
# Sicherheitskontext-Einstellungen für Pod und Container.
|
||||||
|
securityContext:
|
||||||
|
enabled: false
|
||||||
|
pod:
|
||||||
|
runAsUser: 1000
|
||||||
|
runAsGroup: 2000
|
||||||
|
fsGroup: 2000
|
||||||
|
container:
|
||||||
|
allowPrivilegeEscalation: false
|
||||||
|
capabilities:
|
||||||
|
drop:
|
||||||
|
- ALL
|
||||||
|
|
||||||
|
# Konfiguration für Horizontal Pod Autoscaling (HPA).
|
||||||
|
autoscaling:
|
||||||
|
enabled: false
|
||||||
|
minReplicas: 1
|
||||||
|
maxReplicas: 10
|
||||||
|
targetCPUUtilizationPercentage: 80
|
||||||
|
|
||||||
|
# Ressourcenanforderungen und -limits für den Container.
|
||||||
|
resources:
|
||||||
|
limits:
|
||||||
|
cpu: 300m
|
||||||
|
memory: 704Mi
|
||||||
|
requests:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 256Mi
|
||||||
|
|
||||||
|
# Node-Selector für die Pod-Platzierung.
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
# Toleranzen für die Pod-Platzierung auf Tainted Nodes.
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
# Affinitätsregeln für die Pod-Platzierung.
|
||||||
|
affinity: {}
|
||||||
|
|
||||||
|
# Ingress-Konfiguration (optional, aber üblich für Webanwendungen).
|
||||||
|
ingress:
|
||||||
|
enabled: false
|
||||||
|
className: "" # Der Ingress-Klassenname (z.B. nginx, traefik).
|
||||||
|
annotations: {}
|
||||||
|
hosts:
|
||||||
|
- host: chart-example.local # Beispiel-Hostname.
|
||||||
|
paths:
|
||||||
|
- path: / # Der Pfad, der weitergeleitet werden soll.
|
||||||
|
pathType: ImplementationSpecific # Der Typ des Pfades (Prefix, Exact, ImplementationSpecific).
|
||||||
|
tls: [] # TLS-Konfiguration für den Ingress.
|
||||||
|
# - secretName: chart-example-tls # Name des Secrets, das das TLS-Zertifikat enthält.
|
||||||
|
# hosts:
|
||||||
|
# - chart-example.local # Hostnamen, für die das Zertifikat gültig ist.
|
Reference in New Issue
Block a user