Merge pull request #30 from truenas/library-chart

Introduce Library Chart for Official Catalog
This commit is contained in:
Waqar Ahmed
2021-02-05 18:53:18 +05:00
committed by GitHub
111 changed files with 1783 additions and 1778 deletions

View File

@@ -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
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/

View File

@@ -0,0 +1,23 @@
apiVersion: v2
name: common
description: A library chart for iX Official Catalog
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: library
# 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: 2101.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

View File

@@ -0,0 +1,11 @@
# Library Chart for iX Official Catalog iX Chart
**WARNING: THIS CHART IS NOT MEANT TO BE INSTALLED DIRECTLY**
This is a [Helm Library Chart](https://helm.sh/docs/topics/library_charts/#helm). It's purpose is for grouping common logic between the k8s@home charts.
Since a lot of charts follow the same pattern this library was built to reduce maintenance cost between the charts that use it and try achieve a goal of being DRY.
## Introduction
This chart provides common template helpers which can be used to develop new charts using [Helm](https://helm.sh) package manager.

View File

@@ -0,0 +1,11 @@
{{/*
Common service account
*/}}
{{- define "common.serviceaccount" -}}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "common.names.serviceAccountName" . | quote }}
namespace: {{ .Release.Namespace | quote }}
labels: {{- include "common.labels.selectorLabels" . | nindent 4 -}}
{{- end -}}

View File

@@ -0,0 +1,41 @@
{{/*
This template serves as a blueprint for all Service objects that are created
within the common library.
*/}}
{{- define "common.classes.service" -}}
{{- $values := .commonService -}}
{{- $serviceName := include "common.names.fullname" . -}}
{{- if hasKey $values "nameSuffix" -}}
{{- $serviceName = (printf "%v-%v" $serviceName $values.nameSuffix) -}}
{{ end -}}
{{- $svcType := $values.type | default "" -}}
apiVersion: v1
kind: Service
metadata:
name: {{ $serviceName }}
labels:
{{- include "common.labels" . | nindent 4 }}
{{- if $values.labels }}
{{ toYaml $values.labels | nindent 4 }}
{{- end }}
{{- if $values.annotations }}
{{- with $values.annotations }}
annotations:
{{ toYaml . | nindent 4 }}
{{- end }}
{{- end }}
spec:
{{- if (or (eq $svcType "ClusterIP") (empty $svcType)) }}
type: ClusterIP
{{- if $values.clusterIP }}
clusterIP: {{ $values.clusterIP }}
{{end}}
{{- else if eq $svcType "NodePort" }}
type: {{ $svcType }}
{{- else }}
{{- fail "Only ClusterIP and NodePort services are supported in common chart" }}
{{- end }}
{{- include "common.classes.service.ports" (dict "svcType" $svcType "values" $values ) | trim | nindent 2 }}
selector:
{{- include "common.labels.selectorLabels" . | nindent 4 }}
{{- end }}

View File

@@ -0,0 +1,19 @@
{{/*
Render all the ports and additionalPorts for a Service object.
*/}}
{{- define "common.classes.service.ports" -}}
{{- $values := .values -}}
{{- $ports := $values.ports -}}
{{- if $ports -}}
ports:
{{- range $_ := $ports }}
- port: {{ .port }}
targetPort: {{ .targetPort | default "http" }}
protocol: {{ .protocol | default "TCP" }}
name: {{ .name | default "http" }}
{{- if (and (eq $.svcType "NodePort") (not (empty .nodePort))) }}
nodePort: {{ .nodePort }}
{{ end }}
{{- end -}}
{{- end -}}
{{- end }}

View File

@@ -0,0 +1,6 @@
{{/*
Common workload annotations
*/}}
{{- define "common.annotations" -}}
rollme: {{ randAlphaNum 5 | quote }}
{{- end -}}

View File

@@ -0,0 +1,27 @@
{{/*
Return the appropriate apiVersion for DaemonSet objects.
*/}}
{{- define "common.capabilities.daemonset.apiVersion" -}}
{{- print "apps/v1" -}}
{{- end -}}
{{/*
Return the appropriate apiVersion for Deployment objects.
*/}}
{{- define "common.capabilities.deployment.apiVersion" -}}
{{- print "apps/v1" -}}
{{- end -}}
{{/*
Return the appropriate apiVersion for StatefulSet objects.
*/}}
{{- define "common.capabilities.statefulset.apiVersion" -}}
{{- print "apps/v1" -}}
{{- end -}}
{{/*
Return the appropriate apiVersion for StatefulSet objects.
*/}}
{{- define "common.capabilities.cronjob.apiVersion" -}}
{{- print "batch/v1beta1" -}}
{{- end -}}

View File

@@ -0,0 +1,24 @@
{{/*
Common labels shared across objects.
*/}}
{{- define "common.labels" -}}
helm.sh/chart: {{ include "common.names.chart" . }}
{{ include "common.labels.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels shared across objects.
*/}}
{{- define "common.labels.selectorLabels" -}}
app.kubernetes.io/name: {{ include "common.names.name" . }}
app.kubernetes.io/instance: {{ include "common.names.releaseName" . }}
{{ if hasKey .Values "extraSelectorLabels" }}
{{ range $selector := .Values.extraSelectorLabels }}
{{ printf "%s: %s" $selector.key $selector.value }}
{{ end }}
{{ end }}
{{- end }}

View File

@@ -0,0 +1,66 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "common.names.name" -}}
{{- $values := (.common | default dict) -}}
{{- $name := (default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-") }}
{{- if hasKey $values "nameSuffix" -}}
{{- $name = (printf "%v-%v" $name $values.nameSuffix) -}}
{{ end -}}
{{- print $name -}}
{{- 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 "common.names.fullname" -}}
{{- $values := (.common | default dict) -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- $name = (.Release.Name | trunc 63 | trimSuffix "-") }}
{{- else }}
{{- $name = (printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-") }}
{{- end }}
{{- if hasKey $values "nameSuffix" -}}
{{- $name = (printf "%v-%v" $name $values.nameSuffix) -}}
{{ end -}}
{{- print $name -}}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "common.names.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Determine service account name for deployment or statefulset.
*/}}
{{- define "common.names.serviceAccountName" -}}
{{- if .Values.serviceAccountNameOverride }}
{{- .Values.serviceAccountNameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-service-account" (include "common.names.releaseName" .) | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{/*
Determine release name
This will add a suffix to the release name if nameSuffix is set
*/}}
{{- define "common.names.releaseName" -}}
{{- $values := (.common | default dict) -}}
{{- if hasKey $values "nameSuffix" -}}
{{- printf "%v-%v" .Release.Name $values.nameSuffix -}}
{{- else -}}
{{- print .Release.Name -}}
{{ end -}}
{{- end -}}

View File

@@ -0,0 +1,41 @@
{{/*
Render environment variable
*/}}
{{- define "common.containers.environmentVariable" -}}
{{- $envVariable := . -}}
{{- include "common.schema.validateKeys" (dict "values" $envVariable "checkKeys" (list "name")) -}}
{{- if $envVariable.valueFromSecret -}}
{{- include "common.schema.validateKeys" (dict "values" $envVariable "checkKeys" (list "secretName" "secretKey")) -}}
- name: {{ $envVariable.name }}
valueFrom:
secretKeyRef:
name: {{ $envVariable.secretName }}
key: {{ $envVariable.secretKey }}
{{- else -}}
{{- include "common.schema.validateKeys" (dict "values" $envVariable "checkKeys" (list "value")) -}}
- name: {{ $envVariable.name }}
value: {{ $envVariable.value }}
{{- end -}}
{{- end -}}
{{/*
Render environment variables
*/}}
{{- define "common.containers.environmentVariables" -}}
{{- $values := . -}}
{{- include "common.schema.validateKeys" (dict "values" $values "checkKeys" (list "environmentVariables")) -}}
{{- range $envVariable := $values.environmentVariables -}}
{{- include "common.containers.environmentVariable" $envVariable | nindent 0 -}}
{{- end -}}
{{- end -}}
{{/*
Render environment variables if present
*/}}
{{- define "common.containers.allEnvironmentVariables" -}}
{{- $values := . -}}
{{- include "common.schema.validateKeys" (dict "values" $values "checkKeys" (list "environmentVariables")) -}}
{{- if $values.environmentVariables -}}
env: {{- include "common.containers.environmentVariables" $values | nindent 2 -}}
{{- end -}}
{{- end -}}

View File

@@ -0,0 +1,9 @@
{{/*
Retrieve image configuration for container
*/}}
{{- define "common.containers.imageConfig" -}}
{{- $values := . -}}
{{- include "common.schema.validateKeys" (dict "values" $values "checkKeys" (list "repository" "tag" "pullPolicy")) -}}
image: "{{ $values.repository }}:{{ $values.tag }}"
imagePullPolicy: {{ $values.pullPolicy }}
{{- end -}}

View File

@@ -0,0 +1,10 @@
{{/*
Retrieve GPU Configuration
*/}}
{{- define "common.containers.gpuConfiguration" -}}
{{- $values := . -}}
{{ if $values.gpuConfiguration }}
resources:
limits: {{- toYaml $values.gpuConfiguration | nindent 4 }}
{{ end }}
{{- end -}}

View File

@@ -0,0 +1,41 @@
{{/*
Retrieve deployment metadata
*/}}
{{- define "common.deployment.metadata" -}}
metadata:
name: {{ template "common.names.fullname" . }}
labels: {{ include "common.labels.selectorLabels" . | nindent 4 }}
{{- end -}}
{{/*
Retrieve replicas/strategy/selector
*/}}
{{- define "common.deployment.common_spec" -}}
replicas: {{ (default 1 .Values.replicas) }}
strategy:
type: {{ (default "Recreate" .Values.updateStrategy ) }}
selector:
matchLabels: {{ include "common.labels.selectorLabels" . | nindent 4 }}
{{- end -}}
{{/*
Retrieve deployment pod's metadata
*/}}
{{- define "common.deployment.pod.metadata" -}}
metadata:
name: {{ template "common.names.fullname" . }}
labels: {{ include "common.labels.selectorLabels" . | nindent 4 }}
annotations: {{ include "common.annotations" . | nindent 4 }}
{{- end -}}
{{/*
Retrieve common deployment configuration
*/}}
{{- define "common.deployment.common_config" -}}
apiVersion: {{ template "common.capabilities.deployment.apiVersion" . }}
kind: Deployment
{{ include "common.deployment.metadata" . | nindent 0 }}
{{- end -}}

View File

@@ -0,0 +1,10 @@
{{/*
DNS Configuration
*/}}
{{- define "common.networking.dnsConfiguration" }}
dnsPolicy: {{ .Values.dnsPolicy }}
{{- if .Values.dnsConfig }}
dnsConfig:
{{- toYaml .Values.dnsConfig | nindent 2 }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,19 @@
{{/*
Checks if a list of keys are present in a dictionary
*/}}
{{- define "common.schema.validateKeys" -}}
{{- $values := . -}}
{{- if and (hasKey $values "values") (hasKey $values "checkKeys") -}}
{{- $missingKeys := list -}}
{{- range $values.checkKeys -}}
{{- if eq (hasKey $values.values . ) false -}}
{{- $missingKeys = mustAppend $missingKeys . -}}
{{- end -}}
{{- end -}}
{{- if $missingKeys -}}
{{- fail (printf "Missing %s from dictionary" ($missingKeys | join ", ")) -}}
{{- end -}}
{{- else -}}
{{- fail "A dictionary and list of keys to check must be provided" -}}
{{- end -}}
{{- end -}}

View File

@@ -0,0 +1,72 @@
{{/*
Define appVolumeMounts for container
*/}}
{{- define "common.storage.configureAppVolumeMountsInContainer" -}}
{{- include "common.schema.validateKeys" (dict "values" . "checkKeys" (list "appVolumeMounts")) -}}
{{- $appVolumeMounts := .appVolumeMounts -}}
{{- if $appVolumeMounts -}}
{{ range $name, $avm := $appVolumeMounts }}
{{- if (default true $avm.enabled) -}}
{{ if $avm.containerNameOverride }}
{{ $name = $avm.containerNameOverride }}
{{ end }}
- name: {{ $name }}
mountPath: {{ $avm.mountPath }}
{{ if $avm.subPath }}
subPath: {{ $avm.subPath }}
{{ end }}
{{- end -}}
{{ end }}
{{- end -}}
{{- end -}}
{{/*
Define hostPath for appVolumes
*/}}
{{- define "common.storage.configureAppVolumes" -}}
{{- include "common.schema.validateKeys" (dict "values" . "checkKeys" (list "appVolumeMounts")) -}}
{{- $values := . -}}
{{- if $values.appVolumeMounts -}}
{{- range $name, $av := $values.appVolumeMounts -}}
{{ if (default true $av.enabled) }}
- name: {{ $name }}
{{ if or $av.emptyDir $.emptyDirVolumes }}
emptyDir: {}
{{- else -}}
hostPath:
{{ if $av.hostPathEnabled }}
path: {{ required "hostPath not set" $av.hostPath }}
{{ else }}
{{- include "common.schema.validateKeys" (dict "values" $values "checkKeys" (list "ixVolumes")) -}}
{{- include "common.schema.validateKeys" (dict "values" $av "checkKeys" (list "datasetName")) -}}
{{- $volDict := dict "datasetName" $av.datasetName "ixVolumes" $values.ixVolumes -}}
path: {{ include "common.storage.retrieveHostPathFromiXVolume" $volDict }}
{{ end }}
{{ end }}
{{ end }}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Get all volumes configuration
*/}}
{{- define "common.storage.allAppVolumes" -}}
{{- $appVolumeMounts := .appVolumeMounts -}}
{{- if $appVolumeMounts -}}
volumes: {{- include "common.storage.configureAppVolumes" . | nindent 2 -}}
{{- end -}}
{{- end -}}
{{/*
Get all container volume moutns configuration
*/}}
{{- define "common.storage.allContainerVolumeMounts" -}}
{{- $appVolumeMounts := .appVolumeMounts -}}
{{- if $appVolumeMounts -}}
volumeMounts: {{- include "common.storage.configureAppVolumeMountsInContainer" . | nindent 2 -}}
{{- end -}}
{{- end -}}

View File

@@ -0,0 +1,11 @@
{{/*
Retrieve host path from ix volumes based on dataset name
*/}}
{{- define "common.storage.retrieveHostPathFromiXVolume" -}}
{{- range $index, $hostPathConfiguration := $.ixVolumes }}
{{- $dsName := base $hostPathConfiguration.hostPath -}}
{{- if eq $.datasetName $dsName -}}
{{- $hostPathConfiguration.hostPath -}}
{{- end -}}
{{- end }}
{{- end -}}

View File

@@ -12,3 +12,7 @@ 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

Binary file not shown.

View File

@@ -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"

View File

@@ -67,7 +67,7 @@ questions:
- value: "Recreate"
description: "Kill existing pods before creating new ones"
- variable: environment
- variable: environmentVariables
label: "IPFS image environment"
group: "IPFS Configuration"
schema:
@@ -121,75 +121,79 @@ questions:
default: 9880
required: true
- variable: ipfsDataHostPathEnabled
label: "Configure Host Path for IPFS data"
group: "Storage"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: ipfsDataHostPath
label: "Specify HostPath for IPFS data"
schema:
type: hostpath
- variable: ipfsDataVolume
label: "IPFS Data Volume Defaults"
- variable: appVolumeMounts
label: "IPFS Storage"
group: "Storage"
schema:
type: dict
$ref:
- "normalize/ixVolume"
show_if: [["ipfsDataHostPathEnabled", "=", false]]
attrs:
- variable: mountPath
label: "Mount Path"
description: "Path where the volume will be mounted inside the pod"
- variable: staging
label: "Staging Volume"
schema:
type: path
editable: false
default: "/data/ipfs"
- variable: datasetName
label: "IPFS Data Dataset Name"
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: string
default: "ix-ipfs-data"
editable: false
- variable: ipfsStagingHostPathEnabled
label: "Configure Host Path for IPFS staging data"
group: "Storage"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: ipfsStagingHostPath
label: "Specify HostPath for IPFS staging data"
schema:
type: hostpath
- variable: ipfsStagingVolume
label: "IPFS Staging Volume Defaults"
group: "Storage"
schema:
type: dict
$ref:
- "normalize/ixVolume"
show_if: [["ipfsStagingHostPathEnabled", "=", false]]
attrs:
- variable: mountPath
label: "Mount Path"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
editable: false
default: "/export"
- variable: datasetName
label: "IPFS Staging Dataset Name"
schema:
type: string
default: "ix-ipfs-staging"
editable: false
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

View File

@@ -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"

View File

@@ -1,67 +0,0 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "ipfs.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 "ipfs.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 "ipfs.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Return the appropriate apiVersion for deployment.
*/}}
{{- define "ipfs.deployment.apiVersion" -}}
{{- print "apps/v1" -}}
{{- end -}}
{{/*
Return the appropriate apiVersion for statefulset.
*/}}
{{- define "ipfs.statefulset.apiVersion" -}}
{{- print "apps/v1" -}}
{{- end -}}
{{/*
Determine secret name.
*/}}
{{- define "ipfs.secretName" -}}
{{- include "ipfs.fullname" . -}}
{{- end -}}
{{/*
Determine service account name for deployment or statefulset.
*/}}
{{- define "ipfs.serviceAccountName" -}}
{{- (include "ipfs.fullname" .) | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Determine name for scc role and rolebinding
*/}}
{{- define "ipfs.sccRoleName" -}}
{{- printf "%s-%s" "scc" (include "ipfs.fullname" .) | trunc 63 | trimSuffix "-" -}}
{{- end -}}

View File

@@ -1,35 +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 ipfs
*/}}
{{- define "configuredHostPathData" -}}
{{- if .Values.ipfsDataHostPathEnabled -}}
{{- .Values.ipfsDataHostPath -}}
{{- else -}}
{{- $volDict := dict "datasetName" $.Values.ipfsDataVolume.datasetName "ixVolumes" $.Values.ixVolumes -}}
{{- include "retrieveHostPathFromiXVolume" $volDict -}}
{{- end -}}
{{- end -}}
{{/*
Retrieve host path for ipfs
*/}}
{{- define "configuredHostPathStaging" -}}
{{- if .Values.ipfsStagingHostPathEnabled -}}
{{- .Values.ipfsStagingHostPath -}}
{{- else -}}
{{- $volDict := dict "datasetName" $.Values.ipfsStagingVolume.datasetName "ixVolumes" $.Values.ixVolumes -}}
{{- include "retrieveHostPathFromiXVolume" $volDict -}}
{{- end -}}
{{- end -}}

View File

@@ -1,101 +1,52 @@
{{ $scheme := "http" }}
apiVersion: {{ template "ipfs.deployment.apiVersion" . }}
apiVersion: {{ template "common.capabilities.deployment.apiVersion" . }}
kind: Deployment
metadata:
name: {{ template "ipfs.fullname" . }}
labels:
app: {{ template "ipfs.name" . }}
chart: {{ template "ipfs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
name: {{ template "common.names.fullname" . }}
labels: {{ include "common.labels" . | nindent 4 }}
spec:
strategy:
type: {{ .Values.updateStrategy }}
selector:
matchLabels:
app: {{ template "ipfs.name" . }}
release: {{ .Release.Name }}
matchLabels: {{ include "common.labels.selectorLabels" . | nindent 6 }}
template:
metadata:
name: {{ template "ipfs.fullname" . }}
labels:
app: {{ template "ipfs.name" . }}
release: {{ .Release.Name }}
name: {{ template "common.names.fullname" . }}
labels: {{ include "common.labels.selectorLabels" . | nindent 8 }}
spec:
serviceAccountName: {{ include "ipfs.serviceAccountName" . | quote }}
serviceAccountName: {{ include "common.names.serviceAccountName" . | quote }}
initContainers:
- name: init-init
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
{{ 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']
imagePullPolicy: {{ .Values.image.pullPolicy }}
volumeMounts:
- name: data
mountPath: /data/ipfs
- name: staging
mountPath: /export
{{ include "common.storage.allContainerVolumeMounts" .Values | nindent 10 }}
- name: init-api
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
command: ['/usr/local/bin/ipfs', 'config', 'Addresses.API', "/ip4/0.0.0.0/tcp/{{ .Values.service.apiPort}}"]
imagePullPolicy: {{ .Values.image.pullPolicy }}
volumeMounts:
- name: data
mountPath: /data/ipfs
- name: staging
mountPath: /export
{{ 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
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
command: ['/usr/local/bin/ipfs', 'config', 'Addresses.Gateway', "/ip4/0.0.0.0/tcp/{{ .Values.service.gatewayPort}}"]
imagePullPolicy: {{ .Values.image.pullPolicy }}
volumeMounts:
- name: data
mountPath: /data/ipfs
- name: staging
mountPath: /export
{{ 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
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
command: ['/usr/local/bin/ipfs', 'config', '--json', 'Addresses.Swarm', "[\"/ip4/0.0.0.0/tcp/{{ .Values.service.swarmPort}}\",\"/ip4/0.0.0.0/tcp/{{ .Values.service.swarmPort}}/quic\"]" ]
imagePullPolicy: {{ .Values.image.pullPolicy }}
volumeMounts:
- name: data
mountPath: /data/ipfs
- name: staging
mountPath: /export
{{ 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
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
{{ include "common.containers.imageConfig" .Values.image | nindent 10 }}
command: ['/usr/local/bin/ipfs', 'config', '--json', 'API.HTTPHeaders.Access-Control-Allow-Origin', "[\"*\"]" ]
imagePullPolicy: {{ .Values.image.pullPolicy }}
volumeMounts:
- name: data
mountPath: /data/ipfs
- name: staging
mountPath: /export
{{ include "common.storage.allContainerVolumeMounts" .Values | nindent 10 }}
- name: init-access-methods
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
{{ include "common.containers.imageConfig" .Values.image | nindent 10 }}
command: ['/usr/local/bin/ipfs', 'config', '--json', 'API.HTTPHeaders.Access-Control-Allow-Methods', "[\"PUT\",\"POST\"]" ]
imagePullPolicy: {{ .Values.image.pullPolicy }}
volumeMounts:
- name: data
mountPath: /data/ipfs
- name: staging
mountPath: /export
{{ include "common.storage.allContainerVolumeMounts" .Values | nindent 10 }}
- name: init-chown
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
{{ include "common.containers.imageConfig" .Values.image | nindent 10 }}
command: ['chown', '1000:100', '/data/ipfs/config']
imagePullPolicy: {{ .Values.image.pullPolicy }}
volumeMounts:
- name: data
mountPath: /data/ipfs
- name: staging
mountPath: /export
{{ include "common.storage.allContainerVolumeMounts" .Values | nindent 10 }}
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
volumeMounts:
- name: data
mountPath: /data/ipfs
- name: staging
mountPath: /export
{{ include "common.containers.imageConfig" .Values.image | nindent 10 }}
{{ include "common.storage.allContainerVolumeMounts" .Values | nindent 10 }}
ports:
- name: swarm
containerPort: 9401
@@ -103,29 +54,5 @@ spec:
containerPort: 9501
- name: gateway
containerPort: 9880
{{- if .Values.environment }}
env:
{{- range $envVariable := .Values.environment }}
{{- if and $envVariable.name $envVariable.value }}
- name: {{ $envVariable.name }}
value: {{ $envVariable.value | quote }}
{{- else }}
{{- fail "Please specify name/value for environment variable" }}
{{- end }}
{{- end}}
{{- end }}
volumes:
- name: data
{{- if .Values.emptyDirVolumes }}
emptyDir: {}
{{- else }}
hostPath:
path: {{ template "configuredHostPathData" . }}
{{- end }}
- name: staging
{{- if .Values.emptyDirVolumes }}
emptyDir: {}
{{- else }}
hostPath:
path: {{ template "configuredHostPathStaging" . }}
{{- end }}
{{ include "common.containers.allEnvironmentVariables" .Values | nindent 10 }}
{{ include "common.storage.allAppVolumes" .Values | nindent 6 }}

View File

@@ -1,31 +1,8 @@
{{ $scheme := "http" }}
apiVersion: v1
kind: Service
metadata:
name: {{ template "ipfs.fullname" . }}
labels:
app: {{ template "ipfs.name" . }}
chart: {{ template "ipfs.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
type: "NodePort"
ports:
- name: swarm
port: {{ .Values.service.swarmPort }}
protocol: TCP
nodePort: {{ .Values.service.swarmPort }}
targetPort: 9401
- name: api
port: {{ .Values.service.apiPort }}
protocol: TCP
nodePort: {{ .Values.service.apiPort }}
targetPort: 9501
- name: gateway
port: {{ .Values.service.gatewayPort }}
protocol: TCP
nodePort: {{ .Values.service.gatewayPort }}
targetPort: 9880
selector:
app: {{ template "ipfs.name" . }}
release: {{ .Release.Name }}
{{ $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 }}

View File

@@ -1,9 +1 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "ipfs.serviceAccountName" . | quote }}
namespace: {{ .Release.Namespace | quote }}
labels:
app: {{ template "ipfs.name" . }}
chart: {{ template "ipfs.chart" . }}
release: "{{ .Release.Name }}"
{{ include "common.serviceaccount" . }}

View File

@@ -15,9 +15,13 @@ service:
apiPort: 30951
gatewayPort: 30980
environment:
environmentVariables: []
emptyDirVolumes: true
ipfsDataHostPathEnabled: false
ipfsStagingHostPathEnabled: false
appVolumeMounts:
staging:
emptyDir: true
mountPath: "/export"
data:
emptyDir: true
mountPath: "/data/ipfs"

View File

@@ -1,21 +0,0 @@
## 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:
ipfsDataHostPathEnabled: false
ipfsStagingHostPathEnabled: false

View File

@@ -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"

View File

@@ -21,3 +21,8 @@ version: 2101.0.0
# 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

Binary file not shown.

View File

@@ -0,0 +1,37 @@
# Default values for ix-chart.
image:
repository: debian
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: "latest"
# Restart / Update policy
updateStrategy: RollingUpdate
# Container CMD / entrypoint
containerCommand: []
containerArgs: []
containerEnvironmentVariables: []
# Network related configuration
externalInterfaces: []
portForwardingList: []
hostNetwork: false
dnsPolicy: Default
dnsConfig:
nameservers: []
searches: []
# Storage related configuration
hostPathVolumes: []
volumes: []
# Probes
# Liveness Probe
livenessProbe: null
# Workload type
workloadType: "Deployment"
gpuConfiguration: {}

View File

@@ -1,37 +0,0 @@
# Default values for ix-chart.
image:
repository: debian
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: "latest"
# Restart / Update policy
updateStrategy: RollingUpdate
# Container CMD / entrypoint
containerCommand: []
containerArgs: []
containerEnvironmentVariables: []
# Network related configuration
externalInterfaces: []
portForwardingList: []
hostNetwork: false
dnsPolicy: Default
dnsConfig:
nameservers: []
searches: []
# Storage related configuration
hostPathVolumes: []
volumes: []
# Probes
# Liveness Probe
livenessProbe: null
# Workload type
workloadType: "Deployment"
gpuConfiguration: {}

View File

@@ -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 -}}

View File

@@ -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 -}}

View File

@@ -1,71 +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 $envVariable := .Values.environmentVariables }}
{{- if and $envVariable.name $envVariable.value }}
- name: {{ $envVariable.name }}
value: {{ $envVariable.value | quote }}
{{- else }}
{{- fail "Please specify name/value for environment variable" }}
{{- end }}
{{- end}}
volumes:
- name: export
{{- if .Values.emptyDirVolumes }}
emptyDir: {}
{{- else }}
hostPath:
path: {{ template "configuredMinioHostPath" . }}
{{- end }}
- name: minio-user
secret:
secretName: {{ template "minio.secretName" . }}

View File

@@ -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 }}

View File

@@ -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 }}"

View File

@@ -1,7 +1,7 @@
apiVersion: v1
description: High Performance, Kubernetes Native Object Storage
name: minio
version: 1.0.1
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

Binary file not shown.

View File

@@ -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"

View File

@@ -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()))))

View File

@@ -138,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: "Minio Data Volume Defaults"
- variable: appVolumeMounts
label: "Minio Storage"
group: "Storage"
schema:
type: dict
$ref:
- "normalize/ixVolume"
show_if: [["minioHostPathEnabled", "=", false]]
attrs:
- variable: mountPath
label: "Minio Data 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: "Minio 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

View File

@@ -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"

View File

@@ -0,0 +1,6 @@
{{/*
Determine secret name.
*/}}
{{- define "minio.secretName" -}}
{{- include "common.names.fullname" . -}}
{{- end -}}

View File

@@ -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 }}

View File

@@ -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 }}

View File

@@ -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 }}

View File

@@ -0,0 +1 @@
{{ include "common.serviceaccount" . }}

View File

@@ -13,7 +13,11 @@ updateStrategy: RollingUpdate
service:
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"

View File

@@ -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 -}}

View File

@@ -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 }}

View File

@@ -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 -}}

View File

@@ -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 -}}

View File

@@ -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

View File

@@ -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 }}

View File

@@ -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 }}

View File

@@ -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 }}

View File

@@ -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

View File

@@ -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"

View File

@@ -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

Binary file not shown.

View File

@@ -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"

View File

@@ -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()))))

View File

@@ -9,6 +9,8 @@ groups:
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:
@@ -94,16 +96,20 @@ questions:
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"
# 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"
@@ -122,80 +128,92 @@ questions:
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: "Nextcloud Data Volume Defaults"
- variable: appVolumeMounts
label: "Nextcloud Storage"
group: "Storage"
schema:
type: dict
$ref:
- "normalize/ixVolume"
show_if: [["nextcloudDataHostPathEnabled", "=", false]]
attrs:
- variable: mountPath
label: "Nextcloud Data Mount Path"
description: "Path where the volume will be mounted inside the pod"
- variable: nextcloud-data
label: "Nextcloud Data Volume"
schema:
type: path
editable: false
default: "/var/www"
- variable: datasetName
label: "Nextcloud Dataset Name"
schema:
type: string
default: "ix-nextcloud_data"
editable: false
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: postgresBackupVolume
label: "Postgres Backup Volume Defaults"
- variable: postgresAppVolumeMounts
label: "Postgres Storage"
group: "Storage"
schema:
type: dict
$ref:
- "normalize/ixVolume"
hidden: true
attrs:
- variable: mountPath
label: "Postgres Backup Mount Path"
- variable: postgres-data
label: "Postgres Data Volume"
schema:
type: path
editable: false
default: "/postgres_backups"
- variable: datasetName
label: "Postgres Backup Dataset Name"
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: string
default: "ix-postgres_backups"
editable: false
- variable: postgresDataVolume
label: "Postgresql Data Volume Defaults"
group: "Storage"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: mountPath
label: "Postgres Mount Path"
schema:
type: path
editable: false
default: "/var/lib/postgresql/data"
- variable: datasetName
label: "Postgres Dataset Name"
schema:
type: string
default: "ix-postgres_data"
editable: false
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"

View File

@@ -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 -}}

View File

@@ -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 -}}

View File

@@ -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

View File

@@ -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 -}}

View File

@@ -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 }}

View File

@@ -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 }}

View File

@@ -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 }}

View File

@@ -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 }}

View File

@@ -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

View File

@@ -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"

View File

View File

@@ -1,262 +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"
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: 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: "Transcode Volume Defaults"
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: "Transcode 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: "Data Volume Defaults"
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: "Data 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: "Configuration Volume Defaults"
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: "Configuration 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"

View File

@@ -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 -}}

View File

@@ -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 -}}

View File

@@ -1,139 +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
# Extra ENV Values supplied by user
{{- range $envVariable := .Values.environmentVariables }}
{{- if and $envVariable.name $envVariable.value }}
- name: {{ $envVariable.name }}
value: {{ $envVariable.value | quote }}
{{- else }}
{{- fail "Please specify name/value for environment variable" }}
{{- end }}
{{- 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: {}

View File

@@ -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 }}

View File

@@ -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 }}

View File

@@ -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"

View File

@@ -2,7 +2,7 @@ apiVersion: v2
appVersion: 1.20.2.3402
description: Plex Media Server
name: plex
version: 1.0.1
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

Some files were not shown because too many files have changed in this diff Show More