fix: add helm-chart
This commit is contained in:
parent
30a8ddf113
commit
24de4fd163
6
helm/Chart.yaml
Normal file
6
helm/Chart.yaml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
appVersion: "v2.30.0"
|
||||||
|
description: "filebrowser"
|
||||||
|
name: filebrowser
|
||||||
|
release-name: filebrowser
|
||||||
|
version: v1.0.6
|
||||||
26
helm/README.md
Normal file
26
helm/README.md
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
## package helm chart
|
||||||
|
|
||||||
|
perl -pe 's/(version: )(v\d\.)(\d\.)(\d+)/$1 . $2.$3.($4 + 1)/ge' helm/Chart.yaml > helm/Chart.yaml.tmp;
|
||||||
|
mv helm/Chart.yaml.tmp helm/Chart.yaml
|
||||||
|
|
||||||
|
helm package helm
|
||||||
|
helm cm-push -u <username> -p <password> $(ls -tr -1 *.tgz | tail -n 1) <repo>
|
||||||
|
|
||||||
|
## install
|
||||||
|
|
||||||
|
helm install <releasename> <repo>/<chartname> --namespace <namespace> --create-namespace --wait --set ingress.tls='true' --set ingress.ingessClassName='traefik' --set ingress.domain='files.example.com'
|
||||||
|
|
||||||
|
or
|
||||||
|
|
||||||
|
helm upgrade --install <releasename> <repo>/<chartname> --namespace <namespace> --create-namespace --wait --set ingress.tls='true' --set ingress.ingessClassName='traefik' --set ingress.domain='files.example.com'
|
||||||
|
|
||||||
|
## install from local directory
|
||||||
|
|
||||||
|
helm upgrade --install <releasename> helm/ --namespace <namespace> --create-namespace --wait --set ingress.tls='true' --set ingress.ingessClassName='traefik' --set ingress.domain='files.example.com'
|
||||||
|
|
||||||
|
## upgrade
|
||||||
|
|
||||||
|
helm repo update
|
||||||
|
helm upgrade <releasename> <repo>/<chartname> --namespace <namespace>
|
||||||
|
|
||||||
20
helm/templates/docker-secret.yaml
Normal file
20
helm/templates/docker-secret.yaml
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{{- if (eq (toString .Values.cr.enabled ) "true") }}
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
helmrepo: "{{ .Values.helmrepo }}"
|
||||||
|
labels:
|
||||||
|
app: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/component: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/instance: dockersecret
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/name: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.Version }}
|
||||||
|
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||||
|
name: {{ .Values.fullnameOverride }}-docker
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
type: kubernetes.io/dockerconfigjson
|
||||||
|
data:
|
||||||
|
.dockerconfigjson: {{ .Values.cr.dockersecret }}
|
||||||
|
{{ end }}
|
||||||
25
helm/templates/filebrowser-cm.yaml
Normal file
25
helm/templates/filebrowser-cm.yaml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
helmrepo: "{{ .Values.helmrepo }}"
|
||||||
|
labels:
|
||||||
|
app: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/component: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/instance: configmap
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/name: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.Version }}
|
||||||
|
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||||
|
name: {{ .Values.fullnameOverride }}-cm
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
data:
|
||||||
|
.filebrowser.json: |
|
||||||
|
{
|
||||||
|
"port": 80,
|
||||||
|
"baseURL": "/files",
|
||||||
|
"address": "",
|
||||||
|
"log": "stdout",
|
||||||
|
"database": "/srv/config/database.db",
|
||||||
|
"root": "/srv"
|
||||||
|
}
|
||||||
76
helm/templates/filebrowser-deploy.yaml
Normal file
76
helm/templates/filebrowser-deploy.yaml
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
---
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
helmrepo: "{{ .Values.helmrepo }}"
|
||||||
|
labels:
|
||||||
|
app: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/component: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/instance: web
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/name: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.Version }}
|
||||||
|
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||||
|
name: {{ .Values.fullnameOverride }}
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: {{ .Values.fullnameOverride }}
|
||||||
|
name: {{ .Values.namespace }}
|
||||||
|
name: {{ .Values.fullnameOverride }}
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
spec:
|
||||||
|
progressDeadlineSeconds: 600
|
||||||
|
replicas: 1
|
||||||
|
revisionHistoryLimit: 10
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
app: {{ .Values.fullnameOverride }}
|
||||||
|
name: {{ .Values.namespace }}
|
||||||
|
strategy:
|
||||||
|
rollingUpdate:
|
||||||
|
maxSurge: 25%
|
||||||
|
maxUnavailable: 25%
|
||||||
|
type: RollingUpdate
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
app: {{ .Values.fullnameOverride }}
|
||||||
|
name: {{ .Values.namespace }}
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- image: {{ .Values.cr.registry }}/{{ .Values.cr.image }}:{{ .Values.cr.tag }}
|
||||||
|
imagePullPolicy: Always
|
||||||
|
name: remoteip
|
||||||
|
resources: {}
|
||||||
|
terminationMessagePath: /dev/termination-log
|
||||||
|
terminationMessagePolicy: File
|
||||||
|
volumeMounts:
|
||||||
|
- mountPath: /srv
|
||||||
|
name: data-pvc
|
||||||
|
- mountPath: /srv/config
|
||||||
|
name: files-pvc
|
||||||
|
- mountPath: /.filebrowser.json
|
||||||
|
name: filebrowser-cm
|
||||||
|
subPath: .filebrowser.json
|
||||||
|
dnsPolicy: ClusterFirst
|
||||||
|
{{- if (eq (toString .Values.cr.enabled ) "true") }}
|
||||||
|
imagePullSecrets:
|
||||||
|
- name: {{ .Values.fullnameOverride }}-docker
|
||||||
|
{{ end }}
|
||||||
|
restartPolicy: Always
|
||||||
|
schedulerName: default-scheduler
|
||||||
|
securityContext: {}
|
||||||
|
terminationGracePeriodSeconds: 30
|
||||||
|
volumes:
|
||||||
|
- name: data-pvc
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: {{ .Values.namespace }}-data-pvc
|
||||||
|
- name: files-pvc
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: {{ .Values.namespace }}-files-pvc
|
||||||
|
- configMap:
|
||||||
|
defaultMode: 420
|
||||||
|
name: filebrowser-cm
|
||||||
|
name: filebrowser-cm
|
||||||
40
helm/templates/files-ingress.yaml
Normal file
40
helm/templates/files-ingress.yaml
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
{{- if (eq (toString .Values.ingress.enabled ) "true") }}
|
||||||
|
apiVersion: networking.k8s.io/v1
|
||||||
|
kind: Ingress
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
helmrepo: "{{ .Values.helmrepo }}"
|
||||||
|
cert-manager.io/cluster-issuer: letsencrypt-prod
|
||||||
|
ingress.kubernetes.io/ssl-redirect: "true"
|
||||||
|
nginx.ingress.kubernetes.io/rewrite-target: /
|
||||||
|
traefik.ingress.kubernetes.io/router.middlewares: {{ .Values.fullnameOverride }}-redirect@kubernetescrd
|
||||||
|
labels:
|
||||||
|
app: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/component: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/instance: web
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/name: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.Version }}
|
||||||
|
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||||
|
name: {{ .Values.fullnameOverride }}
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
spec:
|
||||||
|
ingressClassName: {{ .Values.ingress.ingessClassName }}
|
||||||
|
rules:
|
||||||
|
- host: {{ .Values.ingress.domain }}
|
||||||
|
http:
|
||||||
|
paths:
|
||||||
|
- backend:
|
||||||
|
service:
|
||||||
|
name: {{ .Values.fullnameOverride }}
|
||||||
|
port:
|
||||||
|
number: {{ .Values.loadbalancer.port }}
|
||||||
|
path: /
|
||||||
|
pathType: Prefix
|
||||||
|
{{- if (eq (toString .Values.ingress.tls ) "true") }}
|
||||||
|
tls:
|
||||||
|
- hosts:
|
||||||
|
- {{ .Values.ingress.domain }}
|
||||||
|
secretName: {{ .Values.ingress.domain }}-tls
|
||||||
|
{{ end }}
|
||||||
|
{{ end }}
|
||||||
32
helm/templates/files-svc.yaml
Normal file
32
helm/templates/files-svc.yaml
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Service
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
helmrepo: "{{ .Values.helmrepo }}"
|
||||||
|
labels:
|
||||||
|
app: {{ .Values.fullnameOverride }}
|
||||||
|
name: {{ .Values.namespace }}
|
||||||
|
app.kubernetes.io/component: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/instance: service
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/name: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.Version }}
|
||||||
|
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||||
|
name: {{ .Values.fullnameOverride }}
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
spec:
|
||||||
|
internalTrafficPolicy: Cluster
|
||||||
|
ipFamilies:
|
||||||
|
- IPv4
|
||||||
|
ipFamilyPolicy: SingleStack
|
||||||
|
ports:
|
||||||
|
- name: {{ .Values.fullnameOverride }}
|
||||||
|
port: {{ .Values.loadbalancer.port }}
|
||||||
|
protocol: {{ .Values.loadbalancer.protocol }}
|
||||||
|
targetPort: {{ .Values.loadbalancer.targetport }}
|
||||||
|
selector:
|
||||||
|
app: {{ .Values.fullnameOverride }}
|
||||||
|
name: {{ .Values.namespace }}
|
||||||
|
sessionAffinity: None
|
||||||
|
type: ClusterIP
|
||||||
|
|
||||||
19
helm/templates/middleware.yaml
Normal file
19
helm/templates/middleware.yaml
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
apiVersion: traefik.containo.us/v1alpha1
|
||||||
|
kind: Middleware
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
helmrepo: "{{ .Values.helmrepo }}"
|
||||||
|
labels:
|
||||||
|
app: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/component: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/instance: middleware
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/name: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.Version }}
|
||||||
|
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||||
|
name: redirect
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
spec:
|
||||||
|
redirectScheme:
|
||||||
|
permanent: true
|
||||||
|
scheme: https
|
||||||
31
helm/templates/pv-data.yaml
Normal file
31
helm/templates/pv-data.yaml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolume
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
helmrepo: "{{ .Values.helmrepo }}"
|
||||||
|
labels:
|
||||||
|
app: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/component: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/instance: web
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/name: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.Version }}
|
||||||
|
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||||
|
name: {{ .Values.fullnameOverride }}-data-pv
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
capacity:
|
||||||
|
storage: 100M
|
||||||
|
claimRef:
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
name: {{ .Values.fullnameOverride }}-data-pvc
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
hostPath:
|
||||||
|
path: /mnt/{{ .Values.fullnameOverride }}-data-pv
|
||||||
|
type: ""
|
||||||
|
persistentVolumeReclaimPolicy: Retain
|
||||||
|
storageClassName: {{ .Values.storage.class }}
|
||||||
|
volumeMode: Filesystem
|
||||||
31
helm/templates/pv-files.yaml
Normal file
31
helm/templates/pv-files.yaml
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolume
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
helmrepo: "{{ .Values.helmrepo }}"
|
||||||
|
labels:
|
||||||
|
app: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/component: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/instance: web
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/name: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.Version }}
|
||||||
|
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||||
|
name: {{ .Values.fullnameOverride }}-files-pv
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
capacity:
|
||||||
|
storage: {{ .Values.storage.size }}
|
||||||
|
claimRef:
|
||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
name: {{ .Values.fullnameOverride }}-files-pvc
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
hostPath:
|
||||||
|
path: /mnt/{{ .Values.fullnameOverride }}-files-pvc
|
||||||
|
type: ""
|
||||||
|
persistentVolumeReclaimPolicy: Retain
|
||||||
|
storageClassName: {{ .Values.storage.class }}
|
||||||
|
volumeMode: Filesystem
|
||||||
24
helm/templates/pvc-data.yaml
Normal file
24
helm/templates/pvc-data.yaml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
helmrepo: "{{ .Values.helmrepo }}"
|
||||||
|
labels:
|
||||||
|
app: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/component: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/instance: pvc
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/name: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.Version }}
|
||||||
|
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||||
|
name: {{ .Values.namespace }}-data-pvc
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: 100M
|
||||||
|
storageClassName: {{ .Values.storage.class }}
|
||||||
|
volumeMode: Filesystem
|
||||||
|
volumeName: {{ .Values.namespace }}-data-pv
|
||||||
24
helm/templates/pvc-files.yaml
Normal file
24
helm/templates/pvc-files.yaml
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: PersistentVolumeClaim
|
||||||
|
metadata:
|
||||||
|
annotations:
|
||||||
|
helmrepo: "{{ .Values.helmrepo }}"
|
||||||
|
labels:
|
||||||
|
app: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/component: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/instance: pvc
|
||||||
|
app.kubernetes.io/managed-by: Helm
|
||||||
|
app.kubernetes.io/name: {{ .Values.fullnameOverride }}
|
||||||
|
app.kubernetes.io/version: {{ .Chart.Version }}
|
||||||
|
helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version }}
|
||||||
|
name: {{ .Values.fullnameOverride }}-files-pvc
|
||||||
|
namespace: {{ .Values.namespace }}
|
||||||
|
spec:
|
||||||
|
accessModes:
|
||||||
|
- ReadWriteMany
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
storage: {{ .Values.storage.size }}
|
||||||
|
storageClassName: {{ .Values.storage.class }}
|
||||||
|
volumeMode: Filesystem
|
||||||
|
volumeName: {{ .Values.fullnameOverride }}-files-pv
|
||||||
35
helm/values.yaml
Normal file
35
helm/values.yaml
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
fullnameOverride: "filebrowser"
|
||||||
|
|
||||||
|
replicaCount: 1
|
||||||
|
|
||||||
|
namespace: filebrowser
|
||||||
|
|
||||||
|
helmrepo: "https://github.com/filebrowser/filebrowser"
|
||||||
|
|
||||||
|
storage:
|
||||||
|
size: 10Gi
|
||||||
|
class: local-path
|
||||||
|
|
||||||
|
cr:
|
||||||
|
enbled: false
|
||||||
|
dockersecret: ""
|
||||||
|
registry: docker.io
|
||||||
|
image: filebrowser/filebrowser
|
||||||
|
tag: v2.30.0
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
enabled: true
|
||||||
|
tls: true
|
||||||
|
ingessClassName: traefik
|
||||||
|
domain: files.example.com
|
||||||
|
|
||||||
|
loadbalancer:
|
||||||
|
port: 80
|
||||||
|
targetport: 80
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
nodeSelector: {}
|
||||||
|
|
||||||
|
tolerations: []
|
||||||
|
|
||||||
|
affinity: {}
|
||||||
Loading…
Reference in New Issue
Block a user