From 8ea6c8bc84f36589e61b964786fbfd02bbda34cd Mon Sep 17 00:00:00 2001 From: sonicaj Date: Wed, 6 Sep 2023 12:40:06 +0000 Subject: [PATCH] Publish new changes in catalog --- community/piwigo/1.0.0/Chart.lock | 6 + community/piwigo/1.0.0/Chart.yaml | 25 + community/piwigo/1.0.0/README.md | 13 + community/piwigo/1.0.0/app-readme.md | 13 + .../piwigo/1.0.0/charts/common-1.1.0.tgz | Bin 0 -> 61699 bytes community/piwigo/1.0.0/ci/basic-values.yaml | 26 + community/piwigo/1.0.0/ix_values.yaml | 38 ++ community/piwigo/1.0.0/metadata.yaml | 20 + community/piwigo/1.0.0/questions.yaml | 526 ++++++++++++++++++ community/piwigo/1.0.0/templates/NOTES.txt | 1 + .../piwigo/1.0.0/templates/_configuration.tpl | 45 ++ community/piwigo/1.0.0/templates/_mariadb.tpl | 6 + .../piwigo/1.0.0/templates/_persistance.tpl | 68 +++ community/piwigo/1.0.0/templates/_piwigo.tpl | 83 +++ community/piwigo/1.0.0/templates/_portal.tpl | 12 + community/piwigo/1.0.0/templates/_service.tpl | 27 + community/piwigo/1.0.0/templates/common.yaml | 13 + community/piwigo/item.yaml | 9 + 18 files changed, 931 insertions(+) create mode 100644 community/piwigo/1.0.0/Chart.lock create mode 100644 community/piwigo/1.0.0/Chart.yaml create mode 100644 community/piwigo/1.0.0/README.md create mode 100644 community/piwigo/1.0.0/app-readme.md create mode 100644 community/piwigo/1.0.0/charts/common-1.1.0.tgz create mode 100644 community/piwigo/1.0.0/ci/basic-values.yaml create mode 100644 community/piwigo/1.0.0/ix_values.yaml create mode 100644 community/piwigo/1.0.0/metadata.yaml create mode 100644 community/piwigo/1.0.0/questions.yaml create mode 100644 community/piwigo/1.0.0/templates/NOTES.txt create mode 100644 community/piwigo/1.0.0/templates/_configuration.tpl create mode 100644 community/piwigo/1.0.0/templates/_mariadb.tpl create mode 100644 community/piwigo/1.0.0/templates/_persistance.tpl create mode 100644 community/piwigo/1.0.0/templates/_piwigo.tpl create mode 100644 community/piwigo/1.0.0/templates/_portal.tpl create mode 100644 community/piwigo/1.0.0/templates/_service.tpl create mode 100644 community/piwigo/1.0.0/templates/common.yaml create mode 100644 community/piwigo/item.yaml diff --git a/community/piwigo/1.0.0/Chart.lock b/community/piwigo/1.0.0/Chart.lock new file mode 100644 index 0000000000..3c179d939e --- /dev/null +++ b/community/piwigo/1.0.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.1.0 +digest: sha256:752ce76025f5b61094bd2b18ca11693eb9d26d0dde4eb2e63cd2330cbffe9e73 +generated: "2023-08-30T16:50:36.550048634+03:00" diff --git a/community/piwigo/1.0.0/Chart.yaml b/community/piwigo/1.0.0/Chart.yaml new file mode 100644 index 0000000000..90b17e3260 --- /dev/null +++ b/community/piwigo/1.0.0/Chart.yaml @@ -0,0 +1,25 @@ +name: piwigo +description: Piwigo is a photo gallery software for the web that comes with powerful features to publish and manage your collection of pictures. +annotations: + title: Piwigo +type: application +version: 1.0.0 +apiVersion: v2 +appVersion: 13.8.0 +kubeVersion: '>=1.16.0-0' +maintainers: + - name: truenas + url: https://www.truenas.com/ + email: dev@ixsystems.com +dependencies: + - name: common + repository: file://../../../common + version: 1.1.0 +home: https://piwigo.org +icon: https://piwigo.org/plugins/piwigo-piwigodotorg/images/piwigo.org.svg +sources: + - https://hub.docker.com/r/linuxserver/piwigo + - https://github.com/truenas/charts/tree/master/community/piwigo +keywords: + - gallery + - photo diff --git a/community/piwigo/1.0.0/README.md b/community/piwigo/1.0.0/README.md new file mode 100644 index 0000000000..a43143cd69 --- /dev/null +++ b/community/piwigo/1.0.0/README.md @@ -0,0 +1,13 @@ +# Piwigo + +[Piwigo](https://piwigo.org/) is a photo gallery software for the web that comes with powerful features to +publish and manage your collection of pictures. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `mariadb` directories. +> Afterwards `mariadb` will start as a **non**-root user (`999`).> +> On each upgrade, a container will be launched with **root** privileges in order to +> apply the correct permissions to the `mariadb` **backups** directory. +> Container that performs the backup will run as a **non**-root user (`999`) afterwards. +> Keep in mind the permissions on the backup directory will be changed to `999:999` on **every** update. +> But will only be changed once for the `mariadb` data directories. diff --git a/community/piwigo/1.0.0/app-readme.md b/community/piwigo/1.0.0/app-readme.md new file mode 100644 index 0000000000..a43143cd69 --- /dev/null +++ b/community/piwigo/1.0.0/app-readme.md @@ -0,0 +1,13 @@ +# Piwigo + +[Piwigo](https://piwigo.org/) is a photo gallery software for the web that comes with powerful features to +publish and manage your collection of pictures. + +> When application is installed, a container will be launched with **root** privileges. +> This is required in order to apply the correct permissions to the `mariadb` directories. +> Afterwards `mariadb` will start as a **non**-root user (`999`).> +> On each upgrade, a container will be launched with **root** privileges in order to +> apply the correct permissions to the `mariadb` **backups** directory. +> Container that performs the backup will run as a **non**-root user (`999`) afterwards. +> Keep in mind the permissions on the backup directory will be changed to `999:999` on **every** update. +> But will only be changed once for the `mariadb` data directories. diff --git a/community/piwigo/1.0.0/charts/common-1.1.0.tgz b/community/piwigo/1.0.0/charts/common-1.1.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..1edd2618e03a9280ffe9daea8e442f3c2cdfb6d9 GIT binary patch literal 61699 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 literal 0 HcmV?d00001 diff --git a/community/piwigo/1.0.0/ci/basic-values.yaml b/community/piwigo/1.0.0/ci/basic-values.yaml new file mode 100644 index 0000000000..01a4959966 --- /dev/null +++ b/community/piwigo/1.0.0/ci/basic-values.yaml @@ -0,0 +1,26 @@ +piwiNetwork: + webPort: 31000 + +piwiConfig: + language: en_GB + adminName: admin + adminMail: admin@example.com + adminPass: admin + +piwiID: + user: 1000 + group: 1000 + +piwiStorage: + config: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/config + gallery: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/gallery + mariadbData: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/mariadbData + mariadbBackup: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/mariadbBackup diff --git a/community/piwigo/1.0.0/ix_values.yaml b/community/piwigo/1.0.0/ix_values.yaml new file mode 100644 index 0000000000..d2ad5798b8 --- /dev/null +++ b/community/piwigo/1.0.0/ix_values.yaml @@ -0,0 +1,38 @@ +image: + repository: linuxserver/piwigo + pullPolicy: IfNotPresent + tag: 13.8.0 + +resources: + limits: + cpu: 4000m + memory: 8Gi + +piwiConfig: + language: '' + adminName: '' + adminMail: '' + adminPass: '' + additionalEnvs: [] + +piwiNetwork: + webPort: 30066 + +piwiID: + user: 568 + group: 568 + +piwiStorage: + config: + type: ixVolume + datasetName: config + gallery: + type: ixVolume + datasetName: gallery + mariadbData: + type: ixVolume + datasetName: mariadbData + mariadbBackup: + type: ixVolume + datasetName: mariadbBackup + additionalStorages: [] diff --git a/community/piwigo/1.0.0/metadata.yaml b/community/piwigo/1.0.0/metadata.yaml new file mode 100644 index 0000000000..5a444ff9d3 --- /dev/null +++ b/community/piwigo/1.0.0/metadata.yaml @@ -0,0 +1,20 @@ +runAsContext: + - userName: root + groupName: root + gid: 0 + uid: 0 + description: Piwigo run as root user +capabilities: + - name: CHOWN + description: Piwigo is able to chown files. + - name: DAC_OVERRIDE + description: Piwigo is able to bypass permission checks. + - name: FOWNER + description: Piwigo is able bypass permission checks for it's sub-processes. + - name: NET_BIND_SERVICE + description: Piwigo requires this ability to bind to port 80 within the container. + - name: SETGID + description: Piwigo is able to set group ID for it's sub-processes. + - name: SETUID + description: Piwigo is able to set user ID for it's sub-processes. +hostMounts: [] diff --git a/community/piwigo/1.0.0/questions.yaml b/community/piwigo/1.0.0/questions.yaml new file mode 100644 index 0000000000..412de114fd --- /dev/null +++ b/community/piwigo/1.0.0/questions.yaml @@ -0,0 +1,526 @@ +groups: + - name: Piwigo Configuration + description: Configure Piwigo + - name: User and Group Configuration + description: Configure User and Group for Piwigo + - name: Network Configuration + description: Configure Network for Piwigo + - name: Storage Configuration + description: Configure Storage for Piwigo + - name: Resources Configuration + description: Configure Resources for Piwigo + +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" + path: "$kubernetes-resource_configmap_portal_path" + +questions: + - variable: piwiConfig + label: "" + group: Piwigo Configuration + schema: + type: dict + attrs: + - variable: adminName + label: Admin Name + description: | + The admin name for Piwigo.
+ Only used when Piwigo is first installed.
+ You can change it later in the Piwigo WebUI. + schema: + type: string + required: true + immutable: true + default: "" + - variable: adminMail + label: Admin Mail + description: | + The admin mail for Piwigo.
+ Only used when Piwigo is first installed.
+ You can change it later in the Piwigo WebUI. + schema: + type: string + required: true + immutable: true + default: "" + - variable: adminPass + label: Admin Password + description: | + The admin password for Piwigo.
+ Only used when Piwigo is first installed.
+ You can change it later in the Piwigo WebUI. + schema: + type: string + required: true + immutable: true + password: true + default: "" + - variable: language + label: Language + description: | + The language for Piwigo.
+ Only used when Piwigo is first installed. + schema: + type: string + required: true + immutable: true + default: "en_UK" + enum: + - value: af_ZA + description: Afrikaans [ZA] + - value: es_AR + description: Argentina [AR] + - value: az_AZ + description: Azərbaycanca [AZ] + - value: id_ID + description: Bahasa Indonesia [ID] + - value: pt_BR + description: Brasil [BR] + - value: br_FR + description: Brezhoneg [FR] + - value: ca_ES + description: Català [CA] + - value: da_DK + description: Dansk [DK] + - value: de_DE + description: Deutsch [DE] + - value: dv_MV + description: Dhivehi [MV] + - value: en_GB + description: English [GB] + - value: en_UK + description: English [UK] + - value: en_US + description: English [US] + - value: es_ES + description: Español [ES] + - value: eo_EO + description: Esperanto [EO] + - value: et_EE + description: Estonian [EE] + - value: eu_ES + description: Euskara [ES] + - value: fi_FI + description: Finnish [FI] + - value: fr_FR + description: Français [FR] + - value: fr_CA + description: Français [QC] + - value: ga_IE + description: Gaeilge [IE] + - value: gl_ES + description: Galego [ES] + - value: hr_HR + description: Hrvatski [HR] + - value: it_IT + description: Italiano [IT] + - value: lv_LV + description: Latviešu [LV] + - value: lt_LT + description: Lietuviu [LT] + - value: lb_LU + description: Lëtzebuergesch [LU] + - value: hu_HU + description: Magyar [HU] + - value: ms_MY + description: Malay [MY] + - value: es_MX + description: México [MX] + - value: nl_NL + description: Nederlands [NL] + - value: nb_NO + description: Norsk bokmål [NO] + - value: nn_NO + description: Norwegian nynorsk [NO] + - value: pl_PL + description: Polski [PL] + - value: pt_PT + description: Português [PT] + - value: ro_RO + description: Română [RO] + - value: sk_SK + description: Slovensky [SK] + - value: sl_SI + description: Slovenšcina [SI] + - value: sh_RS + description: Srpski [SR] + - value: sv_SE + description: Svenska [SE] + - value: vi_VN + description: Tiếng Việt [VN] + - value: tr_TR + description: Türkçe [TR] + - value: wo_SN + description: Wolof [SN] + - value: is_IS + description: Íslenska [IS] + - value: cs_CZ + description: Česky [CZ] + - value: el_GR + description: Ελληνικά [GR] + - value: bg_BG + description: Български [BG] + - value: mk_MK + description: Македонски [MK] + - value: mn_MN + description: Монгол [MN] + - value: ru_RU + description: Русский [RU] + - value: sr_RS + description: Српски [SR] + - value: uk_UA + description: Українська [UA] + - value: he_IL + description: עברית [IL] + - value: ar_EG + description: العربية (مص + - value: ar_SA + description: العربية [AR] + - value: ar_MA + description: العربية [MA] + - value: fa_IR + description: پارسی [IR] + - value: kok_IN + description: कोंकणी [IN] + - value: bn_IN + description: বাংলা[IN] + - value: gu_IN + description: ગુજરાતી[IN] + - value: ta_IN + description: தமிழ் [IN] + - value: kn_IN + description: ಕನ್ನಡ [IN] + - value: th_TH + description: ภาษาไทย [TH] + - value: ka_GE + description: ქართული [GE] + - value: km_KH + description: ខ្មែរ [KH] + - value: zh_TW + description: 中文 (繁體) [TW] + - value: zh_HK + description: 中文 (香港) [HK] + - value: ja_JP + description: 日本語 [JP] + - value: zh_CN + description: 简体中文 [CN] + - value: ko_KR + description: 한국어 [KR] + + - variable: additionalEnvs + label: Additional Environment Variables + description: Configure additional environment variables for Piwigo. + schema: + type: list + default: [] + items: + - variable: env + label: Environment Variable + schema: + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: piwiID + label: "" + group: User and Group Configuration + schema: + type: dict + attrs: + - variable: user + label: User ID + description: The user id that Piwigo files will be owned by. + schema: + type: int + min: 2 + default: 568 + required: true + - variable: group + label: Group ID + description: The group id that Piwigo files will be owned by. + schema: + type: int + min: 2 + default: 568 + required: true + + - variable: piwiNetwork + label: "" + group: Network Configuration + schema: + type: dict + attrs: + - variable: webPort + label: Web Port + description: The port for the Piwigo WebUI. + schema: + type: int + default: 30066 + min: 9000 + max: 65535 + required: true + + - variable: piwiStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: config + label: Piwigo Configuration Storage + description: The path to store Piwigo configuration. + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
+ Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: ixVolume + enum: + - value: hostPath + description: Host Path (Path that already exists on the system) + - value: ixVolume + description: ixVolume (Dataset created automatically by the system) + - variable: datasetName + label: Dataset Name + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + hidden: true + immutable: true + default: config + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + - variable: gallery + label: Piwigo Gallery Storage + description: The path to store Piwigo gallery. + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
+ Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: ixVolume + enum: + - value: hostPath + description: Host Path (Path that already exists on the system) + - value: ixVolume + description: ixVolume (Dataset created automatically by the system) + - variable: datasetName + label: Dataset Name + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + hidden: true + immutable: true + default: gallery + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + - variable: mariadbData + label: Piwigo MariaDB Data Storage + description: The path to store Piwigo MariaDB Data. + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
+ Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: ixVolume + enum: + - value: hostPath + description: Host Path (Path that already exists on the system) + - value: ixVolume + description: ixVolume (Dataset created automatically by the system) + - variable: datasetName + label: Dataset Name + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + hidden: true + immutable: true + default: mariadbData + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + - variable: mariadbBackup + label: Piwigo MariaDB Backup Storage + description: The path to store Piwigo MariaDB Backup. + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
+ Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: ixVolume + enum: + - value: hostPath + description: Host Path (Path that already exists on the system) + - value: ixVolume + description: ixVolume (Dataset created automatically by the system) + - variable: datasetName + label: Dataset Name + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + hidden: true + immutable: true + default: mariadbBackup + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + - variable: additionalStorages + label: Additional Storage + description: Additional storage for Piwigo. + schema: + type: list + default: [] + items: + - variable: storageEntry + label: Storage Entry + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
+ Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: "ixVolume" + enum: + - value: "hostPath" + description: Host Path (Path that already exists on the system) + - value: "ixVolume" + description: ixVolume (Dataset created automatically by the system) + - variable: mountPath + label: Mount Path + description: The path inside the container to mount the storage. + schema: + type: path + required: true + - variable: hostPath + label: Host Path + description: The host path to use for storage. + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + required: true + - variable: datasetName + label: Dataset Name + description: The name of the dataset to use for storage. + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + immutable: true + default: "storage_entry" + $ref: + - "normalize/ixVolume" + + - variable: resources + label: "" + group: Resources Configuration + schema: + type: dict + attrs: + - variable: limits + label: Limits + schema: + type: dict + attrs: + - variable: cpu + label: CPU + description: CPU limit for Piwigo. + schema: + type: string + max_length: 6 + valid_chars: '^(0\.[1-9]|[1-9][0-9]*)(\.[0-9]|m?)$' + valid_chars_error: | + Valid CPU limit formats are
+ - Plain Integer - eg. 1
+ - Float - eg. 0.5
+ - Milicpu - eg. 500m + default: "4000m" + required: true + - variable: memory + label: Memory + description: Memory limit for Piwigo. + schema: + type: string + max_length: 12 + valid_chars: '^[1-9][0-9]*([EPTGMK]i?|e[0-9]+)?$' + valid_chars_error: | + Valid Memory limit formats are
+ - Suffixed with E/P/T/G/M/K - eg. 1G
+ - Suffixed with Ei/Pi/Ti/Gi/Mi/Ki - eg. 1Gi
+ - Plain Integer in bytes - eg. 1024
+ - Exponent - eg. 134e6 + default: "8Gi" + required: true diff --git a/community/piwigo/1.0.0/templates/NOTES.txt b/community/piwigo/1.0.0/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/community/piwigo/1.0.0/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/community/piwigo/1.0.0/templates/_configuration.tpl b/community/piwigo/1.0.0/templates/_configuration.tpl new file mode 100644 index 0000000000..ec7f0a6776 --- /dev/null +++ b/community/piwigo/1.0.0/templates/_configuration.tpl @@ -0,0 +1,45 @@ +{{- define "piwigo.configuration" -}} + + {{- $fullname := (include "ix.v1.common.lib.chart.names.fullname" $) -}} + + {{- $dbHost := (printf "%s-mariadb" $fullname) -}} + {{- $dbUser := "piwigo" -}} + {{- $dbName := "piwigo" -}} + + {{- $dbPass := (randAlphaNum 32) -}} + {{- $dbRootPass := (randAlphaNum 32) -}} + {{- with (lookup "v1" "Secret" .Release.Namespace (printf "%s-mariadb-creds" $fullname)) -}} + {{- $dbPass = ((index .data "MARIADB_PASSWORD") | b64dec) -}} + {{- $dbRootPass = ((index .data "MARIADB_ROOT_PASSWORD") | b64dec) -}} + {{- end }} +secret: + mariadb-creds: + enabled: true + data: + MARIADB_USER: {{ $dbUser }} + MARIADB_DATABASE: {{ $dbName }} + MARIADB_PASSWORD: {{ $dbPass }} + MARIADB_ROOT_PASSWORD: {{ $dbRootPass }} + MARIADB_HOST: {{ $dbHost }} + + {{- if not (mustRegexMatch "^.+@.+\\..+$" .Values.piwiConfig.adminMail) -}} + {{- fail (printf "Piwigo - Mail [%s] is not valid." .Values.piwiConfig.adminMail) -}} + {{- end -}} + {{- $installArgs := (list + (printf "language=%s" .Values.piwiConfig.language) + (printf "dbhost=%s" $dbHost) + (printf "dbuser=%s" $dbUser) + (printf "dbpasswd=%s" $dbPass) + (printf "dbname=%s" $dbName) + "prefix=piwigo_" + (printf "admin_name=%s" .Values.piwiConfig.adminName) + (printf "admin_pass1=%s" .Values.piwiConfig.adminPass) + (printf "admin_pass2=%s" .Values.piwiConfig.adminPass) + (printf "admin_mail=%s" .Values.piwiConfig.adminMail) + "install=Start+installation" + ) }} + piwigo-creds: + enabled: true + data: + INSTALL_STRING: {{ join "&" $installArgs }} +{{- end -}} diff --git a/community/piwigo/1.0.0/templates/_mariadb.tpl b/community/piwigo/1.0.0/templates/_mariadb.tpl new file mode 100644 index 0000000000..8a4c2bb771 --- /dev/null +++ b/community/piwigo/1.0.0/templates/_mariadb.tpl @@ -0,0 +1,6 @@ +{{- define "mariadb.workload" -}} +workload: +{{- include "ix.v1.common.app.mariadb" (dict "secretName" "mariadb-creds" + "resources" .Values.resources + "ixChartContext" .Values.ixChartContext) | nindent 2 }} +{{- end -}} diff --git a/community/piwigo/1.0.0/templates/_persistance.tpl b/community/piwigo/1.0.0/templates/_persistance.tpl new file mode 100644 index 0000000000..c748e02a85 --- /dev/null +++ b/community/piwigo/1.0.0/templates/_persistance.tpl @@ -0,0 +1,68 @@ +{{- define "piwigo.persistence" -}} +persistence: + config: + enabled: true + type: {{ .Values.piwiStorage.config.type }} + datasetName: {{ .Values.piwiStorage.config.datasetName | default "" }} + hostPath: {{ .Values.piwiStorage.config.hostPath | default "" }} + targetSelector: + piwigo: + piwigo: + mountPath: /config + gallery: + enabled: true + type: {{ .Values.piwiStorage.gallery.type }} + datasetName: {{ .Values.piwiStorage.gallery.datasetName | default "" }} + hostPath: {{ .Values.piwiStorage.gallery.hostPath | default "" }} + targetSelector: + piwigo: + piwigo: + mountPath: /gallery + tmp: + enabled: true + type: emptyDir + targetSelector: + piwigo: + piwigo: + mountPath: /tmp + {{- range $idx, $storage := .Values.piwiStorage.additionalStorages }} + {{ printf "piwi-%v" (int $idx) }}: + enabled: true + type: {{ $storage.type }} + datasetName: {{ $storage.datasetName | default "" }} + hostPath: {{ $storage.hostPath | default "" }} + targetSelector: + piwigo: + piwigo: + mountPath: {{ $storage.mountPath }} + {{- end }} + + mariadbdata: + enabled: true + type: {{ .Values.piwiStorage.mariadbData.type }} + datasetName: {{ .Values.piwiStorage.mariadbData.datasetName | default "" }} + hostPath: {{ .Values.piwiStorage.mariadbData.hostPath | default "" }} + targetSelector: + # MariaDB pod + mariadb: + # MariaDB container + mariadb: + mountPath: /var/lib/mysql + # MariaDB - Permissions container + permissions: + mountPath: /mnt/directories/mariadb_data + mariadbbackup: + enabled: true + type: {{ .Values.piwiStorage.mariadbBackup.type }} + datasetName: {{ .Values.piwiStorage.mariadbBackup.datasetName | default "" }} + hostPath: {{ .Values.piwiStorage.mariadbBackup.hostPath | default "" }} + targetSelector: + # MariaDB backup pod + mariadbbackup: + # MariaDB backup container + mariadbbackup: + mountPath: /mariadb_backup + # MariaDB - Permissions container + permissions: + mountPath: /mnt/directories/mariadb_backup +{{- end -}} diff --git a/community/piwigo/1.0.0/templates/_piwigo.tpl b/community/piwigo/1.0.0/templates/_piwigo.tpl new file mode 100644 index 0000000000..9d4755bd06 --- /dev/null +++ b/community/piwigo/1.0.0/templates/_piwigo.tpl @@ -0,0 +1,83 @@ +{{- define "piwigo.workload" -}} +workload: + piwigo: + enabled: true + primary: true + type: Deployment + podSpec: + hostNetwork: false + securityContext: + fsGroup: {{ .Values.piwiID.group }} + containers: + piwigo: + enabled: true + primary: true + imageSelector: image + securityContext: + runAsUser: 0 + runAsGroup: 0 + runAsNonRoot: false + readOnlyRootFilesystem: false + capabilities: + add: + - CHOWN + - DAC_OVERRIDE + - FOWNER + - NET_BIND_SERVICE + - SETGID + - SETUID + envFrom: + - secretRef: + name: piwigo-creds + fixedEnv: + PUID: {{ .Values.piwiID.user }} + {{ with .Values.piwiConfig.additionalEnvs }} + envList: + {{ range $env := . }} + - name: {{ $env.name }} + value: {{ $env.value }} + {{ end }} + {{ end }} + probes: + liveness: + enabled: true + type: http + # https://github.com/Piwigo/Piwigo/issues/1954 + path: /ws.php?method=pwg.session.getStatus + port: 80 + readiness: + enabled: true + type: http + path: /ws.php?method=pwg.session.getStatus + port: 80 + startup: + enabled: true + type: http + path: /ws.php?method=pwg.session.getStatus + port: 80 + lifecycle: + postStart: + type: exec + command: + - /bin/sh + - -c + - | + until curl --silent --fail --output /dev/null http://localhost:80; do + echo "Waiting for Piwigo to start..." + sleep 1 + done + if curl --silent --fail http://localhost:80/install.php | grep "Piwigo is already installed"; then + echo "Piwigo is already installed, skipping installation" + exit 0 + fi + echo "Installing Piwigo..." + curl -X POST -d "${INSTALL_STRING}" http://localhost:80/install.php + if curl --silent --fail http://localhost:80/install.php | grep "Piwigo is already installed"; then + echo "Piwigo is already installed, skipping installation" + exit 0 + fi + exit 1 + initContainers: + {{- include "ix.v1.common.app.mariadbWait" (dict "name" "mariadb-wait" + "secretName" "mariadb-creds") | nindent 8 }} +{{- end -}} diff --git a/community/piwigo/1.0.0/templates/_portal.tpl b/community/piwigo/1.0.0/templates/_portal.tpl new file mode 100644 index 0000000000..c14b820b64 --- /dev/null +++ b/community/piwigo/1.0.0/templates/_portal.tpl @@ -0,0 +1,12 @@ +{{- define "piwigo.portal" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: portal +data: + path: / + port: {{ .Values.piwiNetwork.webPort | quote }} + protocol: http + host: $node_ip +{{- end -}} diff --git a/community/piwigo/1.0.0/templates/_service.tpl b/community/piwigo/1.0.0/templates/_service.tpl new file mode 100644 index 0000000000..c7f3298ad0 --- /dev/null +++ b/community/piwigo/1.0.0/templates/_service.tpl @@ -0,0 +1,27 @@ +{{- define "piwigo.service" -}} +service: + piwigo: + enabled: true + primary: true + type: NodePort + targetSelector: piwigo + ports: + webui: + enabled: true + primary: true + port: {{ .Values.piwiNetwork.webPort }} + nodePort: {{ .Values.piwiNetwork.webPort }} + targetPort: 80 + targetSelector: piwigo + mariadb: + enabled: true + type: ClusterIP + targetSelector: mariadb + ports: + mariadb: + enabled: true + primary: true + port: 3306 + targetPort: 3306 + targetSelector: mariadb +{{- end -}} diff --git a/community/piwigo/1.0.0/templates/common.yaml b/community/piwigo/1.0.0/templates/common.yaml new file mode 100644 index 0000000000..a5cbb5e446 --- /dev/null +++ b/community/piwigo/1.0.0/templates/common.yaml @@ -0,0 +1,13 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "piwigo.configuration" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "piwigo.workload" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "piwigo.persistence" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "piwigo.service" $ | fromYaml) -}} +{{- $_ := mustMergeOverwrite .Values (include "mariadb.workload" $ | fromYaml) -}} + +{{/* Create the configmap for portal manually*/}} +{{- include "piwigo.portal" $ -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/community/piwigo/item.yaml b/community/piwigo/item.yaml new file mode 100644 index 0000000000..230f9560c8 --- /dev/null +++ b/community/piwigo/item.yaml @@ -0,0 +1,9 @@ +icon_url: https://piwigo.org/plugins/piwigo-piwigodotorg/images/piwigo.org.svg +categories: + - media +screenshots: + - https://piwigo.org/plugins/piwigo-piwigodotorg/images/features/features-hosting.jpg + - https://piwigo.org/plugins/piwigo-piwigodotorg/images/features/piwigo-features-batch-manager.jpg +tags: + - photo + - gallery