diff --git a/charts/minio/1.0.0/.helmignore b/charts/ipfs/1.0.1/.helmignore similarity index 100% rename from charts/minio/1.0.0/.helmignore rename to charts/ipfs/1.0.1/.helmignore diff --git a/charts/ipfs/1.0.1/Chart.yaml b/charts/ipfs/1.0.1/Chart.yaml new file mode 100644 index 0000000000..867b84777b --- /dev/null +++ b/charts/ipfs/1.0.1/Chart.yaml @@ -0,0 +1,18 @@ +apiVersion: v1 +description: Global, Versioned, peer-to-peer filesystem. +name: ipfs +version: 1.0.1 +appVersion: master +keywords: +- storage +- p2p +home: https://ipfs.io +icon: https://ipfs.io/ipfs/QmVk7srrwahXLNmcDYvyUEJptyoxpndnRa57YJ11L4jV26/ipfs.go.png +sources: +- https://github.com/ipfs/go-ipfs +- https://hub.docker.com/r/ipfs/go-ipfs +upstream_version: 0.8.0-rc1 +dependencies: + - name: common + repository: file://../../../library/common/2101.0.0 + version: 2101.0.0 diff --git a/charts/ipfs/1.0.1/README.md b/charts/ipfs/1.0.1/README.md new file mode 100755 index 0000000000..d6bdd49a12 --- /dev/null +++ b/charts/ipfs/1.0.1/README.md @@ -0,0 +1,22 @@ +IPFS +===== + +[IPFS](https://ipfs.io) is a global, versioned, peer-to-peer filesystem. It combines good ideas from previous systems such Git, BitTorrent, Kademlia, SFS, and the Web. It is like a single bittorrent swarm, exchanging git objects. IPFS provides an interface as simple as the HTTP web, but with permanence built in. You can also mount the world at /ipfs. + +Introduction +------------ + +This chart bootstraps IPFS deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. + + +Configuration +------------- + +The following table lists the configurable parameters of the IPFS chart and their default values. + +| Parameter | Description | Default | +|:-------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------------------------|:---------------------------------| +| `image.repository` | Image repository | `ipfs/go-ipfs` | +| `image.tag` | IPFS image tag. Possible values listed [here](https://hub.docker.com/r/ipfs/go-ipfs/tags). | `v0.8.0-rc1` | +| `image.pullPolicy` | Image pull policy | `IfNotPresent` | +| `extraArgs` | Additional command line arguments to pass to the IPFS server | `[]` | diff --git a/charts/ipfs/1.0.1/app-readme.md b/charts/ipfs/1.0.1/app-readme.md new file mode 100644 index 0000000000..dc481d47c8 --- /dev/null +++ b/charts/ipfs/1.0.1/app-readme.md @@ -0,0 +1 @@ +[IPFS](https://ipfs.io) is a global, versioned, peer-to-peer filesystem. It combines good ideas from previous systems such Git, BitTorrent, Kademlia, SFS, and the Web. It is like a single bittorrent swarm, exchanging git objects. IPFS provides an interface as simple as the HTTP web, but with permanence built in. You can also mount the world at /ipfs. diff --git a/charts/ipfs/1.0.1/charts/common-2101.0.0.tgz b/charts/ipfs/1.0.1/charts/common-2101.0.0.tgz new file mode 100644 index 0000000000..3a22457ea6 Binary files /dev/null and b/charts/ipfs/1.0.1/charts/common-2101.0.0.tgz differ diff --git a/charts/ipfs/1.0.1/default_values.yaml b/charts/ipfs/1.0.1/default_values.yaml new file mode 100644 index 0000000000..407c7a3732 --- /dev/null +++ b/charts/ipfs/1.0.1/default_values.yaml @@ -0,0 +1,27 @@ +## Set default image, imageTag, and imagePullPolicy. mode is used to indicate the +## +image: + repository: ipfs/go-ipfs + tag: v0.8.0-rc1 + pullPolicy: IfNotPresent + +## Additional arguments to pass to ipfs binary +extraArgs: [] + +updateStrategy: Recreate + +service: + swarmPort: 9401 + apiPort: 9501 + gatewayPort: 9080 + +environment: + +appVolumeMounts: + staging: + emptyDir: true + mountPath: "/export" + data: + emptyDir: true + mountPath: "/data/ipfs" + diff --git a/charts/ipfs/1.0.1/questions.yaml b/charts/ipfs/1.0.1/questions.yaml new file mode 100644 index 0000000000..b6fe95c464 --- /dev/null +++ b/charts/ipfs/1.0.1/questions.yaml @@ -0,0 +1,199 @@ +groups: + - name: "Container Images" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure Storage for IPFS" + - name: "Storage" + description: "Configure Storage for IPFS" + - name: "IPFS Configuration" + description: "Configure Storage for IPFS" + +portals: + web_portal: + protocols: + - "http" + host: + - "$node_ip" + ports: + - "$variable-service.apiPort" + path: "/webui" + +questions: + # Image related + - variable: image + description: "Docker Image Details" + label: "Docker Image" + group: "Container Images" + schema: + type: dict + required: true + attrs: + - variable: repository + description: "Docker image repository" + label: "Image repository" + schema: + type: string + default: "ipfs/go-ipfs" + required: true + - variable: tag + description: "Tag to use for specified image" + label: "Image Tag" + schema: + type: string + default: "v0.8.0-rc1" + - variable: pullPolicy + description: "Docker Image Pull Policy" + label: "Image Pull Policy" + schema: + type: string + default: "IfNotPresent" + enum: + - value: "IfNotPresent" + description: "Only pull image if not present on host" + - value: "Always" + description: "Always pull image even if present on host" + - value: "Never" + description: "Never pull image even if it's not present on host" + + - variable: updateStrategy + label: "IPFS update strategy" + group: "Workload Configuration" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + + - variable: environmentVariables + label: "IPFS image environment" + group: "IPFS 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: service + description: "IPFS Service Configuration" + label: "IPFS Service Configuration" + group: "IPFS Configuration" + schema: + type: dict + required: true + attrs: + - variable: swarmPort + label: "Swarm Port to use for IPFS (Public)" + schema: + type: int + min: 9000 + max: 65535 + default: 9401 + required: true + - variable: apiPort + label: "API Port to use for IPFS (local)" + schema: + type: int + min: 9000 + max: 65535 + default: 9501 + required: true + - variable: gatewayPort + label: "Gateway Port to use for IPFS (local)" + schema: + type: int + min: 9000 + max: 65535 + default: 9880 + required: true + + - variable: appVolumeMounts + label: "IPFS Storage" + group: "Storage" + schema: + type: dict + attrs: + - variable: staging + label: "Staging Volume" + schema: + type: dict + attrs: + - variable: datasetName + label: "IPFS Staging Volume Dataset Name" + schema: + type: string + hidden: true + $ref: + - "normalize/ixVolume" + show_if: [["hostPathEnabled", "=", false]] + default: "ix-ipfs-staging" + editable: false + - variable: mountPath + label: "IPFS Staging Mount Path" + description: "Path where the volume will be mounted inside the pod" + schema: + type: path + hidden: true + editable: false + default: "/export" + - variable: hostPathEnabled + label: "Enable Host Path for IPFS Staging Volume" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostPath + label: "Host Path for IPFS Staging Volume" + schema: + type: hostpath + required: true + - variable: data + label: "Data Volume" + schema: + type: dict + attrs: + - variable: datasetName + label: "IPFS Data Volume Name" + schema: + type: string + hidden: true + $ref: + - "normalize/ixVolume" + show_if: [["hostPathEnabled", "=", false]] + default: "ix-ipfs-data" + editable: false + - variable: mountPath + label: "IPFS Data Mount Path" + description: "Path where the volume will be mounted inside the pod" + schema: + type: path + hidden: true + editable: false + default: "/data/ipfs" + - variable: hostPathEnabled + label: "Enable Host Path for IPFS Data Volume" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostPath + label: "Host Path for IPFS Data Volume" + schema: + type: hostpath + required: true diff --git a/charts/ipfs/1.0.1/requirements.lock b/charts/ipfs/1.0.1/requirements.lock new file mode 100644 index 0000000000..114aabb0a7 --- /dev/null +++ b/charts/ipfs/1.0.1/requirements.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../library/common/2101.0.0 + version: 2101.0.0 +digest: sha256:6ab46f958de11ae6a24d8f7e18417aa9852a8d968d5b0cc94ffa4700449931d6 +generated: "2021-02-04T01:15:55.312886+05:00" diff --git a/charts/ipfs/1.0.1/templates/NOTES.txt b/charts/ipfs/1.0.1/templates/NOTES.txt new file mode 100644 index 0000000000..cb1d892a3b --- /dev/null +++ b/charts/ipfs/1.0.1/templates/NOTES.txt @@ -0,0 +1,2 @@ +IPFS can be accessed from the following URL: +http://$node_ip:{{ .Values.service.apiPort }}/webui diff --git a/charts/ipfs/1.0.1/templates/deployment.yaml b/charts/ipfs/1.0.1/templates/deployment.yaml new file mode 100644 index 0000000000..c830a17a16 --- /dev/null +++ b/charts/ipfs/1.0.1/templates/deployment.yaml @@ -0,0 +1,58 @@ +apiVersion: {{ template "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ template "common.names.fullname" . }} + labels: {{ include "common.labels" . | nindent 4 }} +spec: + strategy: + type: {{ .Values.updateStrategy }} + selector: + matchLabels: {{ include "common.labels.selectorLabels" . | nindent 6 }} + template: + metadata: + name: {{ template "common.names.fullname" . }} + labels: {{ include "common.labels.selectorLabels" . | nindent 8 }} + spec: + serviceAccountName: {{ include "common.names.serviceAccountName" . | quote }} + initContainers: + - name: init-init + {{ include "common.containers.imageConfig" .Values.image | nindent 10 }} + command: ['/bin/sh', '-c', '[ ! -e /data/ipfs/config ] && (/usr/local/bin/ipfs init ; chown -R 1000:100 /data/ipfs) ; exit 0'] + {{ include "common.storage.allContainerVolumeMounts" .Values | nindent 10 }} + - name: init-api + {{ include "common.containers.imageConfig" .Values.image | nindent 10 }} + command: ['/usr/local/bin/ipfs', 'config', 'Addresses.API', "/ip4/0.0.0.0/tcp/9501"] + {{ include "common.storage.allContainerVolumeMounts" .Values | nindent 10 }} + - name: init-gateway + {{ include "common.containers.imageConfig" .Values.image | nindent 10 }} + command: ['/usr/local/bin/ipfs', 'config', 'Addresses.Gateway', "/ip4/0.0.0.0/tcp/9080"] + {{ include "common.storage.allContainerVolumeMounts" .Values | nindent 10 }} + - name: init-swarm + {{ include "common.containers.imageConfig" .Values.image | nindent 10 }} + command: ['/usr/local/bin/ipfs', 'config', '--json', 'Addresses.Swarm', "[\"/ip4/0.0.0.0/tcp/9401\",\"/ip4/0.0.0.0/tcp/9401/quic\"]" ] + {{ include "common.storage.allContainerVolumeMounts" .Values | nindent 10 }} + - name: init-access-origin + {{ include "common.containers.imageConfig" .Values.image | nindent 10 }} + command: ['/usr/local/bin/ipfs', 'config', '--json', 'API.HTTPHeaders.Access-Control-Allow-Origin', "[\"*\"]" ] + {{ include "common.storage.allContainerVolumeMounts" .Values | nindent 10 }} + - name: init-access-methods + {{ include "common.containers.imageConfig" .Values.image | nindent 10 }} + command: ['/usr/local/bin/ipfs', 'config', '--json', 'API.HTTPHeaders.Access-Control-Allow-Methods', "[\"PUT\",\"POST\"]" ] + {{ include "common.storage.allContainerVolumeMounts" .Values | nindent 10 }} + - name: init-chown + {{ include "common.containers.imageConfig" .Values.image | nindent 10 }} + command: ['chown', '1000:100', '/data/ipfs/config'] + {{ include "common.storage.allContainerVolumeMounts" .Values | nindent 10 }} + containers: + - name: {{ .Chart.Name }} + {{ include "common.containers.imageConfig" .Values.image | nindent 10 }} + {{ include "common.storage.allContainerVolumeMounts" .Values | nindent 10 }} + ports: + - name: swarm + containerPort: 9401 + - name: api + containerPort: 9501 + - name: gateway + containerPort: 9880 +{{ include "common.containers.allEnvironmentVariables" .Values | nindent 10 }} +{{ include "common.storage.allAppVolumes" .Values | nindent 6 }} diff --git a/charts/ipfs/1.0.1/templates/service.yaml b/charts/ipfs/1.0.1/templates/service.yaml new file mode 100644 index 0000000000..4cc9718639 --- /dev/null +++ b/charts/ipfs/1.0.1/templates/service.yaml @@ -0,0 +1,8 @@ +{{ $svc := .Values.service }} +{{ $ports := list }} +{{ $ports = mustAppend $ports (dict "name" "swarm" "port" $svc.swarmPort "nodePort" $svc.swarmPort "targetPort" 9401) }} +{{ $ports = mustAppend $ports (dict "name" "api" "port" $svc.apiPort "nodePort" $svc.apiPort "targetPort" 9501) }} +{{ $ports = mustAppend $ports (dict "name" "gateway" "port" $svc.gatewayPort "nodePort" $svc.gatewayPort "targetPort" 9880) }} +{{ $params := . }} +{{ $_ := set $params "commonService" (dict "type" "NodePort" "ports" $ports ) }} +{{ include "common.classes.service" $params }} diff --git a/charts/ipfs/1.0.1/templates/serviceaccount.yaml b/charts/ipfs/1.0.1/templates/serviceaccount.yaml new file mode 100644 index 0000000000..12bd3f4a39 --- /dev/null +++ b/charts/ipfs/1.0.1/templates/serviceaccount.yaml @@ -0,0 +1 @@ +{{ include "common.serviceaccount" . }} diff --git a/charts/ipfs/1.0.1/test_values.yaml b/charts/ipfs/1.0.1/test_values.yaml new file mode 100644 index 0000000000..65b840021f --- /dev/null +++ b/charts/ipfs/1.0.1/test_values.yaml @@ -0,0 +1,27 @@ +## Set default image, imageTag, and imagePullPolicy. mode is used to indicate the +## +image: + repository: ipfs/go-ipfs + tag: v0.8.0-rc1 + pullPolicy: IfNotPresent + +## Additional arguments to pass to minio binary +extraArgs: [] + +updateStrategy: Recreate + +service: + swarmPort: 30941 + apiPort: 30951 + gatewayPort: 30980 + +environmentVariables: [] + +emptyDirVolumes: true +appVolumeMounts: + staging: + emptyDir: true + mountPath: "/export" + data: + emptyDir: true + mountPath: "/data/ipfs" diff --git a/charts/nextcloud/1.1.0/templates/_backup.tpl b/charts/ipfs/1.0.1/values.yaml similarity index 100% rename from charts/nextcloud/1.1.0/templates/_backup.tpl rename to charts/ipfs/1.0.1/values.yaml diff --git a/charts/ipfs/item.yaml b/charts/ipfs/item.yaml new file mode 100644 index 0000000000..725026bfb1 --- /dev/null +++ b/charts/ipfs/item.yaml @@ -0,0 +1,3 @@ +categories: + - storage +icon_url: https://ipfs.io/ipfs/QmVk7srrwahXLNmcDYvyUEJptyoxpndnRa57YJ11L4jV26/ipfs.go.png diff --git a/charts/ix-chart/2012.0.0/.helmignore b/charts/ix-chart/2102.0.0/.helmignore similarity index 100% rename from charts/ix-chart/2012.0.0/.helmignore rename to charts/ix-chart/2102.0.0/.helmignore diff --git a/charts/ix-chart/2102.0.0/Chart.lock b/charts/ix-chart/2102.0.0/Chart.lock new file mode 100644 index 0000000000..f863fc9fbd --- /dev/null +++ b/charts/ix-chart/2102.0.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../library/common/2101.0.0 + version: 2101.0.0 +digest: sha256:6ab46f958de11ae6a24d8f7e18417aa9852a8d968d5b0cc94ffa4700449931d6 +generated: "2021-02-04T01:15:55.365517+05:00" diff --git a/charts/ix-chart/2012.0.0/Chart.yaml b/charts/ix-chart/2102.0.0/Chart.yaml similarity index 89% rename from charts/ix-chart/2012.0.0/Chart.yaml rename to charts/ix-chart/2102.0.0/Chart.yaml index 74f67019b7..5d8814b01a 100644 --- a/charts/ix-chart/2012.0.0/Chart.yaml +++ b/charts/ix-chart/2102.0.0/Chart.yaml @@ -15,9 +15,14 @@ type: application # This is the chart version. This version number should be incremented each time you make changes # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 2012.0.0 +version: 2102.0.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. appVersion: v1 +dependencies: + - name: common + repository: file://../../../library/common/2101.0.0 + version: 2101.0.0 + diff --git a/charts/ix-chart/2012.0.0/README.md b/charts/ix-chart/2102.0.0/README.md similarity index 97% rename from charts/ix-chart/2012.0.0/README.md rename to charts/ix-chart/2102.0.0/README.md index e9cdf2092e..ed5e97a908 100644 --- a/charts/ix-chart/2012.0.0/README.md +++ b/charts/ix-chart/2102.0.0/README.md @@ -22,7 +22,6 @@ their default values. | `image.tag` | The image tag to pull from | `latest` | | `image.pullPolicy` | Image pull policy | `IfNotPresent` | | `updateStrategy` | Upgrade Policy | `RollingUpdate` | -| `restartPolicy` | Restart Policy for containers in workload | `Always` | | `jobRestartPolicy` | Restart Policy for job type workload ( only applicable if `workloadType` is `Job`/`CronJob` | `OnFailure` | | `containerCommand` | Commands to execute inside container overriding image CMD default | `null` | | `containerArgs` | Specify arguments for container command | `null` | diff --git a/charts/ix-chart/2012.0.0/app-readme.md b/charts/ix-chart/2102.0.0/app-readme.md similarity index 100% rename from charts/ix-chart/2012.0.0/app-readme.md rename to charts/ix-chart/2102.0.0/app-readme.md diff --git a/charts/ix-chart/2102.0.0/charts/common-2101.0.0.tgz b/charts/ix-chart/2102.0.0/charts/common-2101.0.0.tgz new file mode 100644 index 0000000000..3a22457ea6 Binary files /dev/null and b/charts/ix-chart/2102.0.0/charts/common-2101.0.0.tgz differ diff --git a/charts/ix-chart/2012.0.0/values.yaml b/charts/ix-chart/2102.0.0/default_values.yaml similarity index 96% rename from charts/ix-chart/2012.0.0/values.yaml rename to charts/ix-chart/2102.0.0/default_values.yaml index 8647639113..af4b34a1d5 100644 --- a/charts/ix-chart/2012.0.0/values.yaml +++ b/charts/ix-chart/2102.0.0/default_values.yaml @@ -7,7 +7,6 @@ image: tag: "latest" # Restart / Update policy -restartPolicy: Always updateStrategy: RollingUpdate # Container CMD / entrypoint diff --git a/charts/ix-chart/2012.0.0/questions.yaml b/charts/ix-chart/2102.0.0/questions.yaml similarity index 96% rename from charts/ix-chart/2012.0.0/questions.yaml rename to charts/ix-chart/2102.0.0/questions.yaml index 15a5dc2a56..eff5c35cdd 100644 --- a/charts/ix-chart/2012.0.0/questions.yaml +++ b/charts/ix-chart/2102.0.0/questions.yaml @@ -99,21 +99,6 @@ questions: description: "Kill existing pods before creating new ones" # Restart Policy - - variable: restartPolicy - description: "Restart Policy for workload" - label: "Restart Policy" - group: "Restart Policy" - schema: - type: string - show_if: [["workloadType", "=", "Deployment"]] - default: "Always" - enum: - - value: "Always" - description: "Always restart containers in a pod if they exit" - - value: "OnFailure" - description: "Only restart containers if they exit with a failure" - - value: "Never" - description: "Never restart containers if they exit" - variable: jobRestartPolicy description: "Restart Policy for workload" label: "Restart Policy" diff --git a/charts/ix-chart/2012.0.0/templates/NOTES.txt b/charts/ix-chart/2102.0.0/templates/NOTES.txt similarity index 100% rename from charts/ix-chart/2012.0.0/templates/NOTES.txt rename to charts/ix-chart/2102.0.0/templates/NOTES.txt diff --git a/charts/ix-chart/2012.0.0/templates/_containers.tpl b/charts/ix-chart/2102.0.0/templates/_containers.tpl similarity index 100% rename from charts/ix-chart/2012.0.0/templates/_containers.tpl rename to charts/ix-chart/2102.0.0/templates/_containers.tpl diff --git a/charts/ix-chart/2012.0.0/templates/_helpers.tpl b/charts/ix-chart/2102.0.0/templates/_helpers.tpl similarity index 100% rename from charts/ix-chart/2012.0.0/templates/_helpers.tpl rename to charts/ix-chart/2102.0.0/templates/_helpers.tpl diff --git a/charts/ix-chart/2012.0.0/templates/_networking.tpl b/charts/ix-chart/2102.0.0/templates/_networking.tpl similarity index 100% rename from charts/ix-chart/2012.0.0/templates/_networking.tpl rename to charts/ix-chart/2102.0.0/templates/_networking.tpl diff --git a/charts/ix-chart/2012.0.0/templates/_volumes.tpl b/charts/ix-chart/2102.0.0/templates/_volumes.tpl similarity index 78% rename from charts/ix-chart/2012.0.0/templates/_volumes.tpl rename to charts/ix-chart/2102.0.0/templates/_volumes.tpl index e16e1c4c8d..ff54f173eb 100644 --- a/charts/ix-chart/2012.0.0/templates/_volumes.tpl +++ b/charts/ix-chart/2102.0.0/templates/_volumes.tpl @@ -10,13 +10,15 @@ volumes: path: {{ $hostPathConfiguration.hostPath }} {{- end }} {{- range $index, $hostPathConfiguration := .Values.ixVolumes }} - - name: ix-host-volume-{{ $.Release.Name }}-{{ $index }} +{{ $dsName := base $hostPathConfiguration.hostPath }} + - name: ix-host-volume-{{ $.Release.Name }}-{{ $dsName }} hostPath: path: {{ $hostPathConfiguration.hostPath }} {{- end }} {{- end }} {{- end }} + {{/* Volume Mounts Configuration */}} @@ -28,9 +30,9 @@ volumeMounts: name: ix-host-path-{{ $.Release.Name }}-{{ $index }} readOnly: {{ $hostPathConfiguration.readOnly }} {{- end }} - {{- range $index, $hostPathConfiguration := .Values.ixVolumes }} + {{- range $index, $hostPathConfiguration := .Values.volumes }} - mountPath: {{ $hostPathConfiguration.mountPath }} - name: ix-host-volume-{{ $.Release.Name }}-{{ $index }} + name: ix-host-volume-{{ $.Release.Name }}-{{ $hostPathConfiguration.datasetName }} {{- end }} {{- end }} {{- end }} diff --git a/charts/ix-chart/2012.0.0/templates/_workload.tpl b/charts/ix-chart/2102.0.0/templates/_workload.tpl similarity index 98% rename from charts/ix-chart/2012.0.0/templates/_workload.tpl rename to charts/ix-chart/2102.0.0/templates/_workload.tpl index 14daccd9aa..344adeda74 100644 --- a/charts/ix-chart/2012.0.0/templates/_workload.tpl +++ b/charts/ix-chart/2102.0.0/templates/_workload.tpl @@ -39,7 +39,7 @@ Get Restart policy based on workload type */}} {{- define "restartPolicy" -}} {{- if eq (include "workloadIsDeployment" .) "true" }} -{{- printf "%s" .Values.restartPolicy }} +{{- print "Always" }} {{- else }} {{- printf "%s" .Values.jobRestartPolicy }} {{- end }} diff --git a/charts/ix-chart/2012.0.0/templates/external-interfaces.yaml b/charts/ix-chart/2102.0.0/templates/external-interfaces.yaml similarity index 100% rename from charts/ix-chart/2012.0.0/templates/external-interfaces.yaml rename to charts/ix-chart/2102.0.0/templates/external-interfaces.yaml diff --git a/charts/ix-chart/2012.0.0/templates/service.yaml b/charts/ix-chart/2102.0.0/templates/service.yaml similarity index 100% rename from charts/ix-chart/2012.0.0/templates/service.yaml rename to charts/ix-chart/2102.0.0/templates/service.yaml diff --git a/charts/ix-chart/2012.0.0/templates/tests/deployment-check.yaml b/charts/ix-chart/2102.0.0/templates/tests/deployment-check.yaml similarity index 100% rename from charts/ix-chart/2012.0.0/templates/tests/deployment-check.yaml rename to charts/ix-chart/2102.0.0/templates/tests/deployment-check.yaml diff --git a/charts/ix-chart/2012.0.0/templates/workload.yaml b/charts/ix-chart/2102.0.0/templates/workload.yaml similarity index 100% rename from charts/ix-chart/2012.0.0/templates/workload.yaml rename to charts/ix-chart/2102.0.0/templates/workload.yaml diff --git a/charts/ix-chart/2012.0.0/test_values.yaml b/charts/ix-chart/2102.0.0/test_values.yaml similarity index 97% rename from charts/ix-chart/2012.0.0/test_values.yaml rename to charts/ix-chart/2102.0.0/test_values.yaml index 522688359d..6ba83274f8 100644 --- a/charts/ix-chart/2012.0.0/test_values.yaml +++ b/charts/ix-chart/2102.0.0/test_values.yaml @@ -7,7 +7,6 @@ image: tag: latest # Restart / Update policy -restartPolicy: Always updateStrategy: RollingUpdate # Container CMD / entrypoint diff --git a/charts/ix-chart/2102.0.0/values.yaml b/charts/ix-chart/2102.0.0/values.yaml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/charts/minio/1.0.0/templates/_helpers.tpl b/charts/minio/1.0.0/templates/_helpers.tpl deleted file mode 100644 index aa82dc8b17..0000000000 --- a/charts/minio/1.0.0/templates/_helpers.tpl +++ /dev/null @@ -1,84 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "minio.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "minio.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 -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "minio.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Return the appropriate apiVersion for deployment. -*/}} -{{- define "minio.deployment.apiVersion" -}} -{{- if semverCompare "<1.9-0" .Capabilities.KubeVersion.Version -}} -{{- print "apps/v1beta2" -}} -{{- else -}} -{{- print "apps/v1" -}} -{{- end -}} -{{- end -}} - -{{/* -Return the appropriate apiVersion for statefulset. -*/}} -{{- define "minio.statefulset.apiVersion" -}} -{{- if semverCompare "<1.17-0" .Capabilities.KubeVersion.Version -}} -{{- print "apps/v1beta2" -}} -{{- else -}} -{{- print "apps/v1" -}} -{{- end -}} -{{- end -}} - -{{/* -Determine secret name. -*/}} -{{- define "minio.secretName" -}} -{{- include "minio.fullname" . -}} -{{- end -}} - -{{/* -Determine service account name for deployment or statefulset. -*/}} -{{- define "minio.serviceAccountName" -}} -{{- (include "minio.fullname" .) | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Determine name for scc role and rolebinding -*/}} -{{- define "minio.sccRoleName" -}} -{{- printf "%s-%s" "scc" (include "minio.fullname" .) | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Properly format optional additional arguments to Minio binary -*/}} -{{- define "minio.extraArgs" -}} -{{- range .Values.extraArgs -}} -{{ " " }}{{ . }} -{{- end -}} -{{- end -}} diff --git a/charts/minio/1.0.0/templates/_storage.tpl b/charts/minio/1.0.0/templates/_storage.tpl deleted file mode 100644 index 062eb2cb7c..0000000000 --- a/charts/minio/1.0.0/templates/_storage.tpl +++ /dev/null @@ -1,23 +0,0 @@ -{{/* -Retrieve host path from ix volumes based on dataset name -*/}} -{{- define "retrieveHostPathFromiXVolume" -}} -{{- range $index, $hostPathConfiguration := $.ixVolumes }} -{{- $dsName := base $hostPathConfiguration.hostPath -}} -{{- if eq $.datasetName $dsName -}} -{{- $hostPathConfiguration.hostPath -}} -{{- end -}} -{{- end }} -{{- end -}} - -{{/* -Retrieve host path for minio -*/}} -{{- define "configuredMinioHostPath" -}} -{{- if .Values.minioHostPathEnabled -}} -{{- .Values.minioHostPath -}} -{{- else -}} -{{- $volDict := dict "datasetName" $.Values.minioDataVolume.datasetName "ixVolumes" $.Values.ixVolumes -}} -{{- include "retrieveHostPathFromiXVolume" $volDict -}} -{{- end -}} -{{- end -}} diff --git a/charts/minio/1.0.0/templates/deployment.yaml b/charts/minio/1.0.0/templates/deployment.yaml deleted file mode 100644 index ddbbebd51d..0000000000 --- a/charts/minio/1.0.0/templates/deployment.yaml +++ /dev/null @@ -1,67 +0,0 @@ -{{ $scheme := "http" }} -apiVersion: {{ template "minio.deployment.apiVersion" . }} -kind: Deployment -metadata: - name: {{ template "minio.fullname" . }} - labels: - app: {{ template "minio.name" . }} - chart: {{ template "minio.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -spec: - strategy: - type: {{ .Values.updateStrategy }} - selector: - matchLabels: - app: {{ template "minio.name" . }} - release: {{ .Release.Name }} - template: - metadata: - name: {{ template "minio.fullname" . }} - labels: - app: {{ template "minio.name" . }} - release: {{ .Release.Name }} - annotations: - checksum/secrets: {{ include (print $.Template.BasePath "/secrets.yaml") . | sha256sum }} - spec: - serviceAccountName: {{ include "minio.serviceAccountName" . | quote }} - containers: - - name: {{ .Chart.Name }} - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - command: - - "/bin/sh" - - "-ce" - - "/usr/bin/docker-entrypoint.sh minio server /export {{- template "minio.extraArgs" . }}" - volumeMounts: - - name: export - mountPath: /export - ports: - - name: {{ $scheme }} - containerPort: 9000 - env: - - name: MINIO_ACCESS_KEY - valueFrom: - secretKeyRef: - name: {{ template "minio.secretName" . }} - key: accesskey - - name: MINIO_SECRET_KEY - valueFrom: - secretKeyRef: - name: {{ template "minio.secretName" . }} - key: secretkey - {{- range $key, $val := .Values.environment }} - - name: {{ $key }} - value: {{ $val | quote }} - {{- end}} - volumes: - - name: export - {{- if .Values.emptyDirVolumes }} - emptyDir: {} - {{- else }} - hostPath: - path: {{ template "configuredMinioHostPath" . }} - {{- end }} - - name: minio-user - secret: - secretName: {{ template "minio.secretName" . }} diff --git a/charts/minio/1.0.0/templates/service.yaml b/charts/minio/1.0.0/templates/service.yaml deleted file mode 100644 index 3f0c68b930..0000000000 --- a/charts/minio/1.0.0/templates/service.yaml +++ /dev/null @@ -1,21 +0,0 @@ -{{ $scheme := "http" }} -apiVersion: v1 -kind: Service -metadata: - name: {{ template "minio.fullname" . }} - labels: - app: {{ template "minio.name" . }} - chart: {{ template "minio.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} -spec: - type: "NodePort" - ports: - - name: {{ $scheme }} - port: {{ .Values.service.nodePort }} - protocol: TCP - nodePort: {{ .Values.service.nodePort }} - targetPort: 9000 - selector: - app: {{ template "minio.name" . }} - release: {{ .Release.Name }} diff --git a/charts/minio/1.0.0/templates/serviceaccount.yaml b/charts/minio/1.0.0/templates/serviceaccount.yaml deleted file mode 100644 index 2db987867a..0000000000 --- a/charts/minio/1.0.0/templates/serviceaccount.yaml +++ /dev/null @@ -1,9 +0,0 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: {{ include "minio.serviceAccountName" . | quote }} - namespace: {{ .Release.Namespace | quote }} - labels: - app: {{ template "minio.name" . }} - chart: {{ template "minio.chart" . }} - release: "{{ .Release.Name }}" diff --git a/charts/minio/1.1.0/.helmignore b/charts/minio/1.1.0/.helmignore new file mode 100644 index 0000000000..a9fe727881 --- /dev/null +++ b/charts/minio/1.1.0/.helmignore @@ -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 +*~ +# Various IDEs +.project +.idea/ +*.tmproj +# OWNERS file for Kubernetes +OWNERS \ No newline at end of file diff --git a/charts/minio/1.0.0/Chart.yaml b/charts/minio/1.1.0/Chart.yaml similarity index 72% rename from charts/minio/1.0.0/Chart.yaml rename to charts/minio/1.1.0/Chart.yaml index b623cd58c3..52ba59d832 100644 --- a/charts/minio/1.0.0/Chart.yaml +++ b/charts/minio/1.1.0/Chart.yaml @@ -1,7 +1,7 @@ apiVersion: v1 description: High Performance, Kubernetes Native Object Storage name: minio -version: 1.0.0 +version: 1.1.0 appVersion: master keywords: - storage @@ -13,3 +13,7 @@ sources: - https://github.com/minio/minio - https://github.com/minio/charts upstream_version: 8.0.5 +dependencies: + - name: common + repository: file://../../../library/common/2101.0.0 + version: 2101.0.0 diff --git a/charts/minio/1.0.0/README.md b/charts/minio/1.1.0/README.md similarity index 100% rename from charts/minio/1.0.0/README.md rename to charts/minio/1.1.0/README.md diff --git a/charts/minio/1.0.0/app-readme.md b/charts/minio/1.1.0/app-readme.md similarity index 100% rename from charts/minio/1.0.0/app-readme.md rename to charts/minio/1.1.0/app-readme.md diff --git a/charts/minio/1.1.0/charts/common-2101.0.0.tgz b/charts/minio/1.1.0/charts/common-2101.0.0.tgz new file mode 100644 index 0000000000..3a22457ea6 Binary files /dev/null and b/charts/minio/1.1.0/charts/common-2101.0.0.tgz differ diff --git a/charts/minio/1.0.0/values.yaml b/charts/minio/1.1.0/default_values.yaml similarity index 85% rename from charts/minio/1.0.0/values.yaml rename to charts/minio/1.1.0/default_values.yaml index 702573e993..7afa31dc0d 100644 --- a/charts/minio/1.0.0/values.yaml +++ b/charts/minio/1.1.0/default_values.yaml @@ -15,3 +15,8 @@ service: environment: ## Please refer for comprehensive list https://docs.minio.io/docs/minio-server-configuration-guide.html + +appVolumeMounts: + export: + emptyDir: true + mountPath: "/export" diff --git a/charts/minio/1.1.0/migrations/migrate b/charts/minio/1.1.0/migrations/migrate new file mode 100755 index 0000000000..f65d82b628 --- /dev/null +++ b/charts/minio/1.1.0/migrations/migrate @@ -0,0 +1,25 @@ +#!/usr/bin/python3 +import json +import os +import sys + + +def migrate(values): + values.update({ + 'appVolumeMounts': { + 'export': { + 'hostPathEnabled': values['minioHostPathEnabled'], + **({'hostPath': values['minioHostPath']} if values.get('minioHostPath') else {}) + }, + }, + }) + return values + + +if __name__ == '__main__': + if len(sys.argv) != 2: + exit(1) + + if os.path.exists(sys.argv[1]): + with open(sys.argv[1], 'r') as f: + print(json.dumps(migrate(json.loads(f.read())))) diff --git a/charts/minio/1.0.0/questions.yaml b/charts/minio/1.1.0/questions.yaml similarity index 63% rename from charts/minio/1.0.0/questions.yaml rename to charts/minio/1.1.0/questions.yaml index f6c3121acf..e4753328ae 100644 --- a/charts/minio/1.0.0/questions.yaml +++ b/charts/minio/1.1.0/questions.yaml @@ -81,6 +81,7 @@ questions: - variable: accessKey label: "Access Key" group: "Minio Configuration" + description: "Enter the S3 access ID" schema: type: string private: true @@ -91,6 +92,7 @@ questions: - variable: secretKey label: "Secret Key" group: "Minio Configuration" + description: "Enter the S3 secret access key" schema: type: string private: true @@ -98,13 +100,26 @@ questions: min_length: 8 max_length: 40 - - variable: environment + - variable: environmentVariables label: "Minio image environment" group: "Minio Configuration" schema: - type: dict - additional_attrs: true - attrs: [] + 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: service description: "Minio Service Configuration" @@ -123,38 +138,44 @@ questions: default: 9000 required: true - - variable: minioHostPathEnabled - label: "Configure Host Path for Minio data" - group: "Storage" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: minioHostPath - label: "Specify HostPath for Minio data" - schema: - type: hostpath - - - variable: minioDataVolume - label: "Configure iXVolume" + - variable: appVolumeMounts + label: "Minio Storage" group: "Storage" schema: type: dict - $ref: - - "normalize/ixVolume" - show_if: [["minioHostPathEnabled", "=", false]] attrs: - - variable: mountPath - label: "Mount Path" - description: "Path where the volume will be mounted inside the pod" + - variable: export + label: "Data Volume" schema: - type: path - editable: false - default: "/export" - - variable: datasetName - label: "Dataset Name" - schema: - type: string - default: "ix-minio" - editable: false + type: dict + attrs: + - variable: datasetName + label: "Minio Data Volume Name" + schema: + type: string + hidden: true + $ref: + - "normalize/ixVolume" + show_if: [["hostPathEnabled", "=", false]] + default: "ix-minio" + editable: false + - variable: mountPath + label: "Minio Data Mount Path" + description: "Path where the volume will be mounted inside the pod" + schema: + type: path + hidden: true + editable: false + default: "/export" + - variable: hostPathEnabled + label: "Enable Host Path for Minio Data Volume" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostPath + label: "Host Path for Minio Data Volume" + schema: + type: hostpath + required: true diff --git a/charts/minio/1.1.0/requirements.lock b/charts/minio/1.1.0/requirements.lock new file mode 100644 index 0000000000..74ceebcbc1 --- /dev/null +++ b/charts/minio/1.1.0/requirements.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../library/common/2101.0.0 + version: 2101.0.0 +digest: sha256:6ab46f958de11ae6a24d8f7e18417aa9852a8d968d5b0cc94ffa4700449931d6 +generated: "2021-02-04T01:15:55.416388+05:00" diff --git a/charts/minio/1.0.0/templates/NOTES.txt b/charts/minio/1.1.0/templates/NOTES.txt similarity index 100% rename from charts/minio/1.0.0/templates/NOTES.txt rename to charts/minio/1.1.0/templates/NOTES.txt diff --git a/charts/minio/1.1.0/templates/_helpers.tpl b/charts/minio/1.1.0/templates/_helpers.tpl new file mode 100644 index 0000000000..c769c2fb2a --- /dev/null +++ b/charts/minio/1.1.0/templates/_helpers.tpl @@ -0,0 +1,6 @@ +{{/* +Determine secret name. +*/}} +{{- define "minio.secretName" -}} +{{- include "common.names.fullname" . -}} +{{- end -}} diff --git a/charts/minio/1.1.0/templates/deployment.yaml b/charts/minio/1.1.0/templates/deployment.yaml new file mode 100644 index 0000000000..aed4ad032b --- /dev/null +++ b/charts/minio/1.1.0/templates/deployment.yaml @@ -0,0 +1,46 @@ +{{ $scheme := "http" }} +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 }} +spec: + replicas: {{ (default 1 .Values.replicas) }} + strategy: + type: {{ (default "Recreate" .Values.updateStrategy ) }} + 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: + serviceAccountName: {{ include "common.names.serviceAccountName" . | quote }} + containers: + - name: {{ .Chart.Name }} + {{ include "common.containers.imageConfig" .Values.image | nindent 10 }} + {{ include "common.storage.allContainerVolumeMounts" .Values | nindent 10 }} + command: + - "/bin/sh" + - "-ce" + - "/usr/bin/docker-entrypoint.sh minio server /export {{ (.Values.extraArgs | default list) | join " " }}" + ports: + - name: {{ $scheme }} + containerPort: 9000 + env: + {{ $secretName := (include "minio.secretName" .) }} + {{ $envList := (default list .Values.environment) }} + {{ $envList = mustAppend $envList (dict "name" "MINIO_ACCESS_KEY" "valueFromSecret" true "secretName" $secretName "secretKey" "accesskey") }} + {{ $envList = mustAppend $envList (dict "name" "MINIO_SECRET_KEY" "valueFromSecret" true "secretName" $secretName "secretKey" "secretkey") }} + {{ include "common.containers.environmentVariables" (dict "environmentVariables" $envList) | nindent 12 }} +{{ include "common.storage.allAppVolumes" .Values | nindent 6 }} diff --git a/charts/minio/1.0.0/templates/secrets.yaml b/charts/minio/1.1.0/templates/secrets.yaml similarity index 71% rename from charts/minio/1.0.0/templates/secrets.yaml rename to charts/minio/1.1.0/templates/secrets.yaml index c62e183a35..f44495e5e1 100644 --- a/charts/minio/1.0.0/templates/secrets.yaml +++ b/charts/minio/1.1.0/templates/secrets.yaml @@ -2,11 +2,7 @@ apiVersion: v1 kind: Secret metadata: name: {{ template "minio.secretName" . }} - labels: - app: {{ template "minio.name" . }} - chart: {{ template "minio.chart" . }} - release: {{ .Release.Name }} - heritage: {{ .Release.Service }} + labels: {{ include "common.labels" . | nindent 4 }} type: Opaque data: accesskey: {{ if .Values.accessKey }}{{ .Values.accessKey | toString | b64enc | quote }}{{ else }}{{ randAlphaNum 20 | b64enc | quote }}{{ end }} diff --git a/charts/minio/1.1.0/templates/service.yaml b/charts/minio/1.1.0/templates/service.yaml new file mode 100644 index 0000000000..34e44be851 --- /dev/null +++ b/charts/minio/1.1.0/templates/service.yaml @@ -0,0 +1,10 @@ +{{ $svc := .Values.service }} +{{ $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" "http" "port" $svc.nodePort "nodePort" $svc.nodePort "targetPort" 9000) }} +{{ $params := . }} +{{ $_ := set $params "commonService" (dict "type" "NodePort" "ports" $ports ) }} +{{ $_1 := set .Values "extraSelectorLabels" $selectors }} +{{ include "common.classes.service" $params }} diff --git a/charts/minio/1.1.0/templates/serviceaccount.yaml b/charts/minio/1.1.0/templates/serviceaccount.yaml new file mode 100644 index 0000000000..12bd3f4a39 --- /dev/null +++ b/charts/minio/1.1.0/templates/serviceaccount.yaml @@ -0,0 +1 @@ +{{ include "common.serviceaccount" . }} diff --git a/charts/minio/1.0.0/test_values.yaml b/charts/minio/1.1.0/test_values.yaml similarity index 78% rename from charts/minio/1.0.0/test_values.yaml rename to charts/minio/1.1.0/test_values.yaml index 86f866e9f3..383d0bbdd5 100644 --- a/charts/minio/1.0.0/test_values.yaml +++ b/charts/minio/1.1.0/test_values.yaml @@ -11,9 +11,13 @@ extraArgs: [] updateStrategy: RollingUpdate service: - nodePort: 32000 + nodePort: 32001 -environment: +environmentVariables: [] ## Please refer for comprehensive list https://docs.minio.io/docs/minio-server-configuration-guide.html emptyDirVolumes: true +appVolumeMounts: + export: + emptyDir: true + mountPath: "/export" diff --git a/charts/minio/1.1.0/values.yaml b/charts/minio/1.1.0/values.yaml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/charts/nextcloud/1.1.0/questions.yaml b/charts/nextcloud/1.1.0/questions.yaml deleted file mode 100644 index fb50040f7c..0000000000 --- a/charts/nextcloud/1.1.0/questions.yaml +++ /dev/null @@ -1,198 +0,0 @@ -groups: - - name: "Container Images" - description: "Image to be used for container" - - name: "Nextcloud Configuration" - description: "Configuration details for Nextcloud workload" - - name: "Storage" - description: "Configure Storage for Nextcloud" - - name: "Container Configuration" - description: "Configure nextcloud container parameters" - - name: "Postgresql Configuration" - description: "Configure Postgresql for nextcloud" - -portals: - web_portal: - protocols: - - "http" - host: - - "$variable-nextcloud.host" - ports: - - "$variable-service.nodePort" - -questions: - # Image related - - variable: image - description: "Docker Image Details" - label: "Docker Image" - group: "Container Images" - schema: - type: dict - required: true - attrs: - - variable: repository - description: "Docker image repository" - label: "Image repository" - schema: - type: string - default: "nextcloud" - required: true - - variable: tag - description: "Tag to use for specified image" - label: "Image Tag" - schema: - type: string - default: "latest" - - variable: pullPolicy - description: "Docker Image Pull Policy" - label: "Image Pull Policy" - schema: - type: string - default: "IfNotPresent" - enum: - - value: "IfNotPresent" - description: "Only pull image if not present on host" - - value: "Always" - description: "Always pull image even if present on host" - - value: "Never" - description: "Never pull image even if it's not present on host" - - - variable: nextcloud - description: "Nextcloud configuration details" - label: "Nextcloud Configuration" - group: "Nextcloud Configuration" - schema: - type: dict - required: true - additional_attrs: true - attrs: - - variable: host - description: "Nextcloud host to create application URLs" - label: "Nextcloud host" - schema: - type: string - $ref: - - "definitions/nodeIP" - - variable: username - label: "Username" - schema: - type: string - default: "admin" - required: true - - variable: password - label: "Password" - schema: - type: string - private: true - default: "changeme" - required: true - - variable: datadir - label: "Nextcloud data directory" - schema: - type: path - default: "/var/www/html/data" - required: true - - variable: strategy - label: "Nextcloud update strategy" - schema: - type: string - default: "Recreate" - enum: - - value: "RollingUpdate" - description: "Create new pods and then kill old ones" - - value: "Recreate" - description: "Kill existing pods before creating new ones" - - - variable: service - description: "Nextcloud Service Configuration" - label: "Nextcloud Service Configuration" - group: "Nextcloud Configuration" - schema: - type: dict - required: true - attrs: - - variable: nodePort - label: "Node Port to use for Nextcloud" - schema: - type: int - min: 9000 - max: 65535 - default: 9001 - required: true - - - variable: nextcloudDataHostPathEnabled - label: "Configure Host Path for Nextcloud data" - group: "Storage" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: nextcloudHostPath - label: "Specify HostPath for Nextcloud data" - schema: - type: hostpath - - - variable: nextcloudDataVolume - label: "Configure iXVolume" - group: "Storage" - schema: - type: dict - $ref: - - "normalize/ixVolume" - show_if: [["nextcloudDataHostPathEnabled", "=", false]] - attrs: - - variable: mountPath - label: "Mount Path" - description: "Path where the volume will be mounted inside the pod" - schema: - type: path - editable: false - default: "/var/www" - - variable: datasetName - label: "Dataset Name" - schema: - type: string - default: "ix-nextcloud_data" - editable: false - - - variable: postgresBackupVolume - label: "Postgres Backup Volume" - group: "Storage" - schema: - type: dict - $ref: - - "normalize/ixVolume" - attrs: - - variable: mountPath - label: "Mount Path" - schema: - type: path - editable: false - default: "/postgres_backups" - - variable: datasetName - label: "Dataset Name" - schema: - type: string - default: "ix-postgres_backups" - editable: false - - - variable: postgresDataVolume - label: "Postgresql Data Volume" - group: "Storage" - schema: - type: dict - $ref: - - "normalize/ixVolume" - attrs: - - variable: mountPath - label: "Mount Path" - schema: - type: path - editable: false - default: "/var/lib/postgresql/data" - - variable: datasetName - label: "Dataset Name" - schema: - type: string - default: "ix-postgres_data" - editable: false diff --git a/charts/nextcloud/1.1.0/templates/_helpers.tpl b/charts/nextcloud/1.1.0/templates/_helpers.tpl deleted file mode 100644 index 43114be492..0000000000 --- a/charts/nextcloud/1.1.0/templates/_helpers.tpl +++ /dev/null @@ -1,114 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "nextcloud.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "nextcloud.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 -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "nextcloud.mariadb.fullname" -}} -{{- printf "%s-%s" .Release.Name "mariadb" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - - -{{/* -Create a default fully qualified redis app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -*/}} -{{- define "nextcloud.redis.fullname" -}} -{{- printf "%s-%s" .Release.Name "redis" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "nextcloud.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Retrieve host path from ix volumes based on dataset name -*/}} -{{- define "retrieveHostPathFromiXVolume" -}} -{{- range $index, $hostPathConfiguration := $.ixVolumes }} -{{- $dsName := base $hostPathConfiguration.hostPath -}} -{{- if eq $.datasetName $dsName -}} -{{- $hostPathConfiguration.hostPath -}} -{{- end -}} -{{- end -}} -{{- end -}} - -{{/* -Retrieve host path defined in volume -*/}} -{{- define "configuredHostPath" -}} -{{- if .Values.emptyDirVolumes -}} -{{- printf "" -}} -{{- else if .Values.nextcloudDataHostPathEnabled -}} -{{- required "Please specify a host path for nextcloud" .Values.nextcloudHostPath -}} -{{- else -}} -{{- $volDict := dict "datasetName" $.Values.nextcloudDataVolume.datasetName "ixVolumes" $.Values.ixVolumes -}} -{{- include "retrieveHostPathFromiXVolume" $volDict -}} -{{- end -}} -{{- end -}} - -{{/* -Retrieve backup postgresql host path defined in volume -*/}} -{{- define "configuredBackupPostgresHostPath" -}} -{{- if .Values.emptyDirVolumes -}} -{{- printf "" -}} -{{- else -}} -{{- $volDict := dict "datasetName" $.Values.postgresBackupVolume.datasetName "ixVolumes" $.Values.ixVolumes -}} -{{- include "retrieveHostPathFromiXVolume" $volDict -}} -{{- end -}} -{{- end -}} - -{{/* -Retrieve postgresql data host path defined in volume -*/}} -{{- define "configuredPostgresHostPath" -}} -{{- if .Values.emptyDirVolumes -}} -{{- printf "" -}} -{{- else -}} -{{- $volDict := dict "datasetName" $.Values.postgresDataVolume.datasetName "ixVolumes" $.Values.ixVolumes -}} -{{- include "retrieveHostPathFromiXVolume" $volDict -}} -{{- end -}} -{{- end -}} - -{{/* -Selector labels -*/}} -{{- define "nextcloud.selectorLabels" -}} -app.kubernetes.io/name: {{ include "nextcloud.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end }} - -{{/* -Nextcloud service account -*/}} -{{- define "nextcloud.serviceAccountName" -}} -{{- printf "%s-service-account" .Release.Name -}} -{{- end -}} diff --git a/charts/nextcloud/1.1.0/templates/_postgres.tpl b/charts/nextcloud/1.1.0/templates/_postgres.tpl deleted file mode 100644 index 038a680c80..0000000000 --- a/charts/nextcloud/1.1.0/templates/_postgres.tpl +++ /dev/null @@ -1,28 +0,0 @@ -{{/* -Get Nextloud Postgres Database Name -*/}} -{{- define "postgres.DatabaseName" -}} -{{- print "nextcloud" -}} -{{- end -}} - -{{/* -Postgres Selector labels -*/}} -{{- define "nextcloud.postgres.selectorLabels" -}} -app.kubernetes.io/name: {{ include "nextcloud.name" . }}-postgres -app.kubernetes.io/instance: {{ .Release.Name }}-postgres -{{- end }} - -{{- define "postgres.imageName" -}} -{{- print "postgres:13.1" -}} -{{- end -}} - -{{/* -Retrieve postgres backup name -This will return a unique name based on revision and chart numbers specified. -*/}} -{{- define "postgres.backupName" -}} -{{- $upgradeDict := .Values.ixChartContext.upgradeMetadata -}} -{{- printf "postgres-backup-from-%s-to-%s-revision-%d" $upgradeDict.oldChartVersion $upgradeDict.newChartVersion (int64 $upgradeDict.preUpgradeRevision) -}} -{{- end }} - diff --git a/charts/nextcloud/1.1.0/templates/_upgrade.tpl b/charts/nextcloud/1.1.0/templates/_upgrade.tpl deleted file mode 100644 index eb0ae1e660..0000000000 --- a/charts/nextcloud/1.1.0/templates/_upgrade.tpl +++ /dev/null @@ -1,21 +0,0 @@ -{{/* -Retrieve previous chart version from which we are upgrading to a newer chart version -*/}} -{{- define "tn.chart.old_version" -}} -{{- if .Values.ixChartContext.is_upgrade -}} -{{- .Values.ixChartContext.upgradeMetadata.oldChartVersion -}} -{{- else -}} -{{- fail "A chart upgrade is not taking place" -}} -{{- end -}} -{{- end -}} - -{{/* -Retrieve new chart version to which we are upgrading from an old chart version -*/}} -{{- define "tn.chart.new_version" -}} -{{- if .Values.ixChartContext.is_upgrade -}} -{{- .Values.ixChartContext.upgradeMetadata.newChartVersion -}} -{{- else -}} -{{- fail "A chart upgrade is not taking place" -}} -{{- end -}} -{{- end -}} diff --git a/charts/nextcloud/1.1.0/templates/backup-postgres-hook.yaml b/charts/nextcloud/1.1.0/templates/backup-postgres-hook.yaml deleted file mode 100644 index 3f6c6dc366..0000000000 --- a/charts/nextcloud/1.1.0/templates/backup-postgres-hook.yaml +++ /dev/null @@ -1,57 +0,0 @@ -{{- if .Values.ixChartContext.isUpgrade -}} -apiVersion: batch/v1 -kind: Job -metadata: - name: "pre-upgrade-hook2" - annotations: - "helm.sh/hook": pre-upgrade - "helm.sh/hook-weight": "1" - "helm.sh/hook-delete-policy": hook-succeeded - rollme: {{ randAlphaNum 5 | quote }} -spec: - template: - metadata: - name: "pre-upgrade-hook2" - spec: - restartPolicy: Never - serviceAccountName: "{{ template "nextcloud.serviceAccountName" . }}" - containers: - - name: {{ .Chart.Name }}-postgres-backup - image: {{ template "postgres.imageName" . }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - env: - - name: POSTGRES_USER - valueFrom: - secretKeyRef: - name: db-details - key: db-user - - name: POSTGRES_PASSWORD - valueFrom: - secretKeyRef: - name: db-details - key: db-password - - name: BACKUP_NAME - value: {{ template "postgres.backupName" . }} - volumeMounts: - - name: postgres-data - mountPath: /var/lib/postgresql/data - - name: postgres-backup - mountPath: /postgres_backups - - name: backup-script-configmap - mountPath: /bin/backup_entrypoint.sh - readOnly: true - subPath: entrypoint.sh - command: - - "/bin/backup_entrypoint.sh" - volumes: - - name: postgres-data - hostPath: - path: {{ template "configuredPostgresHostPath" . }} - - name: postgres-backup - hostPath: - path: {{ template "configuredBackupPostgresHostPath" . }} - - name: backup-script-configmap - configMap: - defaultMode: 0700 - name: "postgres-backup-hook-config-map" -{{- end -}} diff --git a/charts/nextcloud/1.1.0/templates/deployment.yaml b/charts/nextcloud/1.1.0/templates/deployment.yaml deleted file mode 100644 index a4cfd7c2d7..0000000000 --- a/charts/nextcloud/1.1.0/templates/deployment.yaml +++ /dev/null @@ -1,113 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "nextcloud.fullname" . }} - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - helm.sh/chart: {{ include "nextcloud.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/component: app - {{- if .Values.deploymentAnnotations }} - annotations: -{{ toYaml .Values.deploymentAnnotations | indent 4 }} - {{- end }} -spec: - replicas: 1 - strategy: - type: {{ .Values.nextcloud.strategy }} - selector: - matchLabels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/component: app - template: - metadata: - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/component: app - annotations: - rollme: {{ randAlphaNum 5 | quote }} - spec: - {{- if .Values.image.pullSecrets }} - imagePullSecrets: - {{- range .Values.image.pullSecrets }} - - name: {{ . }} - {{- end}} - {{- end }} - initContainers: - - name: init-postgresdb - image: {{ template "postgres.imageName" . }} - command: ['sh', '-c', "until pg_isready -h {{ template "nextcloud.fullname" . }}-postgres; do echo waiting for postgres; sleep 2; done"] - imagePullPolicy: {{ .Values.image.pullPolicy }} - containers: - - name: {{ .Chart.Name }} - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - env: - - name: POSTGRES_HOST - value: {{ template "nextcloud.fullname" . }}-postgres:5432 - - name: POSTGRES_DB - value: {{ template "postgres.DatabaseName" . }} - - name: POSTGRES_USER - valueFrom: - secretKeyRef: - name: db-details - key: db-user - - name: POSTGRES_PASSWORD - valueFrom: - secretKeyRef: - name: db-details - key: db-password - - name: NEXTCLOUD_ADMIN_USER - valueFrom: - secretKeyRef: - name: {{ template "nextcloud.fullname" . }} - key: nextcloud-username - - name: NEXTCLOUD_ADMIN_PASSWORD - valueFrom: - secretKeyRef: - name: {{ template "nextcloud.fullname" . }} - key: nextcloud-password - - name: NEXTCLOUD_TRUSTED_DOMAINS - value: {{ .Values.nextcloud.host }} - - name: NEXTCLOUD_DATA_DIR - value: {{ .Values.nextcloud.datadir | quote }} - ports: - - name: http - containerPort: 80 - protocol: TCP - volumeMounts: - - name: nextcloud-data - mountPath: /var/www/ - subPath: "root" - - name: nextcloud-data - mountPath: /var/www/html - subPath: "html" - - name: nextcloud-data - mountPath: {{ .Values.nextcloud.datadir }} - subPath: "data" - - name: nextcloud-data - mountPath: /var/www/html/config - subPath: "config" - - name: nextcloud-data - mountPath: /var/www/html/custom_apps - subPath: "custom_apps" - - name: nextcloud-data - mountPath: /var/www/tmp - subPath: "tmp" - - name: nextcloud-data - mountPath: /var/www/html/themes - subPath: "themes" - volumes: - - name: nextcloud-data - {{- if ne (include "configuredHostPath" .) "" }} - hostPath: - path: {{ template "configuredHostPath" . }} - {{- else }} - emptyDir: {} - {{- end }} - # Will mount configuration files as www-data (id: 33) for nextcloud - securityContext: - fsGroup: 33 diff --git a/charts/nextcloud/1.1.0/templates/postgres-deployment.yaml b/charts/nextcloud/1.1.0/templates/postgres-deployment.yaml deleted file mode 100644 index 47ce936339..0000000000 --- a/charts/nextcloud/1.1.0/templates/postgres-deployment.yaml +++ /dev/null @@ -1,64 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ template "nextcloud.fullname" . }}-postgres - labels: - helm.sh/chart: {{ include "nextcloud.chart" . }} - {{- include "nextcloud.postgres.selectorLabels" . | nindent 4 }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/component: database -spec: - replicas: 1 - strategy: - type: {{ .Values.nextcloud.strategy }} - selector: - matchLabels: - {{- include "nextcloud.postgres.selectorLabels" . | nindent 6 }} - app.kubernetes.io/component: database - template: - metadata: - labels: - {{- include "nextcloud.postgres.selectorLabels" . | nindent 8 }} - app.kubernetes.io/component: database - annotations: - rollme: {{ randAlphaNum 5 | quote }} - spec: - containers: - - name: {{ .Chart.Name }}-postgres - image: {{ template "postgres.imageName" . }} - imagePullPolicy: {{ .Values.image.pullPolicy }} - env: - - name: POSTGRES_USER - valueFrom: - secretKeyRef: - name: db-details - key: db-user - - name: POSTGRES_PASSWORD - valueFrom: - secretKeyRef: - name: db-details - key: db-password - volumeMounts: - - name: postgres-data - mountPath: /var/lib/postgresql/data - - name: postgres-backup - mountPath: /postgres_backups - ports: - - name: postgres-tcp - containerPort: 5432 - protocol: TCP - volumes: - - name: postgres-data - {{- if ne (include "configuredPostgresHostPath" .) "" }} - hostPath: - path: {{ template "configuredPostgresHostPath" . }} - {{- else }} - emptyDir: {} - {{- end }} - - name: postgres-backup - {{- if ne (include "configuredBackupPostgresHostPath" .) "" }} - hostPath: - path: {{ template "configuredBackupPostgresHostPath" . }} - {{- else }} - emptyDir: {} - {{- end }} diff --git a/charts/nextcloud/1.1.0/templates/postgres-service.yaml b/charts/nextcloud/1.1.0/templates/postgres-service.yaml deleted file mode 100644 index 4d2837e4d5..0000000000 --- a/charts/nextcloud/1.1.0/templates/postgres-service.yaml +++ /dev/null @@ -1,18 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ template "nextcloud.fullname" . }}-postgres - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }}-postgres - helm.sh/chart: {{ include "nextcloud.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/component: app -spec: - type: ClusterIP - ports: - - port: 5432 - protocol: TCP - name: postgres-tcp - selector: - {{- include "nextcloud.postgres.selectorLabels" . | nindent 4 }} diff --git a/charts/nextcloud/1.1.0/templates/service.yaml b/charts/nextcloud/1.1.0/templates/service.yaml deleted file mode 100644 index 3e2287d196..0000000000 --- a/charts/nextcloud/1.1.0/templates/service.yaml +++ /dev/null @@ -1,20 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ template "nextcloud.fullname" . }} - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - helm.sh/chart: {{ include "nextcloud.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} - app.kubernetes.io/component: app -spec: - type: NodePort - ports: - - port: 80 - targetPort: http - protocol: TCP - name: http - nodePort: {{ default "" .Values.service.nodePort}} - selector: - {{- include "nextcloud.selectorLabels" . | nindent 4 }} diff --git a/charts/nextcloud/1.1.0/values.yaml b/charts/nextcloud/1.1.0/values.yaml deleted file mode 100644 index b60ae4172f..0000000000 --- a/charts/nextcloud/1.1.0/values.yaml +++ /dev/null @@ -1,17 +0,0 @@ -## Official nextcloud image version -## ref: https://hub.docker.com/r/library/nextcloud/tags/ -## -image: - repository: nextcloud - tag: 19.0.3-apache - pullPolicy: IfNotPresent - -nextcloud: - host: nextcloud.kube.home - username: admin - password: changeme - datadir: /var/www/html/data - strategy: "Recreate" - -service: - nodePort: 9001 diff --git a/charts/nextcloud/1.1.0/.helmignore b/charts/nextcloud/1.2.0/.helmignore similarity index 100% rename from charts/nextcloud/1.1.0/.helmignore rename to charts/nextcloud/1.2.0/.helmignore diff --git a/charts/nextcloud/1.2.0/Chart.lock b/charts/nextcloud/1.2.0/Chart.lock new file mode 100644 index 0000000000..7d79320192 --- /dev/null +++ b/charts/nextcloud/1.2.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../library/common/2101.0.0 + version: 2101.0.0 +digest: sha256:6ab46f958de11ae6a24d8f7e18417aa9852a8d968d5b0cc94ffa4700449931d6 +generated: "2021-02-04T01:15:55.262077+05:00" diff --git a/charts/nextcloud/1.1.0/Chart.yaml b/charts/nextcloud/1.2.0/Chart.yaml similarity index 78% rename from charts/nextcloud/1.1.0/Chart.yaml rename to charts/nextcloud/1.2.0/Chart.yaml index df04f529d5..4639feeae2 100644 --- a/charts/nextcloud/1.1.0/Chart.yaml +++ b/charts/nextcloud/1.2.0/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 name: nextcloud -version: 1.1.0 +version: 1.2.0 appVersion: 19.0.3 description: A file sharing server that puts the control and security of your own data back into your hands. keywords: @@ -15,3 +15,8 @@ sources: - https://github.com/nextcloud/docker - https://github.com/nextcloud/helm upstream_version: 2.3.2 +dependencies: + - name: common + repository: file://../../../library/common/2101.0.0 + version: 2101.0.0 + diff --git a/charts/nextcloud/1.1.0/README.md b/charts/nextcloud/1.2.0/README.md similarity index 100% rename from charts/nextcloud/1.1.0/README.md rename to charts/nextcloud/1.2.0/README.md diff --git a/charts/nextcloud/1.1.0/app-readme.md b/charts/nextcloud/1.2.0/app-readme.md similarity index 100% rename from charts/nextcloud/1.1.0/app-readme.md rename to charts/nextcloud/1.2.0/app-readme.md diff --git a/charts/nextcloud/1.2.0/charts/common-2101.0.0.tgz b/charts/nextcloud/1.2.0/charts/common-2101.0.0.tgz new file mode 100644 index 0000000000..3a22457ea6 Binary files /dev/null and b/charts/nextcloud/1.2.0/charts/common-2101.0.0.tgz differ diff --git a/charts/nextcloud/1.1.0/test_values.yaml b/charts/nextcloud/1.2.0/default_values.yaml similarity index 66% rename from charts/nextcloud/1.1.0/test_values.yaml rename to charts/nextcloud/1.2.0/default_values.yaml index 13feb4fc96..6de7de5f74 100644 --- a/charts/nextcloud/1.1.0/test_values.yaml +++ b/charts/nextcloud/1.2.0/default_values.yaml @@ -13,16 +13,18 @@ nextcloud: datadir: /var/www/html/data strategy: "Recreate" -postgresql: - backupVolume: - mountPath: "/postgres_backups" - datasetName: "ix-postgres_backups" - dataVolume: - mountPath: "/var/lib/postgresql/data" - datasetName: "ix-postgres_data" - service: - nodePort: 31000 + nodePort: 9001 -emptyDirVolumes: true -ixChartContext: {} +appVolumeMounts: + nextcloud-data: + emptyDir: true + mountPath: "/var/www" + +postgresAppVolumeMounts: + postgres-data: + emptyDir: true + mountPath: "/var/lib/postgresql/data" + postgres-backup: + emptyDir: true + mountPath: "/postgres_backups" diff --git a/charts/nextcloud/1.2.0/migrations/migrate b/charts/nextcloud/1.2.0/migrations/migrate new file mode 100755 index 0000000000..1977bf3806 --- /dev/null +++ b/charts/nextcloud/1.2.0/migrations/migrate @@ -0,0 +1,26 @@ +#!/usr/bin/python3 +import json +import os +import sys + + +def migrate(values): + values.update({ + 'appVolumeMounts': { + 'nextcloud-data': { + 'hostPathEnabled': values['nextcloudDataHostPathEnabled'], + **({'hostPath': values['nextcloudHostPath']} if values.get('nextcloudHostPath') else {}) + }, + }, + 'updateStrategy': values.get('nextcloud').get('strategy', 'Recreate'), + }) + return values + + +if __name__ == '__main__': + if len(sys.argv) != 2: + exit(1) + + if os.path.exists(sys.argv[1]): + with open(sys.argv[1], 'r') as f: + print(json.dumps(migrate(json.loads(f.read())))) diff --git a/charts/nextcloud/1.2.0/questions.yaml b/charts/nextcloud/1.2.0/questions.yaml new file mode 100644 index 0000000000..e8e485abce --- /dev/null +++ b/charts/nextcloud/1.2.0/questions.yaml @@ -0,0 +1,219 @@ +groups: + - name: "Container Images" + description: "Image to be used for container" + - name: "Nextcloud Configuration" + description: "Configuration details for Nextcloud workload" + - name: "Storage" + description: "Configure Storage for Nextcloud" + - name: "Container Configuration" + description: "Configure nextcloud container parameters" + - name: "Postgresql Configuration" + description: "Configure Postgresql for nextcloud" + - name: "Scaling/Upgrade Policy" + description: "Configure how pods are replaced when configuration is upgraded" + +portals: + web_portal: + protocols: + - "http" + host: + - "$variable-nextcloud.host" + ports: + - "$variable-service.nodePort" + +questions: + # Image related + - variable: image + description: "Docker Image Details" + label: "Docker Image" + group: "Container Images" + schema: + type: dict + required: true + attrs: + - variable: repository + description: "Docker image repository" + label: "Image repository" + schema: + type: string + default: "nextcloud" + required: true + - variable: tag + description: "Tag to use for specified image" + label: "Image Tag" + schema: + type: string + default: "latest" + - variable: pullPolicy + description: "Docker Image Pull Policy" + label: "Image Pull Policy" + schema: + type: string + default: "IfNotPresent" + enum: + - value: "IfNotPresent" + description: "Only pull image if not present on host" + - value: "Always" + description: "Always pull image even if present on host" + - value: "Never" + description: "Never pull image even if it's not present on host" + + - variable: nextcloud + description: "Nextcloud configuration details" + label: "Nextcloud Configuration" + group: "Nextcloud Configuration" + schema: + type: dict + required: true + additional_attrs: true + attrs: + - variable: host + description: "Nextcloud host to create application URLs" + label: "Nextcloud host" + schema: + type: string + $ref: + - "definitions/nodeIP" + - variable: username + label: "Username" + description: "Name of the Nextcloud admin user" + schema: + type: string + default: "admin" + required: true + - variable: password + label: "Password" + description: "Password for the Nextcloud admin user" + schema: + type: string + private: true + default: "changeme" + required: true + - variable: datadir + label: "Nextcloud data directory" + description: "Configures the data directory where nextcloud stores all files from the users" + schema: + type: path + default: "/var/www/html/data" + required: true + + # Update strategy + - variable: updateStrategy + description: "Upgrade Policy" + label: "Update Strategy" + group: "Scaling/Upgrade Policy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + + - variable: service + description: "Nextcloud Service Configuration" + label: "Nextcloud Service Configuration" + group: "Nextcloud Configuration" + schema: + type: dict + required: true + attrs: + - variable: nodePort + label: "Node Port to use for Nextcloud" + schema: + type: int + min: 9000 + max: 65535 + default: 9001 + required: true + + - variable: appVolumeMounts + label: "Nextcloud Storage" + group: "Storage" + schema: + type: dict + attrs: + - variable: nextcloud-data + label: "Nextcloud Data Volume" + schema: + type: dict + attrs: + - variable: datasetName + label: "Nextcloud Data Volume Name" + schema: + type: string + hidden: true + $ref: + - "normalize/ixVolume" + show_if: [["hostPathEnabled", "=", false]] + default: "ix-nextcloud_data" + editable: false + - variable: mountPath + label: "Nextcloud Data Mount Path" + description: "Path where the volume will be mounted inside the pod" + schema: + type: path + hidden: true + editable: false + default: "/var/www" + - variable: hostPathEnabled + label: "Enable Host Path for Nextcloud Data Volume" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostPath + label: "Host Path for Nextcloud Data Volume" + schema: + type: hostpath + required: true + + - variable: postgresAppVolumeMounts + label: "Postgres Storage" + group: "Storage" + schema: + type: dict + hidden: true + attrs: + - variable: postgres-data + label: "Postgres Data Volume" + schema: + type: dict + attrs: + - variable: datasetName + label: "Postgres Data Volume Name" + schema: + type: string + $ref: + - "normalize/ixVolume" + default: "ix-postgres_data" + editable: false + - variable: mountPath + label: "Postgresql Data Mount Path" + description: "Path where the volume will be mounted inside the pod" + schema: + type: path + editable: false + default: "/var/lib/postgresql/data" + - variable: postgres-backup + label: "Postgres Backup Volume" + schema: + type: dict + attrs: + - variable: datasetName + label: "Postgres Backup Volume Name" + schema: + type: string + $ref: + - "normalize/ixVolume" + default: "ix-postgres_backups" + editable: false + - variable: mountPath + label: "Postgresql Backup Mount Path" + description: "Path where the volume will be mounted inside the pod" + schema: + type: path + editable: false + default: "/postgres_backups" diff --git a/charts/nextcloud/1.1.0/templates/NOTES.txt b/charts/nextcloud/1.2.0/templates/NOTES.txt similarity index 100% rename from charts/nextcloud/1.1.0/templates/NOTES.txt rename to charts/nextcloud/1.2.0/templates/NOTES.txt diff --git a/charts/nextcloud/1.2.0/templates/_postgres.tpl b/charts/nextcloud/1.2.0/templates/_postgres.tpl new file mode 100644 index 0000000000..0cdfc8b015 --- /dev/null +++ b/charts/nextcloud/1.2.0/templates/_postgres.tpl @@ -0,0 +1,49 @@ +{{/* +Get Nextloud Postgres Database Name +*/}} +{{- define "postgres.DatabaseName" -}} +{{- print "nextcloud" -}} +{{- end -}} + + +{{- define "postgres.imageName" -}} +{{- print "postgres:13.1" -}} +{{- end -}} + + +{{/* +Retrieve postgres backup name +This will return a unique name based on revision and chart numbers specified. +*/}} +{{- define "postgres.backupName" -}} +{{- $upgradeDict := .Values.ixChartContext.upgradeMetadata -}} +{{- printf "postgres-backup-from-%s-to-%s-revision-%d" $upgradeDict.oldChartVersion $upgradeDict.newChartVersion (int64 $upgradeDict.preUpgradeRevision) -}} +{{- end }} + + +{{/* +Retrieve postgres credentials for environment variables configuration +*/}} +{{- define "postgres.envVariableConfiguration" -}} +{{ $envList := list }} +{{ $envList = mustAppend $envList (dict "name" "POSTGRES_USER" "valueFromSecret" true "secretName" "db-details" "secretKey" "db-user") }} +{{ $envList = mustAppend $envList (dict "name" "POSTGRES_PASSWORD" "valueFromSecret" true "secretName" "db-details" "secretKey" "db-password") }} +{{ include "common.containers.environmentVariables" (dict "environmentVariables" $envList) }} +{{- end -}} + + +{{/* +Retrieve postgres volume configuration +*/}} +{{- define "postgres.volumeConfiguration" -}} +{{ include "common.storage.configureAppVolumes" (dict "appVolumeMounts" .Values.postgresAppVolumeMounts "emptyDirVolumes" .Values.emptyDirVolumes "ixVolumes" .Values.ixVolumes) | nindent 0 }} +{{- end -}} + + +{{/* +Retrieve postgres volume mounts configuration +*/}} +{{- define "postgres.volumeMountsConfiguration" -}} +{{ include "common.storage.configureAppVolumeMountsInContainer" (dict "appVolumeMounts" .Values.postgresAppVolumeMounts ) | nindent 0 }} +{{- end -}} + diff --git a/charts/nextcloud/1.1.0/templates/backup-postgres-config.yaml b/charts/nextcloud/1.2.0/templates/backup-postgres-config.yaml similarity index 100% rename from charts/nextcloud/1.1.0/templates/backup-postgres-config.yaml rename to charts/nextcloud/1.2.0/templates/backup-postgres-config.yaml diff --git a/charts/nextcloud/1.2.0/templates/backup-postgres-hook.yaml b/charts/nextcloud/1.2.0/templates/backup-postgres-hook.yaml new file mode 100644 index 0000000000..175b0f2617 --- /dev/null +++ b/charts/nextcloud/1.2.0/templates/backup-postgres-hook.yaml @@ -0,0 +1,39 @@ +{{- if .Values.ixChartContext.isUpgrade -}} +{{ $values := (. | mustDeepCopy) }} +{{ $_ := set $values "common" (dict "nameSuffix" "postgres") }} +apiVersion: batch/v1 +kind: Job +metadata: + name: "pre-upgrade-hook2" + annotations: + "helm.sh/hook": pre-upgrade + "helm.sh/hook-weight": "1" + "helm.sh/hook-delete-policy": hook-succeeded + rollme: {{ randAlphaNum 5 | quote }} +spec: + template: + metadata: + name: "pre-upgrade-hook2" + spec: + restartPolicy: Never + serviceAccountName: "{{ template "common.names.serviceAccountName" . }}" + containers: + - name: {{ .Chart.Name }}-postgres-backup + image: {{ template "postgres.imageName" . }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + env: {{ include "postgres.envVariableConfiguration" $values | nindent 10 }} + - name: BACKUP_NAME + value: {{ template "postgres.backupName" . }} + volumeMounts: {{ include "postgres.volumeMountsConfiguration" $values | nindent 10 }} + - name: backup-script-configmap + mountPath: /bin/backup_entrypoint.sh + readOnly: true + subPath: entrypoint.sh + command: + - "/bin/backup_entrypoint.sh" + volumes: {{ include "postgres.volumeConfiguration" $values | nindent 8 }} + - name: backup-script-configmap + configMap: + defaultMode: 0700 + name: "postgres-backup-hook-config-map" +{{- end -}} diff --git a/charts/nextcloud/1.2.0/templates/deployment.yaml b/charts/nextcloud/1.2.0/templates/deployment.yaml new file mode 100644 index 0000000000..ba954a825c --- /dev/null +++ b/charts/nextcloud/1.2.0/templates/deployment.yaml @@ -0,0 +1,54 @@ +{{ $postgres_values := (. | mustDeepCopy) }} +{{ $_ := set $postgres_values "common" (dict "nameSuffix" "postgres") }} +{{ include "common.deployment.common_config" . | nindent 0 }} +spec: {{ include "common.deployment.common_spec" . | nindent 2 }} + template: {{ include "common.deployment.pod.metadata" . | nindent 4 }} + spec: + initContainers: + - name: init-postgresdb + image: {{ template "postgres.imageName" . }} + command: ['sh', '-c', "until pg_isready -h {{ template "common.names.fullname" $postgres_values }}; do echo waiting for postgres; sleep 2; done"] + imagePullPolicy: {{ .Values.image.pullPolicy }} + containers: + - name: {{ .Chart.Name }} + {{ include "common.containers.imageConfig" .Values.image | nindent 8 }} + env: {{ include "postgres.envVariableConfiguration" $postgres_values | nindent 10 }} + {{ $envList := list }} + {{ $secretName := (include "common.names.fullname" .) }} + {{ $envList = mustAppend $envList (dict "name" "POSTGRES_HOST" "value" (printf "%s:5432" (include "common.names.fullname" $postgres_values))) }} + {{ $envList = mustAppend $envList (dict "name" "POSTGRES_DB" "value" (include "postgres.DatabaseName" .)) }} + {{ $envList = mustAppend $envList (dict "name" "NEXTCLOUD_DATA_DIR" "value" .Values.nextcloud.datadir) }} + {{ $envList = mustAppend $envList (dict "name" "NEXTCLOUD_TRUSTED_DOMAINS" "value" .Values.nextcloud.host) }} + {{ $envList = mustAppend $envList (dict "name" "NEXTCLOUD_ADMIN_USER" "valueFromSecret" true "secretName" $secretName "secretKey" "nextcloud-username") }} + {{ $envList = mustAppend $envList (dict "name" "NEXTCLOUD_ADMIN_PASSWORD" "valueFromSecret" true "secretName" $secretName "secretKey" "nextcloud-password") }} + {{ include "common.containers.environmentVariables" (dict "environmentVariables" $envList) | nindent 10 }} + ports: + - name: http + containerPort: 80 + protocol: TCP + volumeMounts: + - name: nextcloud-data + mountPath: /var/www/ + subPath: "root" + - name: nextcloud-data + mountPath: /var/www/html + subPath: "html" + - name: nextcloud-data + mountPath: {{ .Values.nextcloud.datadir }} + subPath: "data" + - name: nextcloud-data + mountPath: /var/www/html/config + subPath: "config" + - name: nextcloud-data + mountPath: /var/www/html/custom_apps + subPath: "custom_apps" + - name: nextcloud-data + mountPath: /var/www/tmp + subPath: "tmp" + - name: nextcloud-data + mountPath: /var/www/html/themes + subPath: "themes" +{{ include "common.storage.allAppVolumes" .Values | nindent 6 }} + # Will mount configuration files as www-data (id: 33) for nextcloud + securityContext: + fsGroup: 33 diff --git a/charts/nextcloud/1.1.0/templates/nuke-deployments-hook.yaml b/charts/nextcloud/1.2.0/templates/nuke-deployments-hook.yaml similarity index 67% rename from charts/nextcloud/1.1.0/templates/nuke-deployments-hook.yaml rename to charts/nextcloud/1.2.0/templates/nuke-deployments-hook.yaml index 7307db6c1d..218ea00220 100644 --- a/charts/nextcloud/1.1.0/templates/nuke-deployments-hook.yaml +++ b/charts/nextcloud/1.2.0/templates/nuke-deployments-hook.yaml @@ -1,4 +1,6 @@ {{- if .Values.ixChartContext.isUpgrade -}} +{{ $values := (. | mustDeepCopy) }} +{{ $_ := set $values "common" (dict "nameSuffix" "postgres") }} apiVersion: batch/v1 kind: Job metadata: @@ -14,9 +16,9 @@ spec: name: "pre-upgrade-hook1" spec: restartPolicy: Never - serviceAccountName: "{{ template "nextcloud.serviceAccountName" . }}" + serviceAccountName: "{{ template "common.names.serviceAccountName" . }}" containers: - name: kubectl image: "bitnami/kubectl:1.19" - command: ["kubectl", "delete" , "deployment", "{{ template "nextcloud.fullname" . }}", "{{ template "nextcloud.fullname" . }}-postgres"] + command: ["kubectl", "delete" , "deployment", "{{ template "common.names.fullname" . }}", "{{ template "common.names.fullname" $values }}"] {{- end -}} diff --git a/charts/nextcloud/1.2.0/templates/postgres-deployment.yaml b/charts/nextcloud/1.2.0/templates/postgres-deployment.yaml new file mode 100644 index 0000000000..c325ee8ced --- /dev/null +++ b/charts/nextcloud/1.2.0/templates/postgres-deployment.yaml @@ -0,0 +1,17 @@ +{{ $values := (. | mustDeepCopy) }} +{{ $_ := set $values "common" (dict "nameSuffix" "postgres") }} +{{ include "common.deployment.common_config" $values | nindent 0 }} +spec: {{ include "common.deployment.common_spec" $values | nindent 2 }} + template: {{ include "common.deployment.pod.metadata" $values | nindent 4 }} + spec: + containers: + - name: {{ .Chart.Name }}-postgres + image: {{ template "postgres.imageName" . }} + imagePullPolicy: {{ .Values.image.pullPolicy }} + env: {{ include "postgres.envVariableConfiguration" $values | nindent 10 }} + volumeMounts: {{ include "postgres.volumeMountsConfiguration" $values | nindent 10 }} + ports: + - name: postgres-tcp + containerPort: 5432 + protocol: TCP + volumes: {{ include "postgres.volumeConfiguration" $values | nindent 8 }} diff --git a/charts/nextcloud/1.1.0/templates/postgres-secret.yaml b/charts/nextcloud/1.2.0/templates/postgres-secret.yaml similarity index 100% rename from charts/nextcloud/1.1.0/templates/postgres-secret.yaml rename to charts/nextcloud/1.2.0/templates/postgres-secret.yaml diff --git a/charts/nextcloud/1.2.0/templates/postgres-service.yaml b/charts/nextcloud/1.2.0/templates/postgres-service.yaml new file mode 100644 index 0000000000..c6603fd62b --- /dev/null +++ b/charts/nextcloud/1.2.0/templates/postgres-service.yaml @@ -0,0 +1,6 @@ +{{ $ports := list }} +{{ $ports = mustAppend $ports (dict "name" "postgres-tcp" "port" 5432 "targetPort" 5432) }} +{{ $values := (. | mustDeepCopy) }} +{{ $_ := set $values "common" (dict "nameSuffix" "postgres") }} +{{ $_1 := set $values "commonService" (dict "type" "ClusterIP" "ports" $ports ) }} +{{ include "common.classes.service" $values }} diff --git a/charts/nextcloud/1.1.0/templates/secrets.yaml b/charts/nextcloud/1.2.0/templates/secrets.yaml similarity index 53% rename from charts/nextcloud/1.1.0/templates/secrets.yaml rename to charts/nextcloud/1.2.0/templates/secrets.yaml index 687560016d..eb992940b3 100644 --- a/charts/nextcloud/1.1.0/templates/secrets.yaml +++ b/charts/nextcloud/1.2.0/templates/secrets.yaml @@ -1,12 +1,8 @@ apiVersion: v1 kind: Secret metadata: - name: {{ template "nextcloud.fullname" . }} - labels: - app.kubernetes.io/name: {{ include "nextcloud.name" . }} - helm.sh/chart: {{ include "nextcloud.chart" . }} - app.kubernetes.io/instance: {{ .Release.Name }} - app.kubernetes.io/managed-by: {{ .Release.Service }} + name: {{ template "common.names.fullname" . }} + labels: {{ include "common.labels" . | nindent 4 }} type: Opaque data: nextcloud-username: {{ .Values.nextcloud.username | b64enc | quote }} diff --git a/charts/nextcloud/1.2.0/templates/service.yaml b/charts/nextcloud/1.2.0/templates/service.yaml new file mode 100644 index 0000000000..ead1523381 --- /dev/null +++ b/charts/nextcloud/1.2.0/templates/service.yaml @@ -0,0 +1,6 @@ +{{ $svc := .Values.service }} +{{ $ports := list }} +{{ $ports = mustAppend $ports (dict "name" "http" "port" 80 "nodePort" $svc.nodePort) }} +{{ $params := . }} +{{ $_ := set $params "commonService" (dict "type" "NodePort" "ports" $ports ) }} +{{ include "common.classes.service" $params }} diff --git a/charts/nextcloud/1.1.0/templates/serviceaccount.yaml b/charts/nextcloud/1.2.0/templates/serviceaccount.yaml similarity index 75% rename from charts/nextcloud/1.1.0/templates/serviceaccount.yaml rename to charts/nextcloud/1.2.0/templates/serviceaccount.yaml index c25bd439fd..48213465b0 100644 --- a/charts/nextcloud/1.1.0/templates/serviceaccount.yaml +++ b/charts/nextcloud/1.2.0/templates/serviceaccount.yaml @@ -1,8 +1,4 @@ -apiVersion: v1 -kind: ServiceAccount -metadata: - name: "{{ template "nextcloud.serviceAccountName" . }}" - namespace: {{ .Release.Namespace }} +{{ include "common.serviceaccount" . | nindent 0 }} --- @@ -12,7 +8,7 @@ metadata: name: "{{ .Release.Name }}-service-account-role-binding" subjects: - kind: ServiceAccount - name: "{{ template "nextcloud.serviceAccountName" . }}" + name: "{{ template "common.names.serviceAccountName" . }}" namespace: {{ .Release.Namespace }} roleRef: kind: Role diff --git a/charts/nextcloud/1.2.0/test_values.yaml b/charts/nextcloud/1.2.0/test_values.yaml new file mode 100644 index 0000000000..340b234bce --- /dev/null +++ b/charts/nextcloud/1.2.0/test_values.yaml @@ -0,0 +1,43 @@ +## Official nextcloud image version +## ref: https://hub.docker.com/r/library/nextcloud/tags/ +## +image: + repository: nextcloud + tag: 19.0.3-apache + pullPolicy: IfNotPresent + +nextcloud: + host: nextcloud.kube.home + username: admin + password: changeme + datadir: /var/www/html/data + +updateStrategy: "Recreate" + +postgresql: + backupVolume: + mountPath: "/postgres_backups" + datasetName: "ix-postgres_backups" + dataVolume: + mountPath: "/var/lib/postgresql/data" + datasetName: "ix-postgres_data" + +service: + nodePort: 31000 + +emptyDirVolumes: true +ixChartContext: {} +environmentVariables: [] + +appVolumeMounts: + nextcloud-data: + emptyDir: true + mountPath: "/var/www" + +postgresAppVolumeMounts: + postgres-data: + emptyDir: true + mountPath: "/var/lib/postgresql/data" + postgres-backup: + emptyDir: true + mountPath: "/postgres_backups" diff --git a/charts/nextcloud/1.2.0/values.yaml b/charts/nextcloud/1.2.0/values.yaml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/charts/plex/1.0.0/questions.yaml b/charts/plex/1.0.0/questions.yaml deleted file mode 100644 index f8978c6821..0000000000 --- a/charts/plex/1.0.0/questions.yaml +++ /dev/null @@ -1,274 +0,0 @@ -groups: - - name: "Container Images" - description: "Image to be used for container" - - name: "Container Entrypoint" - description: "Configuration of the executable that will be run when the container is started" - - name: "Container Environment Variables" - description: "Set the environment that will be visible to the container" - - name: "Networking" - description: "Configure networking for container" - - name: "Storage" - description: "Persist and share data that is separate from the lifecycle of the container" - - name: "Plex Configuration" - description: "Configure plex deployment" - - name: "Workload Details" - description: "Configure how workload should be deployed" - - name: "Scaling/Upgrade Policy" - description: "Configure how pods are replaced when configuration is upgraded" - - name: "Restart Policy" - description: "Configure when pod should be restarted in case of failure" - - name: "Resource Reservation" - description: "Specify resources to be allocated to workload" - -portals: - web_portal: - protocols: - - "http" - host: - - "$node_ip" - ports: - - "$variable-plexServiceTCP.port" - path: "/web" - -questions: - # Image related - - variable: image - description: "Docker Image Details" - label: "Docker Image" - group: "Container Images" - schema: - type: dict - required: true - attrs: - - variable: repository - description: "Docker image repository" - label: "Image repository" - schema: - type: string - required: true - default: "plexinc/pms-docker" - - variable: tag - description: "Tag to use for specified image" - label: "Image Tag" - schema: - type: string - default: "1.20.2.3402-0fec14d92" - - variable: pullPolicy - description: "Docker Image Pull Policy" - label: "Image Pull Policy" - schema: - type: string - default: "IfNotPresent" - enum: - - value: "IfNotPresent" - description: "Only pull image if not present on host" - - value: "Always" - description: "Always pull image even if present on host" - - value: "Never" - description: "Never pull image even if it's not present on host" - - - variable: claimToken - label: "Plex Claim Token" - group: "Plex Configuration" - schema: - type: string - default: "" - - - variable: advertiseIp - label: "Plex Advertise IP" - group: "Plex Configuration" - schema: - type: string - - - variable: extraEnv - label: "Environment variables for plex" - group: "Plex Configuration" - schema: - type: dict - additional_attrs: true - attrs: [] - - - variable: proxy - label: "Configure Proxy environment variable" - group: "Plex Configuration" - schema: - type: dict - attrs: - - variable: enabled - label: "Enable Proxy" - schema: - type: boolean - default: false - - variable: http - label: "HTTP Proxy" - schema: - type: string - - variable: https - label: "HTTPS Proxy" - schema: - type: string - - - variable: hostNetwork - label: "Configure Host Network" - group: "Networking" - schema: - type: boolean - default: false - - - variable: timezone - label: "Plex container timezone" - group: "Plex Configuration" - schema: - type: string - default: "Etc/UTC" - $ref: - - "definitions/timezone" - - # Update strategy - - variable: strategyType - description: "Upgrade Policy" - label: "Update Strategy" - group: "Scaling/Upgrade Policy" - schema: - type: string - default: "Recreate" - enum: - - value: "RollingUpdate" - description: "Create new pods and then kill old ones" - - value: "Recreate" - description: "Kill existing pods before creating new ones" - - # Port configuration - - variable: plexServiceTCP - label: "Configure Plex TCP Service" - group: "Networking" - schema: - type: dict - attrs: - - variable: port - label: "Port to expose for Plex UI" - schema: - type: int - min: 9000 - max: 65535 - default: 32400 - - - variable: transcodeHostPathEnabled - label: "Configure Host Path for Transcode" - group: "Storage" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: transcodeHostPath - label: "Specify HostPath for Transcode" - schema: - type: hostpath - required: true - - - variable: transcodeVolume - label: "Configure iXVolume" - group: "Storage" - schema: - type: dict - show_if: [["transcodeHostPathEnabled", "=", false]] - $ref: - - "normalize/ixVolume" - attrs: - - variable: mountPath - label: "Mount Path" - description: "Path where the volume will be mounted inside the pod" - schema: - type: path - editable: false - default: "/transcode" - - variable: datasetName - label: "Dataset Name" - schema: - type: string - default: "ix-plex_transcode" - editable: false - - - variable: dataHostPathEnabled - label: "Configure Host Path for Data" - group: "Storage" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: dataHostPath - label: "Specify HostPath for Data" - schema: - type: hostpath - required: true - - - variable: dataVolume - label: "Configure data iXVolume" - group: "Storage" - schema: - type: dict - show_if: [["dataHostPathEnabled", "=", false]] - $ref: - - "normalize/ixVolume" - attrs: - - variable: mountPath - label: "Mount Path" - description: "Path where the volume will be mounted inside the pod" - schema: - type: path - editable: false - default: "/data" - - variable: datasetName - label: "Dataset Name" - schema: - type: string - default: "ix-plex_data" - editable: false - - - variable: configHostPathEnabled - label: "Configure Host Path for Config" - group: "Storage" - schema: - type: boolean - default: false - show_subquestions_if: true - subquestions: - - variable: configHostPath - label: "Specify HostPath for Config" - schema: - type: hostpath - required: true - - - variable: configVolume - label: "Configure iXVolume" - group: "Storage" - schema: - type: dict - show_if: [["configHostPathEnabled", "=", false]] - $ref: - - "normalize/ixVolume" - attrs: - - variable: mountPath - label: "Mount Path" - description: "Path where the volume will be mounted inside the pod" - schema: - type: path - editable: false - default: "/config" - - variable: datasetName - label: "Dataset Name" - schema: - type: string - default: "ix-plex_config" - editable: false - - # Specify GPU configuration - - variable: gpuConfiguration - label: "GPU Configuration" - group: "Resource Reservation" - schema: - type: dict - $ref: - - "definitions/gpuConfiguration" diff --git a/charts/plex/1.0.0/templates/_helpers.tpl b/charts/plex/1.0.0/templates/_helpers.tpl deleted file mode 100644 index 18ddff7f7e..0000000000 --- a/charts/plex/1.0.0/templates/_helpers.tpl +++ /dev/null @@ -1,81 +0,0 @@ -{{/* vim: set filetype=mustache: */}} -{{/* -Expand the name of the chart. -*/}} -{{- define "plex.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Create a default fully qualified app name. -We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). -If release name contains chart name it will be used as a full name. -*/}} -{{- define "plex.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 -}} - -{{/* -Create chart name and version as used by the chart label. -*/}} -{{- define "plex.chart" -}} -{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}} -{{- end -}} - -{{/* -Common labels -*/}} -{{- define "plex.labels" -}} -helm.sh/chart: {{ include "plex.chart" . }} -{{ include "plex.selectorLabels" . }} -{{- if .Chart.AppVersion }} -app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} -{{- end }} -app.kubernetes.io/managed-by: {{ .Release.Service }} -{{- end -}} - -{{/* -Selector labels -*/}} -{{- define "plex.selectorLabels" -}} -app.kubernetes.io/name: {{ include "plex.name" . }} -app.kubernetes.io/instance: {{ .Release.Name }} -{{- end -}} - -{{/* -Create the name of the service account to use -*/}} -{{- define "plex.serviceAccountName" -}} -{{- if .Values.serviceAccount.create -}} - {{ default (include "plex.fullname" .) .Values.serviceAccount.name }} -{{- else -}} - {{ default "default" .Values.serviceAccount.name }} -{{- end -}} -{{- end -}} - -{{/* -abstract: | - Joins a list of values into a comma separated string -values: | - test: - - foo - - bar -usage: | - {{ include "joinListWithComma" .Values.test }} -return: | - foo,bar -*/}} - -{{- define "joinListWithComma" -}} -{{- $local := dict "first" true -}} -{{- range $k, $v := . -}}{{- if not $local.first -}},{{- end -}}{{- $v -}}{{- $_ := set $local "first" false -}}{{- end -}} -{{- end -}} \ No newline at end of file diff --git a/charts/plex/1.0.0/templates/_storage.tpl b/charts/plex/1.0.0/templates/_storage.tpl deleted file mode 100644 index ef34fcb041..0000000000 --- a/charts/plex/1.0.0/templates/_storage.tpl +++ /dev/null @@ -1,50 +0,0 @@ -{{/* -Retrieve host path from ix volumes based on dataset name -*/}} -{{- define "retrieveHostPathFromiXVolume" -}} -{{- range $index, $hostPathConfiguration := $.ixVolumes }} -{{- $dsName := base $hostPathConfiguration.hostPath -}} -{{- if eq $.datasetName $dsName -}} -{{- $hostPathConfiguration.hostPath -}} -{{- end -}} -{{- end }} -{{- end -}} - -{{/* -Retrieve host path for transcode -Let's please remove the redundancy -*/}} -{{- define "configuredHostPathTranscode" -}} -{{- if .Values.transcodeHostPathEnabled -}} -{{- .Values.transcodeHostPath -}} -{{- else -}} -{{- $volDict := dict "datasetName" $.Values.transcodeVolume.datasetName "ixVolumes" $.Values.ixVolumes -}} -{{- include "retrieveHostPathFromiXVolume" $volDict -}} -{{- end -}} -{{- end -}} - -{{/* -Retrieve host path for data -Let's please remove the redundancy -*/}} -{{- define "configuredHostPathData" -}} -{{- if .Values.dataHostPathEnabled -}} -{{- .Values.dataHostPath -}} -{{- else -}} -{{- $volDict := dict "datasetName" $.Values.dataVolume.datasetName "ixVolumes" $.Values.ixVolumes -}} -{{- include "retrieveHostPathFromiXVolume" $volDict -}} -{{- end -}} -{{- end -}} - -{{/* -Retrieve host path for transcode -Let's please remove the redundancy -*/}} -{{- define "configuredHostPathConfig" -}} -{{- if .Values.configHostPathEnabled -}} -{{- .Values.configHostPath -}} -{{- else -}} -{{- $volDict := dict "datasetName" $.Values.configVolume.datasetName "ixVolumes" $.Values.ixVolumes -}} -{{- include "retrieveHostPathFromiXVolume" $volDict -}} -{{- end -}} -{{- end -}} diff --git a/charts/plex/1.0.0/templates/deployment.yaml b/charts/plex/1.0.0/templates/deployment.yaml deleted file mode 100644 index 059ecbef27..0000000000 --- a/charts/plex/1.0.0/templates/deployment.yaml +++ /dev/null @@ -1,153 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: {{ include "plex.fullname" . }} - labels: - {{- include "plex.labels" . | nindent 4 }} -spec: - replicas: 1 - revisionHistoryLimit: 3 - strategy: - type: {{ .Values.strategyType }} - selector: - matchLabels: - {{- include "plex.selectorLabels" . | nindent 6 }} - template: - metadata: - labels: - {{- include "plex.selectorLabels" . | nindent 8 }} - annotations: - rollme: {{ randAlphaNum 5 | quote }} - spec: - {{- if .Values.hostNetwork }} - hostNetwork: {{ .Values.hostNetwork }} - dnsPolicy: ClusterFirstWithHostNet - {{- end }} - containers: - - name: {{ .Chart.Name }} - image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" - imagePullPolicy: {{ .Values.image.pullPolicy }} - ports: - - name: pms - protocol: TCP - containerPort: 32400 - {{- if .Values.hostNetwork }} - hostPort: {{ .Values.plexServiceTCP.port }} - {{- end }} - - name: plex-dlna - protocol: TCP - containerPort: 32469 - - name: plex-dlna-udp - protocol: UDP - containerPort: 1900 - - name: plex-gdm1 - protocol: UDP - containerPort: 32410 - - name: plex-gdm2 - protocol: UDP - containerPort: 32412 - - name: plex-gdm3 - protocol: UDP - containerPort: 32413 - - name: plex-gdm4 - protocol: UDP - containerPort: 32414 - env: - - name: TZ - value: "{{ .Values.timezone }}" - # TODO: move this to a secret? - - name: PLEX_CLAIM - value: "{{ .Values.claimToken }}" - # plex env vars - - name: PMS_INTERNAL_ADDRESS - value: http://{{ template "plex.fullname" . }}:32400 - - name: PMS_IMAGE - value: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" - - name: KUBE_NAMESPACE - valueFrom: - fieldRef: - fieldPath: metadata.namespace - {{- if .Values.proxy.enabled }} - {{- if .Values.proxy.http }} - - name: "HTTP_PROXY" - value: "{{.Values.proxy.http}}" - {{- end }} - {{- if .Values.proxy.https }} - - name: "HTTPS_PROXY" - value: "{{.Values.proxy.https}}" - {{- end }} - {{- end }} - {{- if .Values.advertiseIp }} - - name: "ADVERTISE_IP" - value: "{{.Values.advertiseIp}}" -{{- end }} -{{- if .Values.allowedNetworks }} - - name: "ALLOWED_NETWORKS" - value: "{{include "joinListWithComma" .Values.allowedNetworks}}" -{{- end }} -# Extra ENV Values supplied by user -{{- range $key, $value := .Values.extraEnv }} - - name: {{ $key }} - value: {{ $value }} -{{- end }} - readinessProbe: - httpGet: - path: /identity - port: 32400 - failureThreshold: 5 - periodSeconds: 15 - livenessProbe: - httpGet: - path: /identity - port: 32400 - failureThreshold: 5 - periodSeconds: 15 - startupProbe: - httpGet: - path: /identity - port: 32400 - initialDelaySeconds: 5 - failureThreshold: 40 - periodSeconds: 15 - volumeMounts: - - name: data - mountPath: /data - - name: config - mountPath: /config - - name: transcode - mountPath: /transcode - - name: shared - mountPath: /shared - - name: shared-logs - mountPath: "/config/Library/Application Support/Plex Media Server/Logs" - {{- if .Values.gpuConfiguration }} - resources: - limits: - {{- toYaml .Values.gpuConfiguration | nindent 14 }} - {{- end }} - volumes: - - name: data - {{- if .Values.emptyDirVolumes }} - emptyDir: {} - {{- else }} - hostPath: - path: {{ template "configuredHostPathData" . }} - {{- end }} - - name: config - {{- if .Values.emptyDirVolumes }} - emptyDir: {} - {{- else }} - hostPath: - path: {{ template "configuredHostPathConfig" . }} - {{- end }} - - name: transcode - {{- if .Values.emptyDirVolumes }} - emptyDir: {} - {{- else }} - hostPath: - path: {{ template "configuredHostPathTranscode" . }} - {{- end }} - - name: shared - emptyDir: {} - - name: shared-logs - emptyDir: {} diff --git a/charts/plex/1.0.0/templates/service-tcp.yaml b/charts/plex/1.0.0/templates/service-tcp.yaml deleted file mode 100644 index 48a69eef18..0000000000 --- a/charts/plex/1.0.0/templates/service-tcp.yaml +++ /dev/null @@ -1,35 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - {{- if .Values.hostNetwork }} - name: {{ include "plex.fullname" . }}-tcp-cluster-ip - {{- else }} - name: {{ include "plex.fullname" . }}-tcp - {{- end }} - labels: - {{- include "plex.labels" . | nindent 4 }} -spec: - {{- if .Values.hostNetwork }} - type: ClusterIP - {{- else }} - type: NodePort - {{- end }} - ports: - - name: pms - port: {{ .Values.plexServiceTCP.port }} - protocol: TCP - targetPort: pms - {{- if eq .Values.hostNetwork false }} - nodePort: {{.Values.plexServiceTCP.port}} - {{- end }} - - name: http - port: 80 - targetPort: pms - - name: https - port: 443 - targetPort: pms - - name: plex-dlna - port: 1900 - targetPort: plex-dlna - selector: - {{- include "plex.selectorLabels" . | nindent 4 }} diff --git a/charts/plex/1.0.0/templates/service-udp.yaml b/charts/plex/1.0.0/templates/service-udp.yaml deleted file mode 100644 index e13ae5658a..0000000000 --- a/charts/plex/1.0.0/templates/service-udp.yaml +++ /dev/null @@ -1,31 +0,0 @@ -apiVersion: v1 -kind: Service -metadata: - name: {{ include "plex.fullname" . }}-udp - labels: - {{- include "plex.labels" . | nindent 4 }} -spec: - type: ClusterIP - ports: - - name: plex-dlna-udp - port: 1900 - protocol: UDP - targetPort: plex-dlna-udp - - name: plex-gdm1 - port: 32410 - protocol: UDP - targetPort: plex-gdm1 - - name: plex-gdm2 - port: 32412 - protocol: UDP - targetPort: plex-gdm2 - - name: plex-gdm3 - port: 32413 - protocol: UDP - targetPort: plex-gdm3 - - name: plex-gdm4 - port: 32414 - protocol: UDP - targetPort: plex-gdm4 - selector: - {{- include "plex.selectorLabels" . | nindent 4 }} diff --git a/charts/plex/1.0.0/.helmignore b/charts/plex/1.1.0/.helmignore similarity index 100% rename from charts/plex/1.0.0/.helmignore rename to charts/plex/1.1.0/.helmignore diff --git a/charts/plex/1.1.0/Chart.lock b/charts/plex/1.1.0/Chart.lock new file mode 100644 index 0000000000..1bb2d56e4b --- /dev/null +++ b/charts/plex/1.1.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../library/common/2101.0.0 + version: 2101.0.0 +digest: sha256:6ab46f958de11ae6a24d8f7e18417aa9852a8d968d5b0cc94ffa4700449931d6 +generated: "2021-02-04T01:15:55.470042+05:00" diff --git a/charts/plex/1.0.0/Chart.yaml b/charts/plex/1.1.0/Chart.yaml similarity index 73% rename from charts/plex/1.0.0/Chart.yaml rename to charts/plex/1.1.0/Chart.yaml index 222456f250..2d82d67bc3 100644 --- a/charts/plex/1.0.0/Chart.yaml +++ b/charts/plex/1.1.0/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 appVersion: 1.20.2.3402 description: Plex Media Server name: plex -version: 1.0.0 +version: 1.1.0 keywords: - plex home: https://plex.tv/ @@ -11,3 +11,8 @@ sources: - https://hub.docker.com/r/plexinc/pms-docker/ - https://github.com/k8s-at-home/charts/tree/master/charts/plex upstream_version: 2.1.0 +dependencies: + - name: common + repository: file://../../../library/common/2101.0.0 + version: 2101.0.0 + diff --git a/charts/plex/1.0.0/README.md b/charts/plex/1.1.0/README.md similarity index 100% rename from charts/plex/1.0.0/README.md rename to charts/plex/1.1.0/README.md diff --git a/charts/plex/1.0.0/app-readme.md b/charts/plex/1.1.0/app-readme.md similarity index 100% rename from charts/plex/1.0.0/app-readme.md rename to charts/plex/1.1.0/app-readme.md diff --git a/charts/plex/1.1.0/charts/common-2101.0.0.tgz b/charts/plex/1.1.0/charts/common-2101.0.0.tgz new file mode 100644 index 0000000000..3a22457ea6 Binary files /dev/null and b/charts/plex/1.1.0/charts/common-2101.0.0.tgz differ diff --git a/charts/plex/1.0.0/test_values.yaml b/charts/plex/1.1.0/default_values.yaml similarity index 86% rename from charts/plex/1.0.0/test_values.yaml rename to charts/plex/1.1.0/default_values.yaml index e87d30077c..12b8b12cc6 100644 --- a/charts/plex/1.0.0/test_values.yaml +++ b/charts/plex/1.1.0/default_values.yaml @@ -50,17 +50,13 @@ timezone: "Etc/UTC" # TMPDIR: /transcode # upgrade strategy type (e.g. Recreate or RollingUpdate) -strategyType: Recreate +updateStrategy: Recreate plexServiceTCP: port: 32400 hostNetwork: false -transcodeHostPathEnabled: false -dataHostPathEnabled: false -configHostPathEnabled: false - proxy: # This allows to set a proxy environment variable, which PMS uses to fetch the token and assets like movie cover enabled: false @@ -69,4 +65,20 @@ proxy: # noproxy: "localhost,127.0.0.1,10.96.0.0/12,10.244.0.0/12" gpuConfiguration: {} -emptyDirVolumes: true + +appVolumeMounts: + transcode: + emptyDir: true + mountPath: "/transcode" + data: + emptyDir: true + mountPath: "/data" + config: + emptyDir: true + mountPath: "/config" + shared: + emptyDir: true + mountPath: "shared" + shared-logs: + emptyDir: true + mountPath: "/config/Library/Application Support/Plex Media Server/Logs" diff --git a/charts/plex/1.1.0/migrations/migrate b/charts/plex/1.1.0/migrations/migrate new file mode 100755 index 0000000000..a93c1d9f47 --- /dev/null +++ b/charts/plex/1.1.0/migrations/migrate @@ -0,0 +1,34 @@ +#!/usr/bin/python3 +import json +import os +import sys + + +def migrate(values): + values.update({ + 'appVolumeMounts': { + 'transcode': { + 'hostPathEnabled': values['transcodeHostPathEnabled'], + **({'hostPath': values['transcodeHostPath']} if values.get('transcodeHostPath') else {}) + }, + 'config': { + 'hostPathEnabled': values['configHostPathEnabled'], + **({'hostPath': values['configHostPath']} if values.get('configHostPath') else {}) + }, + 'data': { + 'hostPathEnabled': values['dataHostPathEnabled'], + **({'hostPath': values['dataHostPath']} if values.get('dataHostPath') else {}) + }, + }, + 'updateStrategy': values.get('strategyType', 'Recreate'), + }) + return values + + +if __name__ == '__main__': + if len(sys.argv) != 2: + exit(1) + + if os.path.exists(sys.argv[1]): + with open(sys.argv[1], 'r') as f: + print(json.dumps(migrate(json.loads(f.read())))) diff --git a/charts/plex/1.1.0/questions.yaml b/charts/plex/1.1.0/questions.yaml new file mode 100644 index 0000000000..37649228de --- /dev/null +++ b/charts/plex/1.1.0/questions.yaml @@ -0,0 +1,301 @@ +groups: + - name: "Container Images" + description: "Image to be used for container" + - name: "Container Entrypoint" + description: "Configuration of the executable that will be run when the container is started" + - name: "Container Environment Variables" + description: "Set the environment that will be visible to the container" + - name: "Networking" + description: "Configure networking for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Plex Configuration" + description: "Configure plex deployment" + - name: "Workload Details" + description: "Configure how workload should be deployed" + - name: "Scaling/Upgrade Policy" + description: "Configure how pods are replaced when configuration is upgraded" + - name: "Restart Policy" + description: "Configure when pod should be restarted in case of failure" + - name: "Resource Reservation" + description: "Specify resources to be allocated to workload" + +portals: + web_portal: + protocols: + - "http" + host: + - "$node_ip" + ports: + - "$variable-plexServiceTCP.port" + path: "/web" + +questions: + # Image related + - variable: image + description: "Docker Image Details" + label: "Docker Image" + group: "Container Images" + schema: + type: dict + required: true + attrs: + - variable: repository + description: "Docker image repository" + label: "Image repository" + schema: + type: string + required: true + default: "plexinc/pms-docker" + - variable: tag + description: "Tag to use for specified image" + label: "Image Tag" + schema: + type: string + default: "1.20.2.3402-0fec14d92" + - variable: pullPolicy + description: "Docker Image Pull Policy" + label: "Image Pull Policy" + schema: + type: string + default: "IfNotPresent" + enum: + - value: "IfNotPresent" + description: "Only pull image if not present on host" + - value: "Always" + description: "Always pull image even if present on host" + - value: "Never" + description: "Never pull image even if it's not present on host" + + - variable: claimToken + label: "Plex Claim Token" + group: "Plex Configuration" + description: "The claim token for the server to obtain a real server token. If not provided, server is will not be automatically logged in. If server is already logged in, this parameter is ignored. You can obtain a claim token to login your server to your plex account by visiting https://www.plex.tv/claim." + schema: + type: string + default: "" + + - variable: hostNetwork + label: "Configure Host Network" + group: "Networking" + schema: + type: boolean + default: false + + - variable: environmentVariables + label: "Environment Variables for Plex" + group: "Plex 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: timezone + label: "Plex container timezone" + group: "Plex Configuration" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Update strategy + - variable: updateStrategy + description: "Upgrade Policy" + label: "Update Strategy" + group: "Scaling/Upgrade Policy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + + # Port configuration + - variable: plexServiceTCP + label: "Configure Plex TCP Service" + group: "Networking" + schema: + type: dict + attrs: + - variable: port + label: "Port to expose for Plex UI" + schema: + type: int + min: 9000 + max: 65535 + default: 32400 + + # Specify GPU configuration + - variable: gpuConfiguration + label: "GPU Configuration" + group: "Resource Reservation" + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + + - variable: appVolumeMounts + label: "Plex Storage" + group: "Storage" + schema: + type: dict + attrs: + - variable: transcode + label: "Transcode Volume" + schema: + type: dict + attrs: + - variable: datasetName + label: "Plex Transcode Volume Name" + schema: + type: string + $ref: + - "normalize/ixVolume" + show_if: [["hostPathEnabled", "=", false]] + default: "ix-plex_transcode" + hidden: true + editable: false + - variable: mountPath + label: "Plex Transcode Mount Path" + description: "Path where the volume will be mounted inside the pod" + schema: + type: path + hidden: true + editable: false + default: "/transcode" + - variable: hostPathEnabled + label: "Enable Host Path for Plex Transcode Volume" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostPath + label: "Host Path for Plex Transcode Volume" + schema: + type: hostpath + required: true + - variable: data + label: "Data Volume" + schema: + type: dict + attrs: + - variable: datasetName + label: "Plex Data Volume Name" + schema: + type: string + $ref: + - "normalize/ixVolume" + show_if: [["hostPathEnabled", "=", false]] + default: "ix-plex_data" + editable: false + hidden: true + - variable: mountPath + label: "Plex Data Mount Path" + description: "Path where the volume will be mounted inside the pod" + schema: + type: path + hidden: true + editable: false + default: "/data" + - variable: hostPathEnabled + label: "Enable Host Path for Plex Data Volume" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostPath + label: "Host Path for Plex Data Volume" + schema: + type: hostpath + required: true + - variable: config + label: "Config Volume" + schema: + type: dict + attrs: + - variable: datasetName + label: "Plex Config Volume Name" + schema: + type: string + $ref: + - "normalize/ixVolume" + show_if: [["hostPathEnabled", "=", false]] + default: "ix-plex_config" + editable: false + hidden: true + - variable: mountPath + label: "Plex Config Mount Path" + description: "Path where the volume will be mounted inside the pod" + schema: + type: path + editable: false + hidden: true + default: "/config" + - variable: hostPathEnabled + label: "Enable Host Path for Plex Config Volume" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostPath + label: "Host Path for Plex Config Volume" + schema: + type: hostpath + required: true + - variable: shared + label: "Shared Volume" + schema: + type: dict + hidden: true + attrs: + - variable: emptyDir + label: "Temporary Volume" + schema: + type: boolean + default: true + editable: false + - variable: mountPath + label: "Plex Shared Mount Path" + description: "Path where the volume will be mounted inside the pod" + schema: + type: path + editable: false + default: "/shared" + - variable: shared-logs + label: "Shared Logs Volume" + schema: + type: dict + hidden: true + attrs: + - variable: emptyDir + label: "Temporary Volume" + schema: + type: boolean + default: true + editable: false + - variable: mountPath + label: "Plex Shared Logs Mount Path" + description: "Path where the volume will be mounted inside the pod" + schema: + type: path + editable: false + default: "/config/Library/Application Support/Plex Media Server/Logs" diff --git a/charts/plex/1.0.0/templates/NOTES.txt b/charts/plex/1.1.0/templates/NOTES.txt similarity index 100% rename from charts/plex/1.0.0/templates/NOTES.txt rename to charts/plex/1.1.0/templates/NOTES.txt diff --git a/charts/plex/1.1.0/templates/deployment.yaml b/charts/plex/1.1.0/templates/deployment.yaml new file mode 100644 index 0000000000..6f3283aa64 --- /dev/null +++ b/charts/plex/1.1.0/templates/deployment.yaml @@ -0,0 +1,69 @@ +{{ include "common.deployment.common_config" . | nindent 0 }} +spec: {{ include "common.deployment.common_spec" . | nindent 2 }} + template: {{ include "common.deployment.pod.metadata" . | nindent 4 }} + spec: + {{- if .Values.hostNetwork }} + hostNetwork: {{ .Values.hostNetwork }} + dnsPolicy: ClusterFirstWithHostNet + {{- end }} + containers: + - name: {{ .Chart.Name }} + {{ include "common.containers.imageConfig" .Values.image | nindent 10 }} + {{ include "common.storage.allContainerVolumeMounts" .Values | nindent 10 }} + {{ include "common.containers.gpuConfiguration" .Values | nindent 10 }} + ports: + - name: pms + protocol: TCP + containerPort: 32400 + {{- if .Values.hostNetwork }} + hostPort: {{ .Values.plexServiceTCP.port }} + {{- end }} + - name: plex-dlna + protocol: TCP + containerPort: 32469 + - name: plex-dlna-udp + protocol: UDP + containerPort: 1900 + - name: plex-gdm1 + protocol: UDP + containerPort: 32410 + - name: plex-gdm2 + protocol: UDP + containerPort: 32412 + - name: plex-gdm3 + protocol: UDP + containerPort: 32413 + - name: plex-gdm4 + protocol: UDP + containerPort: 32414 + env: + - name: KUBE_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + {{ $envList := (default list .Values.environmentVariables) }} + {{ $envList = mustAppend $envList (dict "name" "TZ" "value" .Values.timezone) }} + {{ $envList = mustAppend $envList (dict "name" "PLEX_CLAIM" "value" .Values.claimToken) }} + {{ $envList = mustAppend $envList (dict "name" "PMS_INTERNAL_ADDRESS" "value" (printf "http://%s:32400" (include "common.names.fullname" .))) }} + {{ $envList = mustAppend $envList (dict "name" "PMS_IMAGE" "value" (printf "%s:%s" .Values.image.repository .Values.image.tag))}} + {{ include "common.containers.environmentVariables" (dict "environmentVariables" $envList) | nindent 12 }} + readinessProbe: + httpGet: + path: /identity + port: 32400 + failureThreshold: 5 + periodSeconds: 15 + livenessProbe: + httpGet: + path: /identity + port: 32400 + failureThreshold: 5 + periodSeconds: 15 + startupProbe: + httpGet: + path: /identity + port: 32400 + initialDelaySeconds: 5 + failureThreshold: 40 + periodSeconds: 15 +{{ include "common.storage.allAppVolumes" .Values | nindent 6 }} diff --git a/charts/plex/1.1.0/templates/service-tcp.yaml b/charts/plex/1.1.0/templates/service-tcp.yaml new file mode 100644 index 0000000000..4fec88260b --- /dev/null +++ b/charts/plex/1.1.0/templates/service-tcp.yaml @@ -0,0 +1,16 @@ +{{ $svc := .Values.plexServiceTCP }} +{{ $ports := list }} +{{ $ports = mustAppend $ports (dict "name" "pms" "port" $svc.port "nodePort" $svc.port "targetPort" "pms") }} +{{ $ports = mustAppend $ports (dict "name" "http" "port" 80 "targetPort" "pms") }} +{{ $ports = mustAppend $ports (dict "name" "https" "port" 443 "targetPort" "pms") }} +{{ $ports = mustAppend $ports (dict "name" "plex-dlna" "port" 1900 "targetPort" "plex-dlna") }} +{{ $params := . }} +{{ $_ := set $params "commonService" (dict "ports" $ports ) }} +{{ if .Values.hostNetwork }} +{{ $_ := set $params.commonService "nameSuffix" "tcp-cluster-ip" }} +{{ $_1 := set $params.commonService "type" "ClusterIP" }} +{{ else }} +{{ $_ := set $params.commonService "nameSuffix" "tcp" }} +{{ $_1 := set $params.commonService "type" "NodePort" }} +{{ end }} +{{ include "common.classes.service" $params }} diff --git a/charts/plex/1.1.0/templates/service-udp.yaml b/charts/plex/1.1.0/templates/service-udp.yaml new file mode 100644 index 0000000000..5a84addc99 --- /dev/null +++ b/charts/plex/1.1.0/templates/service-udp.yaml @@ -0,0 +1,9 @@ +{{ $ports := list }} +{{ $ports = mustAppend $ports (dict "name" "plex-dlna-udp" "port" 1900 "protocol" "UDP" "targetPort" "plex-dlna-udp") }} +{{ $ports = mustAppend $ports (dict "name" "plex-gdm1" "port" 32410 "protocol" "UDP" "targetPort" "plex-gdm1") }} +{{ $ports = mustAppend $ports (dict "name" "plex-gdm2" "port" 32412 "protocol" "UDP" "targetPort" "plex-gdm2") }} +{{ $ports = mustAppend $ports (dict "name" "plex-gdm3" "port" 32413 "protocol" "UDP" "targetPort" "plex-gdm3") }} +{{ $ports = mustAppend $ports (dict "name" "plex-gdm4" "port" 32414 "protocol" "UDP" "targetPort" "plex-gdm4") }} +{{ $params := . }} +{{ $_ := set $params "commonService" (dict "type" "ClusterIP" "ports" $ports "nameSuffix" "udp" ) }} +{{ include "common.classes.service" $params }} diff --git a/charts/plex/1.0.0/values.yaml b/charts/plex/1.1.0/test_values.yaml similarity index 83% rename from charts/plex/1.0.0/values.yaml rename to charts/plex/1.1.0/test_values.yaml index f1a1754a54..cfb8ac7e36 100644 --- a/charts/plex/1.0.0/values.yaml +++ b/charts/plex/1.1.0/test_values.yaml @@ -50,22 +50,31 @@ timezone: "Etc/UTC" # TMPDIR: /transcode # upgrade strategy type (e.g. Recreate or RollingUpdate) -strategyType: Recreate +updateStrategy: "Recreate" plexServiceTCP: port: 32400 hostNetwork: false -transcodeHostPathEnabled: false -dataHostPathEnabled: false -configHostPathEnabled: false - -proxy: - # This allows to set a proxy environment variable, which PMS uses to fetch the token and assets like movie cover - enabled: false - # http: "http://proxy:8080" - # https: "https://proxy:8080" - # noproxy: "localhost,127.0.0.1,10.96.0.0/12,10.244.0.0/12" +environmentVariables: [] gpuConfiguration: {} +emptyDirVolumes: true + +appVolumeMounts: + transcode: + emptyDir: true + mountPath: "/transcode" + data: + emptyDir: true + mountPath: "/data" + config: + emptyDir: true + mountPath: "/config" + shared: + emptyDir: true + mountPath: "shared" + shared-logs: + emptyDir: true + mountPath: "/config/Library/Application Support/Plex Media Server/Logs" diff --git a/charts/plex/1.1.0/values.yaml b/charts/plex/1.1.0/values.yaml new file mode 100644 index 0000000000..e69de29bb2