mirror of
https://github.com/truenas/charts.git
synced 2026-04-13 13:59:51 +08:00
Merge pull request #30 from truenas/library-chart
Introduce Library Chart for Official Catalog
This commit is contained in:
23
library/common/2101.0.0/.helmignore
Normal file
23
library/common/2101.0.0/.helmignore
Normal 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/
|
||||
23
library/common/2101.0.0/Chart.yaml
Normal file
23
library/common/2101.0.0/Chart.yaml
Normal 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
|
||||
11
library/common/2101.0.0/README.md
Normal file
11
library/common/2101.0.0/README.md
Normal 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.
|
||||
11
library/common/2101.0.0/templates/_serviceaccount.tpl
Normal file
11
library/common/2101.0.0/templates/_serviceaccount.tpl
Normal 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 -}}
|
||||
41
library/common/2101.0.0/templates/classes/_service.tpl
Normal file
41
library/common/2101.0.0/templates/classes/_service.tpl
Normal 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 }}
|
||||
19
library/common/2101.0.0/templates/classes/_service_ports.tpl
Normal file
19
library/common/2101.0.0/templates/classes/_service_ports.tpl
Normal 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 }}
|
||||
@@ -0,0 +1,6 @@
|
||||
{{/*
|
||||
Common workload annotations
|
||||
*/}}
|
||||
{{- define "common.annotations" -}}
|
||||
rollme: {{ randAlphaNum 5 | quote }}
|
||||
{{- end -}}
|
||||
@@ -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 -}}
|
||||
24
library/common/2101.0.0/templates/lib/chart/_labels.tpl
Normal file
24
library/common/2101.0.0/templates/lib/chart/_labels.tpl
Normal 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 }}
|
||||
66
library/common/2101.0.0/templates/lib/chart/_names.tpl
Normal file
66
library/common/2101.0.0/templates/lib/chart/_names.tpl
Normal 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 -}}
|
||||
@@ -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 -}}
|
||||
@@ -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 -}}
|
||||
@@ -0,0 +1,10 @@
|
||||
{{/*
|
||||
Retrieve GPU Configuration
|
||||
*/}}
|
||||
{{- define "common.containers.gpuConfiguration" -}}
|
||||
{{- $values := . -}}
|
||||
{{ if $values.gpuConfiguration }}
|
||||
resources:
|
||||
limits: {{- toYaml $values.gpuConfiguration | nindent 4 }}
|
||||
{{ end }}
|
||||
{{- end -}}
|
||||
41
library/common/2101.0.0/templates/lib/deployments/_utils.tpl
Normal file
41
library/common/2101.0.0/templates/lib/deployments/_utils.tpl
Normal 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 -}}
|
||||
10
library/common/2101.0.0/templates/lib/networking/_dns.tpl
Normal file
10
library/common/2101.0.0/templates/lib/networking/_dns.tpl
Normal 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 }}
|
||||
19
library/common/2101.0.0/templates/lib/schema/_utils.tpl
Normal file
19
library/common/2101.0.0/templates/lib/schema/_utils.tpl
Normal 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 -}}
|
||||
@@ -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 -}}
|
||||
11
library/common/2101.0.0/templates/lib/storage/_ixvolumes.tpl
Normal file
11
library/common/2101.0.0/templates/lib/storage/_ixvolumes.tpl
Normal 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 -}}
|
||||
@@ -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
|
||||
|
||||
BIN
test/ipfs/1.0.1/charts/common-2101.0.0.tgz
Normal file
BIN
test/ipfs/1.0.1/charts/common-2101.0.0.tgz
Normal file
Binary file not shown.
27
test/ipfs/1.0.1/default_values.yaml
Normal file
27
test/ipfs/1.0.1/default_values.yaml
Normal 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"
|
||||
|
||||
@@ -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
|
||||
|
||||
6
test/ipfs/1.0.1/requirements.lock
Normal file
6
test/ipfs/1.0.1/requirements.lock
Normal 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"
|
||||
@@ -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 -}}
|
||||
@@ -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 -}}
|
||||
@@ -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 }}
|
||||
|
||||
@@ -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 }}
|
||||
|
||||
@@ -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" . }}
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
6
test/ix-chart/2101.0.0/Chart.lock
Normal file
6
test/ix-chart/2101.0.0/Chart.lock
Normal 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"
|
||||
@@ -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
|
||||
|
||||
|
||||
BIN
test/ix-chart/2101.0.0/charts/common-2101.0.0.tgz
Normal file
BIN
test/ix-chart/2101.0.0/charts/common-2101.0.0.tgz
Normal file
Binary file not shown.
37
test/ix-chart/2101.0.0/default_values.yaml
Normal file
37
test/ix-chart/2101.0.0/default_values.yaml
Normal 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: {}
|
||||
@@ -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: {}
|
||||
|
||||
@@ -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 -}}
|
||||
@@ -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 -}}
|
||||
@@ -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" . }}
|
||||
@@ -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 }}
|
||||
@@ -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 }}"
|
||||
@@ -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
|
||||
BIN
test/minio/1.1.0/charts/common-2101.0.0.tgz
Normal file
BIN
test/minio/1.1.0/charts/common-2101.0.0.tgz
Normal file
Binary file not shown.
@@ -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"
|
||||
25
test/minio/1.1.0/migrations/migrate
Executable file
25
test/minio/1.1.0/migrations/migrate
Executable 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()))))
|
||||
@@ -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
|
||||
6
test/minio/1.1.0/requirements.lock
Normal file
6
test/minio/1.1.0/requirements.lock
Normal 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"
|
||||
6
test/minio/1.1.0/templates/_helpers.tpl
Normal file
6
test/minio/1.1.0/templates/_helpers.tpl
Normal file
@@ -0,0 +1,6 @@
|
||||
{{/*
|
||||
Determine secret name.
|
||||
*/}}
|
||||
{{- define "minio.secretName" -}}
|
||||
{{- include "common.names.fullname" . -}}
|
||||
{{- end -}}
|
||||
46
test/minio/1.1.0/templates/deployment.yaml
Normal file
46
test/minio/1.1.0/templates/deployment.yaml
Normal 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 }}
|
||||
@@ -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 }}
|
||||
10
test/minio/1.1.0/templates/service.yaml
Normal file
10
test/minio/1.1.0/templates/service.yaml
Normal 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 }}
|
||||
1
test/minio/1.1.0/templates/serviceaccount.yaml
Normal file
1
test/minio/1.1.0/templates/serviceaccount.yaml
Normal file
@@ -0,0 +1 @@
|
||||
{{ include "common.serviceaccount" . }}
|
||||
@@ -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"
|
||||
@@ -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 -}}
|
||||
@@ -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 }}
|
||||
|
||||
@@ -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 -}}
|
||||
@@ -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 -}}
|
||||
@@ -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
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
@@ -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
|
||||
6
test/nextcloud/1.2.0/Chart.lock
Normal file
6
test/nextcloud/1.2.0/Chart.lock
Normal 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"
|
||||
@@ -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
|
||||
|
||||
BIN
test/nextcloud/1.2.0/charts/common-2101.0.0.tgz
Normal file
BIN
test/nextcloud/1.2.0/charts/common-2101.0.0.tgz
Normal file
Binary file not shown.
@@ -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"
|
||||
26
test/nextcloud/1.2.0/migrations/migrate
Executable file
26
test/nextcloud/1.2.0/migrations/migrate
Executable 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()))))
|
||||
@@ -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"
|
||||
49
test/nextcloud/1.2.0/templates/_postgres.tpl
Normal file
49
test/nextcloud/1.2.0/templates/_postgres.tpl
Normal 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 -}}
|
||||
|
||||
39
test/nextcloud/1.2.0/templates/backup-postgres-hook.yaml
Normal file
39
test/nextcloud/1.2.0/templates/backup-postgres-hook.yaml
Normal 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 -}}
|
||||
54
test/nextcloud/1.2.0/templates/deployment.yaml
Normal file
54
test/nextcloud/1.2.0/templates/deployment.yaml
Normal 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
|
||||
@@ -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 -}}
|
||||
17
test/nextcloud/1.2.0/templates/postgres-deployment.yaml
Normal file
17
test/nextcloud/1.2.0/templates/postgres-deployment.yaml
Normal 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 }}
|
||||
6
test/nextcloud/1.2.0/templates/postgres-service.yaml
Normal file
6
test/nextcloud/1.2.0/templates/postgres-service.yaml
Normal 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 }}
|
||||
@@ -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 }}
|
||||
6
test/nextcloud/1.2.0/templates/service.yaml
Normal file
6
test/nextcloud/1.2.0/templates/service.yaml
Normal 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 }}
|
||||
@@ -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
|
||||
43
test/nextcloud/1.2.0/test_values.yaml
Normal file
43
test/nextcloud/1.2.0/test_values.yaml
Normal 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"
|
||||
0
test/nextcloud/1.2.0/values.yaml
Normal file
0
test/nextcloud/1.2.0/values.yaml
Normal 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"
|
||||
@@ -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 -}}
|
||||
@@ -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 -}}
|
||||
@@ -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: {}
|
||||
@@ -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 }}
|
||||
@@ -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 }}
|
||||
6
test/plex/1.1.0/Chart.lock
Normal file
6
test/plex/1.1.0/Chart.lock
Normal 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"
|
||||
@@ -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
Reference in New Issue
Block a user