diff --git a/catalog.json b/catalog.json index 3dadcfde0d..acbf7c457f 100644 --- a/catalog.json +++ b/catalog.json @@ -256,10 +256,10 @@ "healthy": true, "healthy_error": null, "location": "/__w/charts/charts/charts/syncthing", - "latest_version": "1.0.18", + "latest_version": "1.0.19", "latest_app_version": "1.23.2", - "latest_human_version": "1.23.2_1.0.18", - "last_update": "2023-03-08 12:30:59", + "latest_human_version": "1.23.2_1.0.19", + "last_update": "2023-03-24 21:22:18", "name": "syncthing", "recommended": false, "title": "Syncthing", @@ -277,7 +277,7 @@ "latest_version": "1.0.17", "latest_app_version": "4.7.11.0", "latest_human_version": "4.7.11.0_1.0.17", - "last_update": "2023-03-24 21:21:30", + "last_update": "2023-03-24 21:22:08", "name": "emby", "recommended": false, "title": "Emby Server", diff --git a/charts/syncthing/1.0.19/.helmignore b/charts/syncthing/1.0.19/.helmignore new file mode 100644 index 0000000000..c1347c2c27 --- /dev/null +++ b/charts/syncthing/1.0.19/.helmignore @@ -0,0 +1,2 @@ +# Patterns to ignore when building packages. +*.png diff --git a/charts/syncthing/1.0.19/Chart.lock b/charts/syncthing/1.0.19/Chart.lock new file mode 100644 index 0000000000..9fca7496bd --- /dev/null +++ b/charts/syncthing/1.0.19/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common/2207.0.0 + version: 2207.0.0 +digest: sha256:a301ba0f99ec1e08a60a7f0a0320aa02d225993572f2f056f09520f06df88b37 +generated: "2023-03-21T16:55:13.420478187Z" diff --git a/charts/syncthing/1.0.19/Chart.yaml b/charts/syncthing/1.0.19/Chart.yaml new file mode 100644 index 0000000000..febf37fa90 --- /dev/null +++ b/charts/syncthing/1.0.19/Chart.yaml @@ -0,0 +1,24 @@ +name: syncthing +description: Syncthing is a continuous file synchronization program. +annotations: + title: Syncthing +type: application +version: 1.0.19 +apiVersion: v2 +appVersion: '1.23.2' +kubeVersion: '>=1.16.0-0' +maintainers: + - name: truenas + url: https://www.truenas.com/ +dependencies: + - name: common + repository: file://../../../common/2207.0.0 + version: 2207.0.0 +home: https://syncthing.net/ +icon: https://play-lh.googleusercontent.com/KIy_dqUdZqcsTq4GDstHrHwLRvu60gT3v0p41gw792BC6OxamNhUw2eIy0-LI05qNEA=w240-h480 +sources: + - https://syncthing.net + - https://github.com/truenas/charts/tree/master/library/ix-dev/charts/syncthing +keywords: + - storage + - backup diff --git a/charts/syncthing/1.0.19/README.md b/charts/syncthing/1.0.19/README.md new file mode 100644 index 0000000000..ea0896841d --- /dev/null +++ b/charts/syncthing/1.0.19/README.md @@ -0,0 +1,5 @@ +# Syncthing + +[syncthing](https://syncthing.net/) is a continuous file synchronization program. It synchronizes files between two or +more computers in real time, safely protected from prying eyes. Your data is your data alone and you deserve to choose +where it is stored, whether it is shared with some third party, and how it's transmitted over the internet. diff --git a/charts/syncthing/1.0.19/app-readme.md b/charts/syncthing/1.0.19/app-readme.md new file mode 100644 index 0000000000..9f0f625bcf --- /dev/null +++ b/charts/syncthing/1.0.19/app-readme.md @@ -0,0 +1,6 @@ +# Syncthing + +[syncthing](https://syncthing.net/) is a continuous file synchronization program. It synchronizes files between two or +more computers in real time, safely protected from prying eyes. + +> **WARNING** Do check out https://docs.syncthing.net/users/faq.html#what-things-are-synced to see what is synced. diff --git a/charts/syncthing/1.0.19/charts/common-2207.0.0.tgz b/charts/syncthing/1.0.19/charts/common-2207.0.0.tgz new file mode 100644 index 0000000000..5b18dad37f Binary files /dev/null and b/charts/syncthing/1.0.19/charts/common-2207.0.0.tgz differ diff --git a/charts/syncthing/1.0.19/ci/test-values.yaml b/charts/syncthing/1.0.19/ci/test-values.yaml new file mode 100644 index 0000000000..c7a3504c57 --- /dev/null +++ b/charts/syncthing/1.0.19/ci/test-values.yaml @@ -0,0 +1,16 @@ +appVolumeMounts: + config: + emptyDir: true + mountPath: /config +dnsConfig: + options: [] +emptyDirVolumes: true +environmentVariables: [] +extraAppVolumeMounts: [] +hostNetwork: false +ownerGID: 568 +ownerUID: 568 +tcp_port: 32001 +timezone: Europe/London +udp_port: 32002 +web_port: 32000 diff --git a/charts/syncthing/1.0.19/ix_values.yaml b/charts/syncthing/1.0.19/ix_values.yaml new file mode 100644 index 0000000000..745a2fc659 --- /dev/null +++ b/charts/syncthing/1.0.19/ix_values.yaml @@ -0,0 +1,4 @@ +image: + pullPolicy: IfNotPresent + repository: syncthing/syncthing + tag: 1.23.2 diff --git a/charts/syncthing/1.0.19/questions.yaml b/charts/syncthing/1.0.19/questions.yaml new file mode 100644 index 0000000000..bb5ee3d82e --- /dev/null +++ b/charts/syncthing/1.0.19/questions.yaml @@ -0,0 +1,218 @@ +groups: + - name: "Configuration" + description: "Syncthing application configuration" + - name: "Storage" + description: "Configure storage for syncthing" + - name: "Networking" + description: "Networking Configuration for syncthing" + - name: "Advanced DNS Settings" + description: "Configure DNS settings" + - name: "Resource Limits" + description: "Set CPU/memory limits for Kubernetes Pod" + +portals: + web_portal: + protocols: + - "http" + host: + - "$node_ip" + ports: + - "$variable-web_port" + path: "/" + +questions: + - variable: web_port + label: "Web Port for syncthing" + group: Networking + schema: + type: int + min: 8000 + max: 65535 + default: 20910 + required: true + - variable: tcp_port + label: "TCP Port for syncthing" + group: Networking + schema: + type: int + min: 8000 + max: 65535 + default: 20978 + required: true + - variable: udp_port + label: "UDP Port for syncthing" + group: Networking + schema: + type: int + min: 8000 + max: 65535 + default: 20979 + required: true + - variable: hostNetwork + label: "Host Network" + group: Networking + schema: + type: boolean + default: false + + - variable: dnsConfig + label: "DNS Configuration" + group: "Advanced DNS Settings" + schema: + type: dict + attrs: + - variable: options + label: "DNS Options" + schema: + type: list + items: + - variable: optionsEntry + label: "Option Entry Configuration" + schema: + type: dict + attrs: + - variable: name + label: "Option Name" + schema: + type: string + required: true + - variable: value + label: "Option Value" + schema: + type: string + required: true + + - variable: ownerUID + label: "Owner User ID" + group: Configuration + schema: + type: int + default: 568 + min: 1 + max: 65535 + + - variable: ownerGID + label: "Owner Group ID" + group: Configuration + schema: + type: int + default: 568 + min: 1 + max: 65535 + + - variable: environmentVariables + label: "Syncthing environment" + group: "Configuration" + schema: + type: list + default: [ ] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: appVolumeMounts + label: "Syncthing Storage" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "Configuration Volume" + schema: + type: dict + attrs: + - variable: datasetName + label: "Configuration Volume Dataset Name" + schema: + type: string + hidden: true + $ref: + - "normalize/ixVolume" + show_if: [["hostPathEnabled", "=", false]] + default: "ix-syncthing_config" + editable: false + - variable: mountPath + label: "Configuration Mount Path" + description: "Path where the volume will be mounted inside the pod" + schema: + type: path + hidden: true + editable: true + default: "/var/syncthing" + - variable: hostPathEnabled + label: "Enable Custom Host Path for Syncthing Configuration Volume" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostPath + label: "Host Path for Syncthing Configuration Volume" + schema: + type: hostpath + required: true + $ref: + - "validations/lockedHostPath" + - variable: extraAppVolumeMounts + label: "Extra Host Path Volumes" + group: "Storage" + schema: + type: list + items: + - variable: extraAppVolume + label: "Host Path Volume" + description: "Add an extra host path volume for Syncthing application" + schema: + type: dict + attrs: + - variable: mountPath + label: "Mount Path in Pod" + description: "Path where the volume will be mounted inside the pod" + schema: + type: path + required: true + - variable: hostPath + label: "Host Path" + description: "Host path" + schema: + type: hostpath + required: true + $ref: + - "validations/lockedHostPath" + + - variable: enableResourceLimits + label: "Enable Pod resource limits" + group: "Resource Limits" + schema: + type: boolean + default: false + - variable: cpuLimit + label: "CPU Limresource limitsit" + description: "CPU resource limit allow plain integer values with suffix m(milli) e.g 1000m, 100." + group: "Resource Limits" + schema: + type: string + show_if: [["enableResourceLimits", "=", true]] + valid_chars: "^\\d+(?:\\.\\d+(?!.*m$)|m?$)" + default: "4000m" + - variable: memLimit + label: "Memory Limit" + group: "Resource Limits" + description: "Memory limits is specified by number of bytes. Followed by quantity suffix like E,P,T,G,M,k and Ei,Pi,Ti,Mi,Gi,Ki can also be used. e.g 129e6, 129M, 128974848000m, 123Mi" + schema: + type: string + show_if: [["enableResourceLimits", "=", true]] + valid_chars: "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" + default: "8Gi" + diff --git a/charts/syncthing/1.0.19/templates/deployment.yaml b/charts/syncthing/1.0.19/templates/deployment.yaml new file mode 100644 index 0000000000..43c0a48d2d --- /dev/null +++ b/charts/syncthing/1.0.19/templates/deployment.yaml @@ -0,0 +1,89 @@ +{{ include "common.storage.hostPathValidate" .Values }} +apiVersion: {{ template "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ template "common.names.fullname" . }} + labels: + app: {{ template "common.names.name" . }} + chart: {{ template "common.names.chart" . }} + release: {{ .Release.Name }} + heritage: {{ .Release.Service }} + annotations: + rollme: {{ randAlphaNum 5 | quote }} +spec: + replicas: {{ (default 1 .Values.replicas) }} + strategy: + type: "Recreate" + selector: + matchLabels: + app: {{ template "common.names.name" . }} + release: {{ .Release.Name }} + template: + metadata: + name: {{ template "common.names.fullname" . }} + labels: + app: {{ template "common.names.name" . }} + release: {{ .Release.Name }} + {{- include "common.labels.selectorLabels" . | nindent 8 }} + annotations: {{ include "common.annotations" . | nindent 8 }} + spec: + hostNetwork: {{ .Values.hostNetwork }} + hostname: {{ .Release.Name }} + containers: + - name: {{ .Chart.Name }} + {{ include "common.resources.limitation" . | nindent 10 }} + {{ include "common.containers.imageConfig" .Values.image | nindent 10 }} + volumeMounts: {{ include "common.storage.configureAppVolumeMountsInContainer" .Values | nindent 12 }} + {{ range $index, $hostPathConfiguration := .Values.extraAppVolumeMounts }} + - name: extrappvolume-{{ $index }} + mountPath: {{ $hostPathConfiguration.mountPath }} + {{ end }} + ports: + - name: web + containerPort: 8384 + - name: tcp + containerPort: 22000 + protocol: TCP + - name: udp + containerPort: 22000 + protocol: UDP + readinessProbe: + httpGet: + path: / + port: 8384 + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 5 + successThreshold: 2 + livenessProbe: + httpGet: + path: / + port: 8384 + initialDelaySeconds: 10 + periodSeconds: 10 + timeoutSeconds: 5 + failureThreshold: 5 + successThreshold: 1 + startupProbe: + httpGet: + path: / + port: 8384 + initialDelaySeconds: 10 + periodSeconds: 5 + timeoutSeconds: 2 + failureThreshold: 60 + successThreshold: 1 + env: + {{ $envList := (default list .Values.environmentVariables) }} + {{ $envList = mustAppend $envList (dict "name" "PUID" "value" (printf "%d" (.Values.ownerUID | int))) }} + {{ $envList = mustAppend $envList (dict "name" "PGID" "value" (printf "%d" (.Values.ownerGID | int))) }} + {{ $envList = mustAppend $envList (dict "name" "STGUIADDRESS" "value" "0.0.0.0:8384") }} + {{ include "common.containers.environmentVariables" (dict "environmentVariables" $envList) | nindent 12 }} +{{ include "common.networking.dnsConfiguration" .Values | nindent 6 }} + volumes: {{ include "common.storage.configureAppVolumes" .Values | nindent 8 }} + {{ range $index, $hostPathConfiguration := .Values.extraAppVolumeMounts }} + - name: extrappvolume-{{ $index }} + hostPath: + path: {{ $hostPathConfiguration.hostPath }} + {{ end }} diff --git a/charts/syncthing/1.0.19/templates/pre-install-job.yaml b/charts/syncthing/1.0.19/templates/pre-install-job.yaml new file mode 100644 index 0000000000..33c4cfb113 --- /dev/null +++ b/charts/syncthing/1.0.19/templates/pre-install-job.yaml @@ -0,0 +1,32 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: "{{ template "common.names.fullname" . }}-preinstall-job" + labels: + app.kubernetes.io/managed-by: {{ .Release.Service | quote }} + app.kubernetes.io/instance: {{ .Release.Name | quote }} + app.kubernetes.io/version: {{ .Chart.AppVersion }} + helm.sh/chart: {{ template "common.names.chart" . }} + annotations: + "helm.sh/hook": pre-install + "helm.sh/hook-delete-policy": hook-succeeded +spec: + template: + metadata: + name: "{{ template "common.names.fullname" . }}-preinstall-hook" + labels: + app.kubernetes.io/managed-by: {{ .Release.Service | quote }} + app.kubernetes.io/instance: {{ .Release.Name | quote }} + helm.sh/chart: {{ template "common.names.chart" . }} + spec: + restartPolicy: Never + containers: + - name: pre-install-job + image: "alpine:latest" + command: + - "chown" + - "-R" + - "{{ .Values.ownerUID }}:{{ .Values.ownerGID }}" + - "{{ .Values.appVolumeMounts.config.mountPath }}" + volumeMounts: {{ include "common.storage.configureAppVolumeMountsInContainer" .Values | nindent 12 }} + volumes: {{ include "common.storage.configureAppVolumes" .Values | nindent 8 }} diff --git a/charts/syncthing/1.0.19/templates/service.yaml b/charts/syncthing/1.0.19/templates/service.yaml new file mode 100644 index 0000000000..a35d1ffe18 --- /dev/null +++ b/charts/syncthing/1.0.19/templates/service.yaml @@ -0,0 +1,11 @@ +{{ $selectors := list }} +{{ $selectors = mustAppend $selectors (dict "key" "app" "value" (include "common.names.name" .) ) }} +{{ $selectors = mustAppend $selectors (dict "key" "release" "value" .Release.Name ) }} +{{ $ports := list }} +{{ $ports = mustAppend $ports (dict "name" "web" "port" .Values.web_port "nodePort" .Values.web_port "targetPort" 8384) }} +{{ $ports = mustAppend $ports (dict "name" "tcp" "port" .Values.tcp_port "nodePort" .Values.tcp_port "targetPort" 22000) }} +{{ $ports = mustAppend $ports (dict "name" "udp" "port" .Values.udp_port "nodePort" .Values.udp_port "targetPort" 22000 "protocol" "UDP") }} +{{ $params := . }} +{{ $_ := set $params "commonService" (dict "type" "NodePort" "ports" $ports ) }} +{{ $_1 := set .Values "extraSelectorLabels" $selectors }} +{{ include "common.classes.service" $params }} diff --git a/charts/syncthing/item.yaml b/charts/syncthing/item.yaml new file mode 100644 index 0000000000..9ccc95b11c --- /dev/null +++ b/charts/syncthing/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://play-lh.googleusercontent.com/KIy_dqUdZqcsTq4GDstHrHwLRvu60gT3v0p41gw792BC6OxamNhUw2eIy0-LI05qNEA=w240-h480 +categories: +- backup +- storage