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