Remove chia,ipfs,machinaris from charts and all apps from test train (#1038)

* remove chia

* remove ipfs

* remove machinaris

* remove apps from test train
This commit is contained in:
Stavros Kois
2023-03-20 18:11:59 +02:00
committed by GitHub
parent 71aa01ca93
commit 23be0dabe2
410 changed files with 0 additions and 17867 deletions

View File

@@ -1,23 +0,0 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
# OWNERS file for Kubernetes
OWNERS

View File

@@ -1,18 +0,0 @@
apiVersion: v1
appVersion: v1.7.0
dependencies:
- name: common
repository: file://../../../library/common/2207.0.0
version: 2207.0.0
description: Global, Versioned, peer-to-peer filesystem.
home: https://www.chia.net/
icon: https://www.chia.net/wp-content/uploads/2022/09/chia-logo.svg
keywords:
- storage
- crypto
- blockchain
name: chia
sources:
- https://github.com/Chia-Network/chia-blockchain
- https://github.com/orgs/chia-network/packages/container/package/chia
version: 1.3.39

View File

@@ -1,8 +0,0 @@
Chia Network
=====
[CHIA](https://www.chia.net/) is a new blockchain and smart transaction platform that is easier to use, more efficient, and secure.
Introduction
------------
This chart bootstraps CHIA deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.

View File

@@ -1,4 +0,0 @@
Chia Network
=====
[CHIA](https://www.chia.net/) is a new blockchain and smart transaction platform that is easier to use, more efficient, and secure.

View File

@@ -1,17 +0,0 @@
image:
repository: ghcr.io/chia-network/chia
tag: 1.1.4
pullPolicy: IfNotPresent
updateStrategy: Recreate
environmentVariables:
- name: "keys"
value: "/plots/keyfile"
appVolumeMounts:
staging:
emptyDir: true
mountPath: "/plots"
data:
emptyDir: true
mountPath: "/root/.chia"

View File

@@ -1,5 +0,0 @@
image:
pullPolicy: IfNotPresent
repository: ixsystems/chia-docker
tag: v1.7.0
updateStrategy: Recreate

View File

@@ -1,209 +0,0 @@
groups:
- name: "Storage"
description: "Configure Storage for Chia"
- name: "Farmr.net Configuration"
description: "Configure farmr.net support"
- name: "Chia Environment Variables"
description: "Set the environment that will be visible to the container"
- name: "Networking"
description: "Configure networking for Chia container"
- name: "Resource Limits"
description: "Set CPU/memory limits for Kubernetes Pod"
portals:
web_portal:
protocols:
- "https"
host:
- "www.truepool.io"
ports:
- "443"
path: "/kb/truepool-docker-image/"
questions:
- variable: farmr_env
label: "Enable 'farmr.net' support"
group: "Farmr.net Configuration"
description: "Configure 'farmr.net' support for chia"
schema:
type: string
default: "off"
enum:
- value: "off"
description: "OFF"
- value: "farmer"
description: "FARMER"
- value: "harvester"
description: "HARVESTER"
- variable: appVolumeMounts
label: "Chia Storage"
group: "Storage"
schema:
type: dict
attrs:
- variable: config
label: "Configuration Volume"
schema:
type: dict
attrs:
- variable: datasetName
label: "Configuration Volume Dataset Name"
schema:
type: string
hidden: true
$ref:
- "normalize/ixVolume"
show_if: [["hostPathEnabled", "=", false]]
default: "config"
editable: false
- variable: mountPath
label: "Configuration Mount Path"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
hidden: true
editable: true
default: "/data"
- variable: hostPathEnabled
label: "Enable Custom Host Path for Chia Configuration Volume"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path for Chia Configuration Volume"
schema:
type: hostpath
required: true
- variable: plots
label: "Plot Volume"
schema:
type: dict
attrs:
- variable: datasetName
label: "Plots Volume Name"
schema:
type: string
hidden: true
$ref:
- "normalize/ixVolume"
show_if: [["hostPathEnabled", "=", false]]
default: "plots"
editable: false
- variable: mountPath
label: "Plots Mount Path"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
hidden: true
editable: false
default: "/plots"
- variable: hostPathEnabled
label: "Enable Custom Host Path for Chia Plots Volume"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path for Chia Plots Volume"
schema:
type: hostpath
required: true
- variable: extraAppVolumeMounts
label: "Chia Extra Host Path Volumes"
group: "Storage"
schema:
type: list
items:
- variable: extraAppVolume
label: "Chia Host Path Volume"
description: "Add an extra host path volume for chia application"
schema:
type: dict
attrs:
- variable: mountPath
label: "Mount Path in Pod"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
required: true
- variable: hostPath
label: "Host Path"
description: "Host path"
schema:
type: hostpath
required: true
- variable: environmentVariables
label: "Environment Variables for Chia"
group: "Chia Environment Variables"
schema:
type: list
default: []
items:
- variable: environmentVariable
label: "Environment Variable"
schema:
type: dict
attrs:
- variable: name
label: "Name"
schema:
type: string
- variable: value
label: "Value"
schema:
type: string
- variable: service
description: "Networking Configuration"
label: "Networking Configuration"
group: "Networking"
schema:
type: dict
required: true
attrs:
- variable: nodePort
label: "Node Port to use for Chia"
schema:
type: int
min: 8000
max: 65535
default: 8444
required: true
- variable: farmerPort
label: "Farmer Port to use for Chia"
schema:
type: int
min: 8000
max: 65535
default: 8447
required: true
- variable: enableResourceLimits
label: "Enable Pod resource limits"
group: "Resource Limits"
schema:
type: boolean
default: false
- variable: cpuLimit
label: "CPU Limit"
description: "CPU resource limit allow plain integer values with suffix m(milli) e.g 1000m, 100."
group: "Resource Limits"
schema:
type: string
show_if: [["enableResourceLimits", "=", true]]
valid_chars: "^\\d+(?:\\.\\d+(?!.*m$)|m?$)"
default: "4000m"
- variable: memLimit
label: "Memory Limit"
group: "Resource Limits"
description: "Memory limits is specified by number of bytes. Followed by quantity suffix like E,P,T,G,M,k and Ei,Pi,Ti,Mi,Gi,Ki can also be used. e.g 129e6, 129M, 128974848000m, 123Mi"
schema:
type: string
show_if: [["enableResourceLimits", "=", true]]
valid_chars: "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$"
default: "8Gi"

View File

@@ -1,6 +0,0 @@
dependencies:
- name: common
repository: file://../../../library/common/2207.0.0
version: 2207.0.0
digest: sha256:f17f3d458ca0210a52e39da0dce35034e900b36f2040d4b19bed46a7aae91506
generated: "2022-07-25T00:20:43.583595794+05:00"

View File

@@ -1,48 +0,0 @@
{{ include "common.storage.hostPathValidate" .Values }}
apiVersion: {{ template "common.capabilities.deployment.apiVersion" . }}
kind: Deployment
metadata:
name: {{ template "common.names.fullname" . }}
labels: {{ include "common.labels" . | nindent 4 }}
annotations:
rollme: {{ randAlphaNum 5 | quote }}
spec:
strategy:
type: {{ .Values.updateStrategy }}
selector:
matchLabels: {{ include "common.labels.selectorLabels" . | nindent 6 }}
template:
metadata:
name: {{ template "common.names.fullname" . }}
labels: {{ include "common.labels.selectorLabels" . | nindent 8 }}
spec:
# FIXME: Let's please remove hostnetwork when upstream hostport issue is sorted out with kube-router
hostNetwork: {{ include "hostNetworkingEnabled" . }}
containers:
- name: {{ .Chart.Name }}
{{ include "common.containers.imageConfig" .Values.image | nindent 10 }}
{{ include "common.resources.limitation" . | nindent 10 }}
volumeMounts: {{ include "common.storage.configureAppVolumeMountsInContainer" .Values | nindent 12 }}
{{ range $index, $hostPathConfiguration := .Values.extraAppVolumeMounts }}
- name: extrappvolume-{{ $index }}
mountPath: {{ $hostPathConfiguration.mountPath }}
{{ end }}
ports:
- name: chia-network
protocol: TCP
containerPort: 8444
hostPort: null
- name: chia-farmer
protocol: TCP
containerPort: 8447
hostPort: null
{{ $envList := (default list .Values.environmentVariables) }}
{{ $envList = mustAppend $envList (dict "name" "keys" "value" "/plots/keyfile") }}
{{ $envList = mustAppend $envList (dict "name" "farmr" "value" $.Values.farmr_env) }}
{{ include "common.containers.allEnvironmentVariables" (dict "environmentVariables" $envList) | nindent 10 }}
volumes: {{ include "common.storage.configureAppVolumes" .Values | nindent 8 }}
{{ range $index, $hostPathConfiguration := .Values.extraAppVolumeMounts }}
- name: extrappvolume-{{ $index }}
hostPath:
path: {{ $hostPathConfiguration.hostPath }}
{{ end }}

View File

@@ -1,30 +0,0 @@
apiVersion: batch/v1
kind: Job
metadata:
name: "pre-install"
annotations:
"helm.sh/hook": pre-install
"helm.sh/hook-weight": "1"
"helm.sh/hook-delete-policy": hook-succeeded
spec:
template:
metadata:
name: "pre-upgrade-hook2"
spec:
restartPolicy: Never
containers:
- name: {{ .Chart.Name }}-generate-mnemonic
{{ include "common.containers.imageConfig" .Values.image | nindent 8 }}
volumeMounts:{{ include "common.storage.configureAppVolumeMountsInContainer" .Values | nindent 10 }}
- name: generate-mnemonic-configmap
mountPath: /generate_entrypoint.sh
readOnly: true
subPath: entrypoint.sh
command:
- "/generate_entrypoint.sh"
volumes: {{- include "common.storage.configureAppVolumes" .Values | nindent 8 -}}
- name: generate-mnemonic-configmap
configMap:
defaultMode: 0700
name: "generate-mnemonic-config-map"

View File

@@ -1,14 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: "generate-mnemonic-config-map"
annotations:
"helm.sh/hook": pre-install
"helm.sh/hook-weight": "-1"
"helm.sh/hook-delete-policy": hook-succeeded
data:
entrypoint.sh: |-
#!/bin/sh
if [ ! -e /plots/keyfile ]; then
/chia-blockchain/venv/bin/python3 -c "from chia.util.keychain import generate_mnemonic;print(generate_mnemonic())" > /plots/keyfile;
fi

View File

@@ -1,21 +0,0 @@
{{/*
Enable host networking
*/}}
{{- define "hostNetworkingEnabled" -}}
{{- if or (lt (.Values.service.nodePort | int) 9000) (lt (.Values.service.farmerPort | int) 9000) -}}
{{- print "true" -}}
{{- else -}}
{{- print "false" -}}
{{- end -}}
{{- end -}}
{{/*
Enable Node Port Service
*/}}
{{- define "enableService" -}}
{{- if or (ge (.Values.service.nodePort | int) 9000) (ge (.Values.service.farmerPort | int) 9000) -}}
{{- print "true" -}}
{{- else -}}
{{- print "false" -}}
{{- end -}}
{{- end -}}

View File

@@ -1,13 +0,0 @@
{{ if eq (include "enableService" .) "true" }}
{{ $svc := .Values.service }}
{{ $ports := list }}
{{ if ge ($svc.nodePort | int) 9000 }}
{{ $ports = mustAppend $ports (dict "name" "chia-network" "port" $svc.nodePort "nodePort" $svc.nodePort "targetPort" 8444) }}
{{ end }}
{{ if ge ($svc.farmerPort | int) 9000 }}
{{ $ports = mustAppend $ports (dict "name" "chia-farmer" "port" $svc.farmerPort "nodePort" $svc.farmerPort "targetPort" 8447) }}
{{ end }}
{{ $params := . }}
{{ $_ := set $params "commonService" (dict "type" "NodePort" "ports" $ports ) }}
{{ include "common.classes.service" $params }}
{{ end }}

View File

@@ -1,16 +0,0 @@
appVolumeMounts:
data:
emptyDir: true
mountPath: /data
staging:
emptyDir: true
mountPath: /plots
farmr_env: 'off'
image:
pullPolicy: IfNotPresent
repository: ixsystems/chia-docker
tag: v1.7.0
service:
farmerPort: 31122
nodePort: 31121
updateStrategy: Recreate

View File

@@ -1,4 +0,0 @@
categories:
- storage
- crypto
icon_url: https://www.chia.net/wp-content/uploads/2022/09/chia-logo.svg

View File

@@ -1 +0,0 @@
{"filename": "ix_values.yaml", "keys": ["image"], "test_filename": "test_values.yaml"}

View File

@@ -1,27 +0,0 @@
#!/usr/bin/python3
import json
import sys
from catalog_update.upgrade_strategy import semantic_versioning
def newer_mapping(image_tags):
key = list(image_tags.keys())[0]
tags = {t.strip('v').replace('_', '.'): t for t in image_tags[key]}
version = semantic_versioning(tags)
if not version:
return {}
return {
'tags': {key: tags[version]},
'app_version': tags[version],
}
if __name__ == '__main__':
try:
versions_json = json.loads(sys.stdin.read())
except ValueError:
raise ValueError('Invalid json specified')
print(json.dumps(newer_mapping(versions_json)))

View File

@@ -1,23 +0,0 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
# OWNERS file for Kubernetes
OWNERS

View File

@@ -1,19 +0,0 @@
apiVersion: v1
appVersion: 21.11.4.1.1
dependencies:
- name: common
repository: file://../../../library/common/2207.0.0
version: 2207.0.0
description: "Collabora Online Development Edition \u2013 an awesome, Online Office\
\ suite image suitable for home use."
home: https://github.com/CollaboraOnline/online
icon: https://avatars.githubusercontent.com/u/22418908?s=200&v=4
keywords:
- office
- documents
- productivity
name: collabora
sources:
- https://github.com/CollaboraOnline/online.git
- https://hub.docker.com/r/collabora/code
version: 1.2.6

View File

@@ -1,8 +0,0 @@
Collabora Online Development Edition
=====
Collabora Online Development Edition - An awesome, Online Office suite image suitable for home use!
Introduction
------------
This chart bootstraps Collabora deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.

View File

@@ -1,9 +0,0 @@
Collabora Online Development Edition
=====
An awesome, Online Office suite image suitable for home use.
With the Collabora Online Development Edition (CODE) Docker Image you can host
your own online Office Suite at home! This Docker image is aimed at home users
and contains the latest and greatest developments. Simply integrate it in your
preferred File Sync and Share (FSS), to easily get your own online Office
Suite up and running!

View File

@@ -1,10 +0,0 @@
image:
pullPolicy: IfNotPresent
repository: collabora/code
tag: 21.11.4.1.1
nginx:
image:
pullPolicy: IfNotPresent
repository: nginx
tag: 1.21.3
updateStrategy: Recreate

View File

@@ -1,158 +0,0 @@
groups:
- name: "Collabora Configuration"
description: "Configure Collabora"
- name: "Collabora Environment Variables"
description: "Set the environment that will be visible to the container"
- name: "Networking"
description: "Configure Networking for Collabora"
- name: "Storage"
description: "Configure Storage for Collabora"
- name: "Resource Limits"
description: "Set CPU/memory limits for Kubernetes Pod"
portals:
web_portal:
protocols:
- "https"
host:
- "$variable-config.server_name"
ports:
- "$variable-nodePort"
path: "/browser/dist/admin/admin.html"
questions:
- variable: config
label: "Container Configuration"
group: "Collabora Configuration"
schema:
type: dict
attrs:
- variable: timezone
label: "Timezone"
group: "Collabora Configuration"
schema:
type: string
$ref:
- "definitions/timezone"
- variable: username
label: "Username for WebUI"
schema:
type: string
default: "admin"
required: true
- variable: password
label: "Password for WebUI"
schema:
type: string
private: true
default: "changeme"
valid_chars: "[a-zA-Z0-9!@#$%^&*?]{8,}"
required: true
- variable: dictionaries
label: "Dictionaries to use, leave empty to use all"
schema:
type: string
default: "de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru"
- variable: extra_params
label: "Extra Parameters to add"
description: 'e.g. "--o:welcome.enable=false", See more on /etc/loolwsd/loowsd.xml. Separate params with space'
schema:
type: string
default: "--o:welcome.enable=false --o:user_interface.mode=notebookbar --o:ssl.termination=true --o:ssl.enable=false --o:net.proto=IPv4 --o:net.post_allow.host[0]=.+ --o:storage.wopi.host[0]=.+"
- variable: server_name
label: "Server Name"
description: "When this environment variable is set (is not “”), then its value will be used as server name in /etc/loolwsd/loolwsd.xml. Without this, CODE is not delivering a correct host for the websocket connection in case of a proxy in front of it."
schema:
type: string
$ref:
- "definitions/nodeIP"
- variable: certificate
description: "Collabora Certificate"
label: "Certificate"
group: "Collabora Configuration"
schema:
type: int
$ref:
- "definitions/certificate"
"null": false
- variable: extraAppVolumeMounts
label: "Collabora Extra Host Path Volumes"
group: "Storage"
schema:
type: list
items:
- variable: extraAppVolume
label: "Collabora Host Path Volume"
description: "Add an extra host path volume for Collabora application"
schema:
type: dict
attrs:
- variable: mountPath
label: "Mount Path in Pod"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
required: true
- variable: hostPath
label: "Host Path"
description: "Host path"
schema:
type: hostpath
required: true
- variable: environmentVariables
label: "Environment Variables"
group: "Collabora Environment Variables"
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: nodePort
label: "Node Port to use for Collabora"
group: "Networking"
schema:
type: int
default: 9980
min: 9000
max: 65535
- variable: enableResourceLimits
label: "Enable Pod resource limits"
group: "Resource Limits"
schema:
type: boolean
default: false
- variable: cpuLimit
label: "CPU Limit"
description: "CPU resource limit allow plain integer values with suffix m(milli) e.g 1000m, 100."
group: "Resource Limits"
schema:
type: string
show_if: [["enableResourceLimits", "=", true]]
valid_chars: "^\\d+(?:\\.\\d+(?!.*m$)|m?$)"
default: "4000m"
- variable: memLimit
label: "Memory Limit"
group: "Resource Limits"
description: "Memory limits is specified by number of bytes. Followed by quantity suffix like E,P,T,G,M,k and Ei,Pi,Ti,Mi,Gi,Ki can also be used. e.g 129e6, 129M, 128974848000m, 123Mi"
schema:
type: string
show_if: [["enableResourceLimits", "=", true]]
valid_chars: "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$"
default: "8Gi"

View File

@@ -1,6 +0,0 @@
dependencies:
- name: common
repository: file://../../../library/common/2207.0.0
version: 2207.0.0
digest: sha256:f17f3d458ca0210a52e39da0dce35034e900b36f2040d4b19bed46a7aae91506
generated: "2022-07-25T00:20:48.244687333+05:00"

View File

@@ -1,40 +0,0 @@
{{/*
Retrieve secret name for secure credentials
*/}}
{{- define "secretName" -}}
{{- print "credentials" -}}
{{- end -}}
{{/*
Retrieve true/false if certificate is configured
*/}}
{{- define "certAvailable" -}}
{{- if .Values.certificate -}}
{{- $values := (. | mustDeepCopy) -}}
{{- $_ := set $values "commonCertOptions" (dict "certKeyName" $values.Values.certificate) -}}
{{- template "common.resources.cert_present" $values -}}
{{- else -}}
{{- false -}}
{{- end -}}
{{- end -}}
{{/*
Retrieve public key of certificate
*/}}
{{- define "cert.publicKey" -}}
{{- $values := (. | mustDeepCopy) -}}
{{- $_ := set $values "commonCertOptions" (dict "certKeyName" $values.Values.certificate "publicKey" true) -}}
{{ include "common.resources.cert" $values }}
{{- end -}}
{{/*
Retrieve private key of certificate
*/}}
{{- define "cert.privateKey" -}}
{{- $values := (. | mustDeepCopy) -}}
{{- $_ := set $values "commonCertOptions" (dict "certKeyName" $values.Values.certificate) -}}
{{ include "common.resources.cert" $values }}
{{- end -}}

View File

@@ -1,77 +0,0 @@
{{ include "common.storage.hostPathValidate" .Values }}
apiVersion: {{ template "common.capabilities.deployment.apiVersion" . }}
kind: Deployment
metadata:
name: {{ template "common.names.fullname" . }}
labels: {{ include "common.labels" . | nindent 4 }}
spec:
strategy:
type: {{ .Values.updateStrategy }}
selector:
matchLabels: {{ include "common.labels.selectorLabels" . | nindent 6 }}
template:
metadata:
name: {{ template "common.names.fullname" . }}
labels: {{ include "common.labels.selectorLabels" . | nindent 8 }}
spec:
containers:
- name: {{ .Chart.Name }}-nginx
image: {{ printf "%s:%s" .Values.nginx.image.repository .Values.nginx.image.tag }}
imagePullPolicy: {{ .Values.nginx.image.pullPolicy }}
volumeMounts:
- name: configuration
mountPath: /etc/nginx/nginx.conf
readOnly: true
subPath: config
- name: certs
mountPath: /etc/nginx/server.crt
subPath: certPublicKey
- name: certs
mountPath: /etc/nginx/server.key
subPath: certPrivateKey
ports:
- name: http
containerPort: 80
protocol: TCP
- name: https
containerPort: 443
protocol: TCP
- name: {{ .Chart.Name }}
{{ include "common.resources.limitation" . | nindent 10 }}
{{ include "common.containers.imageConfig" .Values.image | nindent 10 }}
{{ if .Values.extraAppVolumeMounts }}
volumeMounts:
{{ range $index, $hostPathConfiguration := .Values.extraAppVolumeMounts }}
- name: extrappvolume-{{ $index }}
mountPath: {{ $hostPathConfiguration.mountPath }}
{{ end }}
{{ end }}
ports:
- name: collabora
protocol: TCP
containerPort: 9980
{{ $envList := (default list .Values.environmentVariables) }}
{{ $secretName := (include "secretName" .) }}
{{ $envConfig := .Values.config }}
{{ $envList = mustAppend $envList (dict "name" "timezone" "value" $envConfig.timezone) }}
{{ $envList = mustAppend $envList (dict "name" "domain" "value" $envConfig.domain) }}
{{ $envList = mustAppend $envList (dict "name" "dictionaries" "value" $envConfig.dictionaries) }}
{{ $envList = mustAppend $envList (dict "name" "extra_params" "value" $envConfig.extra_params) }}
{{ $envList = mustAppend $envList (dict "name" "DONT_GEN_SSL_CERT" "value" "true") }}
{{ $envList = mustAppend $envList (dict "name" "server_name" "value" (printf "%v:%v" $envConfig.server_name .Values.nodePort)) }}
{{ $envList = mustAppend $envList (dict "name" "username" "valueFromSecret" true "secretName" $secretName "secretKey" "username") }}
{{ $envList = mustAppend $envList (dict "name" "password" "valueFromSecret" true "secretName" $secretName "secretKey" "password") }}
{{ include "common.containers.allEnvironmentVariables" (dict "environmentVariables" $envList) | nindent 10 }}
volumes:
- name: configuration
configMap:
defaultMode: 0700
name: "nginx-config"
- name: certs
secret:
secretName: {{ include "secretName" . }}
{{ range $index, $hostPathConfiguration := .Values.extraAppVolumeMounts }}
- name: extrappvolume-{{ $index }}
hostPath:
path: {{ $hostPathConfiguration.hostPath }}
{{ end }}

View File

@@ -1,122 +0,0 @@
{{- $serviceName := "localhost" -}}
apiVersion: v1
kind: ConfigMap
metadata:
name: "nginx-config"
annotations:
rollme: {{ randAlphaNum 5 | quote }}
data:
config: |-
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
# Types to enable gzip compression on
gzip_types
text/plain
text/css
text/js
text/xml
text/javascript
application/javascript
application/x-javascript
application/json
application/xml
application/rss+xml
image/svg+xml;
sendfile on;
client_max_body_size 1000m;
keepalive_timeout 65;
# Disable tokens for security (#23684)
server_tokens off;
gzip on;
client_body_temp_path /var/tmp/firmware;
server {
server_name nginx;
listen 0.0.0.0:443 default_server ssl http2;
listen [::]:443 default_server ssl http2;
ssl_certificate "/etc/nginx/server.crt";
ssl_certificate_key "/etc/nginx/server.key";
ssl_session_timeout 120m;
ssl_session_cache shared:ssl:16m;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA:EDH+aRSA:EECDH:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!SHA1:!SHA256:!SHA384;
add_header Strict-Transport-Security max-age=31536000;
location = /robots.txt {
add_header Content-Type text/plain;
proxy_set_header Referer "http://nginx";
return 200 "User-agent: *\nDisallow: /loleaflet/*\n";
}
# static files
location ^~ /browser {
proxy_pass http://{{ $serviceName }}:9980;
proxy_set_header Host $host;
# proxy_set_header Referer "http://nginx";
}
# WOPI discovery URL
location ^~ /hosting/discovery {
set $upstream_collabora {{ $serviceName }};
proxy_pass http://$upstream_collabora:9980;
proxy_set_header Host $http_host;
# proxy_set_header Referer "http://nginx";
}
# Capabilities
location ^~ /hosting/capabilities {
proxy_pass http://{{ $serviceName }}:9980;
proxy_set_header Host $host;
# proxy_set_header Referer "http://nginx";
}
# main websocket
location ~ ^/cool/(.*)/ws$ {
proxy_pass http://{{ $serviceName }}:9980;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
# proxy_set_header Referer "http://nginx";
proxy_read_timeout 36000s;
}
# download, presentation and image upload
location ~ ^/(c|l)ool {
proxy_pass http://{{ $serviceName }}:9980;
proxy_set_header Host $host;
proxy_set_header Referer "http://nginx";
}
# Admin Console websocket
location ^~ /cool/adminws {
proxy_pass http://{{ $serviceName }}:9980;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "Upgrade";
# proxy_set_header Referer "http://nginx";
proxy_read_timeout 36000s;
}
}
server {
listen 0.0.0.0:80;
listen [::]:80;
server_name nginx;
return 307 https://$host:{{ .Values.nodePort }}}$request_uri;
}
}

View File

@@ -1,6 +0,0 @@
{{ $port := .Values.nodePort }}
{{ $ports := list }}
{{ $ports = mustAppend $ports (dict "name" "https" "nodePort" $port "targetPort" 443 "port" 443) }}
{{ $params := (. | mustDeepCopy) }}
{{ $_ := set $params "commonService" (dict "ports" $ports "type" "NodePort" ) }}
{{ include "common.classes.service" $params }}

View File

@@ -1,15 +0,0 @@
apiVersion: v1
kind: Secret
metadata:
name: {{ template "secretName" . }}
labels: {{ include "common.labels" . | nindent 4 }}
type: Opaque
data:
username: {{ .Values.config.username | b64enc | quote }}
password: {{ .Values.config.password | b64enc | quote }}
{{ if eq (include "certAvailable" .) "true" }}
certPublicKey: {{ (include "cert.publicKey" .) | toString | b64enc | quote }}
certPrivateKey: {{ (include "cert.privateKey" .) | toString | b64enc | quote }}
{{ else }}
{{ fail "No certificate configured for Collabora" }}
{{ end }}

View File

@@ -1,21 +0,0 @@
{{- $serviceName := (include "common.names.fullname" .) -}}
apiVersion: v1
kind: Pod
metadata:
name: "{{ .Release.Name }}-collabora-test"
labels:
app: {{ .Release.Name }}
release: {{ .Release.Name }}
annotations:
"helm.sh/hook": test
spec:
containers:
- name: test-curl
image: alpine/curl
imagePullPolicy: "IfNotPresent"
command:
- /bin/sh
- -ec
- |
curl --connect-timeout 5 --max-time 10 --retry 5 --retry-delay 15 --retry-max-time 90 --retry-all-errors -ks https://{{ $serviceName }}/browser/dist/admin/admin.html
restartPolicy: Never

View File

@@ -1,364 +0,0 @@
certificate: 55
config:
DONT_GEN_SSL_CERT: 'true'
dictionaries: de_DE en_GB en_US es_ES fr_FR it nl pt_BR pt_PT ru
domain: nextcloud\.domain\.tld|othernextcloud\.domain\.tld
extra_params: --o:welcome.enable=false --o:user_interface.mode=notebookbar --o:ssl.termination=true
--o:ssl.enable=false --o:net.proto=IPv4 --o:net.post_allow.host[0]=.+ --o:storage.wopi.host[0]=.+
password: changeme
server_name: ssh.sonicaj.com:49980
timezone: Asia/Karachi
username: admin
environmentVariables: []
extraAppVolumeMounts: []
image:
pullPolicy: IfNotPresent
repository: collabora/code
tag: 21.11.4.1.1
ixCertificateAuthorities: {}
ixCertificates:
'55':
CA_type_existing: false
CA_type_intermediate: false
CA_type_internal: false
CSR: null
DN: /CN=ad/C=US/ST=asdf/L=asdf/O=adsf/OU=asdf/emailAddress=a@a.com/subjectAltName=IP
Address:192.168.0.3, IP Address:192.168.0.5, IP Address:192.168.0.182, IP Address:192.168.0.129,
IP Address:192.168.0.146
can_be_revoked: false
cert_type: CERTIFICATE
cert_type_CSR: false
cert_type_existing: true
cert_type_internal: false
certificate: '-----BEGIN CERTIFICATE-----
MIIEdjCCA16gAwIBAgIDYFMYMA0GCSqGSIb3DQEBCwUAMGwxDDAKBgNVBAMMA2Fz
ZDELMAkGA1UEBhMCVVMxDTALBgNVBAgMBGFzZGYxCzAJBgNVBAcMAmFmMQ0wCwYD
VQQKDARhc2RmMQwwCgYDVQQLDANhc2QxFjAUBgkqhkiG9w0BCQEWB2FAYS5jb20w
HhcNMjEwODMwMjMyMzU0WhcNMjMxMjAzMjMyMzU0WjBuMQswCQYDVQQDDAJhZDEL
MAkGA1UEBhMCVVMxDTALBgNVBAgMBGFzZGYxDTALBgNVBAcMBGFzZGYxDTALBgNV
BAoMBGFkc2YxDTALBgNVBAsMBGFzZGYxFjAUBgkqhkiG9w0BCQEWB2FAYS5jb20w
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7+1xOHRQyOnQTHFcrdasX
Zl0gzutVlA890a1wiQpdD5dOtCLo7+eqVYjqVKo9W8RUIArXWmBu/AbkH7oVFWC1
P973W1+ArF5sA70f7BZgqRKJTIisuIFIlRETgfnP2pfQmHRZtGaIJRZI4vQCdYgW
2g0KOvvNcZJCVq1OrhKiNiY1bWCp66DGg0ic6OEkZFHTm745zUNQaf2dNgsxKU0H
PGjVLJI//yrRFAOSBUqgD4c50krnMF7fU/Fqh+UyOu8t6Y/HsySh3urB+Zie331t
AzV6QV39KKxRflNx/yuWrtIEslGTm+xHKoCYJEk/nZ3mX8Y5hG6wWAb7A/FuDVg3
AgMBAAGjggEdMIIBGTAnBgNVHREEIDAehwTAqAADhwTAqAAFhwTAqAC2hwTAqACB
hwTAqACSMB0GA1UdDgQWBBQ4G2ff4tgZl4vmo4xCfqmJhdqShzAMBgNVHRMBAf8E
AjAAMIGYBgNVHSMEgZAwgY2AFLlYf9L99nxJDcpCM/LT3V5hQ/a3oXCkbjBsMQww
CgYDVQQDDANhc2QxCzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARhc2RmMQswCQYDVQQH
DAJhZjENMAsGA1UECgwEYXNkZjEMMAoGA1UECwwDYXNkMRYwFAYJKoZIhvcNAQkB
FgdhQGEuY29tggNgUxcwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwEwDgYDVR0PAQH/
BAQDAgWgMA0GCSqGSIb3DQEBCwUAA4IBAQA6FpOInEHB5iVk3FP67GybJ29vHZTD
KQHbQgmg8s4L7qIsA1HQ+DMCbdylpA11x+t/eL/n48BvGw2FNXpN6uykhLHJjbKR
h8yITa2KeD3LjLYhScwIigXmTVYSP3km6s8jRL6UKT9zttnIHyXVpBDya6Q4WTMx
fmfC6O7t1PjQ5ZyVtzizIUP8ah9n4TKdXU4A3QIM6WsJXpHb+vqp1WDWJ7mKFtgj
x5TKv3wcPnktx0zMPfLb5BTSE9rc9djcBG0eIAsPT4FgiatCUChe7VhuMnqskxEz
MymJLoq8+mzucRwFkOkR2EIt1x+Irl2mJVMeBow63rVZfUQBD8h++LqB
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEhDCCA2ygAwIBAgIDYFMXMA0GCSqGSIb3DQEBCwUAMGwxDDAKBgNVBAMMA2Fz
ZDELMAkGA1UEBhMCVVMxDTALBgNVBAgMBGFzZGYxCzAJBgNVBAcMAmFmMQ0wCwYD
VQQKDARhc2RmMQwwCgYDVQQLDANhc2QxFjAUBgkqhkiG9w0BCQEWB2FAYS5jb20w
HhcNMjEwODMwMjMyMDQ1WhcNMzEwODI4MjMyMDQ1WjBsMQwwCgYDVQQDDANhc2Qx
CzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARhc2RmMQswCQYDVQQHDAJhZjENMAsGA1UE
CgwEYXNkZjEMMAoGA1UECwwDYXNkMRYwFAYJKoZIhvcNAQkBFgdhQGEuY29tMIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq//c0hEEr83CS1pMgsHX50jt
2MqIbcf63UUNJTiYpUUvUQSFJFc7m/dr+RTZvu97eDCnD5K2qkHHvTPaPZwY+Djf
iy7N641Sz6u/y3Yo3xxs1Aermsfedh48vusJpjbkT2XS44VjbkrpKcWDNVpp3Evd
M7oJotXeUsZ+imiyVCfr4YhoY5gbGh/r+KN9Wf9YKoUyfLLZGwdZkhtX2zIbidsL
Thqi9YTaUHttGinjiBBum234u/CfvKXsfG3yP2gvBGnlvZnM9ktv+lVffYNqlf7H
VmB1bKKk84HtzuW5X76SGAgOG8eHX4x5ZLI1WQUuoQOVRl1I0UCjBtbz8XhwvQID
AQABo4IBLTCCASkwLQYDVR0RBCYwJIcEwKgABYcEwKgAA4cEwKgAkocEwKgAtYcE
wKgAgYcEwKgAtjAdBgNVHQ4EFgQUuVh/0v32fEkNykIz8tPdXmFD9rcwDwYDVR0T
AQH/BAUwAwEB/zCBmAYDVR0jBIGQMIGNgBS5WH/S/fZ8SQ3KQjPy091eYUP2t6Fw
pG4wbDEMMAoGA1UEAwwDYXNkMQswCQYDVQQGEwJVUzENMAsGA1UECAwEYXNkZjEL
MAkGA1UEBwwCYWYxDTALBgNVBAoMBGFzZGYxDDAKBgNVBAsMA2FzZDEWMBQGCSqG
SIb3DQEJARYHYUBhLmNvbYIDYFMXMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF
BQcDAjAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAKEocOmVuWlr
zegtKYMe8NhHIkFY9oVn5ym6RHNOJpPH4QF8XYC3Z5+iC5yGh4P/jVe/4I4SF6Ql
PtofU0jNq5vzapt/y+m008eXqPQFmoUOvu+JavoRVcRx2LIP5AgBA1mF56CSREsX
TkuJAA9IUQ8EjnmAoAeKINuPaKxGDuU8BGCMqr/qd564MKNf9XYL+Fb2rlkA0O2d
2No34DQLgqSmST/LAvPM7Cbp6knYgnKmGr1nETCXasg1cueHLnWWTvps2HiPp2D/
+Fq0uqcZLu4Mdo0CPs4e5sHRyldEnRSKh0DVLprq9zr/GMipmPLJUsT5Jed3sj0w
M7Y3vwxshpo=
-----END CERTIFICATE-----'
certificate_path: /etc/certificates/slog3.crt
chain: true
chain_list:
- '-----BEGIN CERTIFICATE-----
MIIEdjCCA16gAwIBAgIDYFMYMA0GCSqGSIb3DQEBCwUAMGwxDDAKBgNVBAMMA2Fz
ZDELMAkGA1UEBhMCVVMxDTALBgNVBAgMBGFzZGYxCzAJBgNVBAcMAmFmMQ0wCwYD
VQQKDARhc2RmMQwwCgYDVQQLDANhc2QxFjAUBgkqhkiG9w0BCQEWB2FAYS5jb20w
HhcNMjEwODMwMjMyMzU0WhcNMjMxMjAzMjMyMzU0WjBuMQswCQYDVQQDDAJhZDEL
MAkGA1UEBhMCVVMxDTALBgNVBAgMBGFzZGYxDTALBgNVBAcMBGFzZGYxDTALBgNV
BAoMBGFkc2YxDTALBgNVBAsMBGFzZGYxFjAUBgkqhkiG9w0BCQEWB2FAYS5jb20w
ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7+1xOHRQyOnQTHFcrdasX
Zl0gzutVlA890a1wiQpdD5dOtCLo7+eqVYjqVKo9W8RUIArXWmBu/AbkH7oVFWC1
P973W1+ArF5sA70f7BZgqRKJTIisuIFIlRETgfnP2pfQmHRZtGaIJRZI4vQCdYgW
2g0KOvvNcZJCVq1OrhKiNiY1bWCp66DGg0ic6OEkZFHTm745zUNQaf2dNgsxKU0H
PGjVLJI//yrRFAOSBUqgD4c50krnMF7fU/Fqh+UyOu8t6Y/HsySh3urB+Zie331t
AzV6QV39KKxRflNx/yuWrtIEslGTm+xHKoCYJEk/nZ3mX8Y5hG6wWAb7A/FuDVg3
AgMBAAGjggEdMIIBGTAnBgNVHREEIDAehwTAqAADhwTAqAAFhwTAqAC2hwTAqACB
hwTAqACSMB0GA1UdDgQWBBQ4G2ff4tgZl4vmo4xCfqmJhdqShzAMBgNVHRMBAf8E
AjAAMIGYBgNVHSMEgZAwgY2AFLlYf9L99nxJDcpCM/LT3V5hQ/a3oXCkbjBsMQww
CgYDVQQDDANhc2QxCzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARhc2RmMQswCQYDVQQH
DAJhZjENMAsGA1UECgwEYXNkZjEMMAoGA1UECwwDYXNkMRYwFAYJKoZIhvcNAQkB
FgdhQGEuY29tggNgUxcwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwEwDgYDVR0PAQH/
BAQDAgWgMA0GCSqGSIb3DQEBCwUAA4IBAQA6FpOInEHB5iVk3FP67GybJ29vHZTD
KQHbQgmg8s4L7qIsA1HQ+DMCbdylpA11x+t/eL/n48BvGw2FNXpN6uykhLHJjbKR
h8yITa2KeD3LjLYhScwIigXmTVYSP3km6s8jRL6UKT9zttnIHyXVpBDya6Q4WTMx
fmfC6O7t1PjQ5ZyVtzizIUP8ah9n4TKdXU4A3QIM6WsJXpHb+vqp1WDWJ7mKFtgj
x5TKv3wcPnktx0zMPfLb5BTSE9rc9djcBG0eIAsPT4FgiatCUChe7VhuMnqskxEz
MymJLoq8+mzucRwFkOkR2EIt1x+Irl2mJVMeBow63rVZfUQBD8h++LqB
-----END CERTIFICATE-----'
- '-----BEGIN CERTIFICATE-----
MIIEhDCCA2ygAwIBAgIDYFMXMA0GCSqGSIb3DQEBCwUAMGwxDDAKBgNVBAMMA2Fz
ZDELMAkGA1UEBhMCVVMxDTALBgNVBAgMBGFzZGYxCzAJBgNVBAcMAmFmMQ0wCwYD
VQQKDARhc2RmMQwwCgYDVQQLDANhc2QxFjAUBgkqhkiG9w0BCQEWB2FAYS5jb20w
HhcNMjEwODMwMjMyMDQ1WhcNMzEwODI4MjMyMDQ1WjBsMQwwCgYDVQQDDANhc2Qx
CzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARhc2RmMQswCQYDVQQHDAJhZjENMAsGA1UE
CgwEYXNkZjEMMAoGA1UECwwDYXNkMRYwFAYJKoZIhvcNAQkBFgdhQGEuY29tMIIB
IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq//c0hEEr83CS1pMgsHX50jt
2MqIbcf63UUNJTiYpUUvUQSFJFc7m/dr+RTZvu97eDCnD5K2qkHHvTPaPZwY+Djf
iy7N641Sz6u/y3Yo3xxs1Aermsfedh48vusJpjbkT2XS44VjbkrpKcWDNVpp3Evd
M7oJotXeUsZ+imiyVCfr4YhoY5gbGh/r+KN9Wf9YKoUyfLLZGwdZkhtX2zIbidsL
Thqi9YTaUHttGinjiBBum234u/CfvKXsfG3yP2gvBGnlvZnM9ktv+lVffYNqlf7H
VmB1bKKk84HtzuW5X76SGAgOG8eHX4x5ZLI1WQUuoQOVRl1I0UCjBtbz8XhwvQID
AQABo4IBLTCCASkwLQYDVR0RBCYwJIcEwKgABYcEwKgAA4cEwKgAkocEwKgAtYcE
wKgAgYcEwKgAtjAdBgNVHQ4EFgQUuVh/0v32fEkNykIz8tPdXmFD9rcwDwYDVR0T
AQH/BAUwAwEB/zCBmAYDVR0jBIGQMIGNgBS5WH/S/fZ8SQ3KQjPy091eYUP2t6Fw
pG4wbDEMMAoGA1UEAwwDYXNkMQswCQYDVQQGEwJVUzENMAsGA1UECAwEYXNkZjEL
MAkGA1UEBwwCYWYxDTALBgNVBAoMBGFzZGYxDDAKBgNVBAsMA2FzZDEWMBQGCSqG
SIb3DQEJARYHYUBhLmNvbYIDYFMXMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF
BQcDAjAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAKEocOmVuWlr
zegtKYMe8NhHIkFY9oVn5ym6RHNOJpPH4QF8XYC3Z5+iC5yGh4P/jVe/4I4SF6Ql
PtofU0jNq5vzapt/y+m008eXqPQFmoUOvu+JavoRVcRx2LIP5AgBA1mF56CSREsX
TkuJAA9IUQ8EjnmAoAeKINuPaKxGDuU8BGCMqr/qd564MKNf9XYL+Fb2rlkA0O2d
2No34DQLgqSmST/LAvPM7Cbp6knYgnKmGr1nETCXasg1cueHLnWWTvps2HiPp2D/
+Fq0uqcZLu4Mdo0CPs4e5sHRyldEnRSKh0DVLprq9zr/GMipmPLJUsT5Jed3sj0w
M7Y3vwxshpo=
-----END CERTIFICATE-----'
city: asdf
common: ad
country: US
csr_path: /etc/certificates/slog3.csr
digest_algorithm: SHA256
email: a@a.com
extensions:
AuthorityKeyIdentifier: 'keyid:B9:58:7F:D2:FD:F6:7C:49:0D:CA:42:33:F2:D3:DD:5E:61:43:F6:B7
DirName:/CN=asd/C=US/ST=asdf/L=af/O=asdf/OU=asd/emailAddress=a@a.com
serial:60:53:17
'
BasicConstraints: CA:FALSE
ExtendedKeyUsage: TLS Web Server Authentication
KeyUsage: Digital Signature, Key Encipherment
SubjectAltName: IP Address:192.168.0.3, IP Address:192.168.0.5, IP Address:192.168.0.182,
IP Address:192.168.0.129, IP Address:192.168.0.146
SubjectKeyIdentifier: 38:1B:67:DF:E2:D8:19:97:8B:E6:A3:8C:42:7E:A9:89:85:DA:92:87
fingerprint: 59:7A:49:6D:04:CE:70:E5:AF:9A:FB:75:3C:26:58:7D:B7:8E:A6:9D
from: Tue Aug 31 04:23:54 2021
id: 55
internal: 'NO'
issuer: external
key_length: 2048
key_type: RSA
lifetime: 825
name: slog3
organization: adsf
organizational_unit: asdf
parsed: true
privatekey: '-----BEGIN PRIVATE KEY-----
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC7+1xOHRQyOnQT
HFcrdasXZl0gzutVlA890a1wiQpdD5dOtCLo7+eqVYjqVKo9W8RUIArXWmBu/Abk
H7oVFWC1P973W1+ArF5sA70f7BZgqRKJTIisuIFIlRETgfnP2pfQmHRZtGaIJRZI
4vQCdYgW2g0KOvvNcZJCVq1OrhKiNiY1bWCp66DGg0ic6OEkZFHTm745zUNQaf2d
NgsxKU0HPGjVLJI//yrRFAOSBUqgD4c50krnMF7fU/Fqh+UyOu8t6Y/HsySh3urB
+Zie331tAzV6QV39KKxRflNx/yuWrtIEslGTm+xHKoCYJEk/nZ3mX8Y5hG6wWAb7
A/FuDVg3AgMBAAECggEAapt30rj9DitGTtxAt13pJMEhyYxvvD3WkvmJwguF/Bbu
eW0Ba1c668fMeRCA54FWi1sMqusPS4HUqqUvk+tmyAOsAF4qgD/A4MMSC7uJSVI5
N/JWhJWyhCY94/FPakiO1nbPbVw41bcqtzU2qvparpME2CtxSCbDiqm7aaag3Kqe
EF0fGSUdZ+TYl9JM05+eIyiX+UY19Fg0OjTHMn8nGpxcNTfDBdQ68TKvdo/dtIKL
PLKzJUNNdM8odC4CvQtfGMqaslwZwXkiOl5VJcW21ncj/Y0ngEMKeD/i65ZoqGdR
0FKCQYEAGtM2FvJcZQ92Wsw7yj2bK2MSegVUyLK32QKBgQDe8syVCepPzRsfjfxA
6TZlWcGuTZLhwIx97Ktw3VcQ1f4rLoEYlv0xC2VWBORpzIsJo4I/OLmgp8a+Ga8z
FkVRnq90dV3t4NP9uJlHgcODHnOardC2UUka4olBSCG6zmK4Jxi34lOxhGRkshOo
L4IBeOIB5g+ZrEEXkzfYJHESRQKBgQDX2YhFhGIrT8BAnC5BbXbhm8h6Bhjz8DYL
d+qhVJjef7L/aJxViU0hX9Ba2O8CLK3FZeREFE3hJPiJ4TZSlN4evxs5p+bbNDcA
0mhRI/o3X4ac6IxdRebyYnCOB/Cu94/MzppcZcotlCekKNike7eorCcX4Qavm7Pu
MUuQ+ifmSwKBgEnchoqZzlbBzMqXb4rRuIO7SL9GU/MWp3TQg7vQmJerTZlgvsQ2
wYsOC3SECmhCq4117iCj2luvOdihCboTFsQDnn0mpQe6BIF6Ns3J38wAuqv0CcFd
DKsrge1uyD3rQilgSoAhKzkUc24o0PpXQurZ8YZPgbuXpbj5vPaOnCdBAoGACYc7
wb3XS4wos3FxhUfcwJbM4b4VKeeHqzfu7pI6cU/3ydiHVitKcVe2bdw3qMPqI9Wc
nvi6e17Tbdq4OCsEJx1OiVwFD9YdO3cOTc6lw/3+hjypvZBRYo+/4jUthbu96E+S
dtOzehGZMmDvN0uSzupSi3ZOgkAAUFpyuIKickMCgYAId0PCRjonO2thn/R0rZ7P
//L852uyzYhXKw5/fjFGhQ6LbaLgIRFaCZ0L2809u0HFnNvJjHv4AKP6j+vFQYYY
qQ+66XnfsA9G/bu4MDS9AX83iahD9IdLXQAy8I19prAbpVumKegPbMnNYNB/TYEc
3G15AKCXo7jjOUtHY01DCQ==
-----END PRIVATE KEY-----'
privatekey_path: /etc/certificates/slog3.key
revoked: false
revoked_date: null
root_path: /etc/certificates
san:
- IP Address:192.168.0.3
- IP Address:192.168.0.5
- IP Address:192.168.0.182
- IP Address:192.168.0.129
- IP Address:192.168.0.146
serial: 6312728
signedby: null
state: asdf
subject_name_hash: 1673640987
type: 8
until: Mon Dec 4 04:23:54 2023
ixChartContext:
isInstall: false
isUpdate: true
isUpgrade: false
operation: UPDATE
storageClassName: ix-storage-class-col
upgradeMetadata: {}
ixExternalInterfacesConfiguration: []
ixExternalInterfacesConfigurationNames: []
ixVolumes: []
nginx:
image:
pullPolicy: IfNotPresent
repository: nginx
tag: 1.21.3
nodePort: 31980

View File

@@ -1,5 +0,0 @@
categories:
- office
- documents
- productivity
icon_url: https://avatars.githubusercontent.com/u/22418908?s=200&v=4

View File

@@ -1 +0,0 @@
{"filename": "ix_values.yaml", "keys": ["image"], "test_filename": "test_values.yaml"}

View File

@@ -1,26 +0,0 @@
#!/usr/bin/python3
import json
import sys
from catalog_update.upgrade_strategy import semantic_versioning
def newer_mapping(image_tags):
key = list(image_tags.keys())[0]
version = semantic_versioning(sorted(image_tags[key], reverse=True))
if not version:
return {}
return {
'tags': {key: version},
'app_version': version,
}
if __name__ == '__main__':
try:
versions_json = json.loads(sys.stdin.read())
except ValueError:
raise ValueError('Invalid json specified')
print(json.dumps(newer_mapping(versions_json)))

View File

@@ -1,6 +0,0 @@
dependencies:
- name: common
repository: file://../../../library/common/2207.0.0
version: 2207.0.0
digest: sha256:f17f3d458ca0210a52e39da0dce35034e900b36f2040d4b19bed46a7aae91506
generated: "2022-07-25T00:20:48.080698555+05:00"

View File

@@ -1,17 +0,0 @@
apiVersion: v2
appVersion: "2.0.1"
icon: http://www.diskoverdata.com/wp-content/uploads/2019/09/diskover.png
description: Diskover is used to monitor size/volumes of distributed dataset.
name: diskoverdata
version: 1.0.4
dependencies:
- name: common
repository: file://../../../library/common/2207.0.0
version: 2207.0.0
home: https://github.com/diskoverdata/diskover-community/
keywords:
- storage
- monitoring
- management
sources:
- https://github.com/diskoverdata/diskover-community/

View File

@@ -1,14 +0,0 @@
# DiskOverData
DiskOver App for TrueNAS SCALE
[Diskover](https://www.diskoverdata.com/) is a sustainable file management solution for your distributed data.
# Introduction
This chart is based on [diskoverdata](https://hub.docker.com/r/linuxserver/diskover) and
deployed on kubernetes via helm chart
## Configuration
Please refer to questions.yaml for a detailed overview on supported configurable values.

View File

@@ -1 +0,0 @@
DiskOver App for TrueNAS SCALE

View File

@@ -1,18 +0,0 @@
image:
pullPolicy: IfNotPresent
repository: linuxserver/diskover
tag: "2.0.1"
elasticsearch:
image:
pullPolicy: IfNotPresent
repository: docker.elastic.co/elasticsearch/elasticsearch
tag: "7.5.2"
python:
image:
pullPolicy: IfNotPresent
repository: python
tag: "3.10"
es_user: elasticsearch

View File

@@ -1,322 +0,0 @@
groups:
- name: "Configuration"
description: "Diskover application configuration"
- name: "Storage"
description: "Configure storage for Diskover"
- name: "Networking"
description: "Networking Configuration for Diskover"
- name: "Advanced DNS Settings"
description: "Configure DNS settings"
- name: "Resource Limits"
description: "Set CPU/memory limits for Kubernetes Pod"
portals:
web_portal:
protocols:
- "http"
host:
- "$node_ip"
ports:
- "$variable-web_port"
path: "/"
questions:
- variable: web_port
label: "Web Port for Diskover"
group: Networking
schema:
type: int
min: 8000
max: 65535
default: 22510
required: true
- variable: timezone
label: "Configure timezone"
group: "Configuration"
description: "Configure timezone for Diskover"
schema:
type: string
$ref:
- "definitions/timezone"
- variable: dnsConfig
label: "DNS Configuration"
group: "Advanced DNS Settings"
schema:
type: dict
attrs:
- variable: options
label: "DNS Options"
schema:
type: list
items:
- variable: optionsEntry
label: "Option Entry Configuration"
schema:
type: dict
attrs:
- variable: name
label: "Option Name"
schema:
type: string
required: true
- variable: value
label: "Option Value"
schema:
type: string
required: true
- variable: ownerUID
label: "Config folder's user id"
description: "Linuxserver uses this user id to configure config's folders permissions"
group: Configuration
schema:
type: int
default: 568
min: 1
max: 65535
- variable: ownerGID
label: "Config folder's group id"
description: "Linuxserver uses this group id to configure config's folders permissions"
group: Configuration
schema:
type: int
default: 568
min: 1
max: 65535
- variable: diskoverCredentials
description: "Configure Diskover Initial Password"
label: "Configure Diskover Initial Username and password"
group: "Configuration"
schema:
type: dict
required: true
additional_attrs: true
attrs:
- variable: username
label: "Username"
description: "UserName for Diskover User"
schema:
type: string
default: "admin"
required: true
- variable: password
label: "Password"
description: "Initial Password for Diskover User"
schema:
type: string
private: true
default: "changeme"
required: true
- variable: environmentVariables
label: "Diskover Extra Environment"
group: "Configuration"
schema:
type: list
default: []
items:
- variable: environmentVariable
label: "Environment Variable"
schema:
type: dict
attrs:
- variable: name
label: "Name"
schema:
type: string
- variable: value
label: "Value"
schema:
type: string
- variable: cronjobSchedule
description: "Cronjobs Consist on 5 values in this specific format 'Minute Hour Day Month Week'"
label: "Define cronjob schedule for diskover"
group: "Configuration"
schema:
type: string
default: "0 3 * * *"
- variable: appVolumeMounts
label: "Diskover Storage"
group: "Storage"
schema:
type: dict
attrs:
- variable: config
label: "Storage Volume for Configuration"
schema:
type: dict
attrs:
- variable: datasetName
label: "Configuration Storage Volume Dataset Name"
schema:
type: string
hidden: true
$ref:
- "normalize/ixVolume"
show_if: [["hostPathEnabled", "=", false]]
default: "ix-config"
editable: false
- variable: mountPath
label: "Configuration Storage Mount Path"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
hidden: true
editable: true
default: "/config"
- variable: hostPathEnabled
label: "Enable Custom Host Path for Diskover Configuration Storage Volume"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path for Diskover Configuration Storage Volume"
schema:
type: hostpath
required: true
- variable: data
label: "Storage Volume for Data"
schema:
type: dict
attrs:
- variable: datasetName
label: "Configuration Storage Volume Dataset Name"
schema:
type: string
hidden: true
$ref:
- "normalize/ixVolume"
show_if: [["hostPathEnabled", "=", false]]
default: "ix-data"
editable: false
- variable: mountPath
label: "Configuration Storage Mount Path"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
hidden: true
editable: true
default: "/data"
- variable: hostPathEnabled
label: "Enable Custom Host Path for Diskover Data folder to monitor"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path for Diskover Data folder to monitor"
schema:
type: hostpath
required: true
- variable: extraDataVolumeMounts
label: "Add Extra Host Paths For Diskover To Monitor"
group: "Storage"
schema:
type: list
items:
- variable: dataAppVolume
label: "Host Path Volume"
description: "Add extra Data Volumes for diskover to monitor"
schema:
type: dict
attrs:
- variable: mountPath
label: "Mount Path in Pod"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
required: true
- variable: hostPath
label: "Host Path"
description: "Host path"
schema:
type: hostpath
required: true
- variable: extraAppVolumeMounts
label: "Extra Host Path Volumes"
group: "Storage"
schema:
type: list
items:
- variable: extraAppVolume
label: "Host Path Volume"
description: "Add an extra host path volume for Diskover application"
schema:
type: dict
attrs:
- variable: mountPath
label: "Mount Path in Pod"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
required: true
- variable: hostPath
label: "Host Path"
description: "Host path"
schema:
type: hostpath
required: true
- variable: elasticSearchAppVolumeMounts
label: "elastic search Storage"
group: "Storage"
schema:
type: dict
hidden: true
attrs:
- variable: esdata
label: "Storage Volume for Configuration"
schema:
type: dict
attrs:
- variable: datasetName
label: "Configuration Storage Volume Dataset Name"
schema:
type: string
$ref:
- "normalize/ixVolume"
default: "ix-elasticsearch-data"
editable: false
- variable: mountPath
label: "Configuration Storage Mount Path"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
editable: false
default: "/usr/share/elasticsearch/data"
- variable: enableResourceLimits
label: "Enable Pod resource limits"
group: "Resource Limits"
schema:
type: boolean
default: false
- variable: cpuLimit
label: "CPU Limit"
description: "CPU resource limit allow plain integer values with suffix m(milli) e.g 1000m, 100."
group: "Resource Limits"
schema:
type: string
show_if: [["enableResourceLimits", "=", true]]
valid_chars: "^\\d+(?:\\.\\d+(?!.*m$)|m?$)"
default: "4000m"
- variable: memLimit
label: "Memory Limit"
group: "Resource Limits"
description: "Memory limits is specified by number of bytes. Followed by quantity suffix like E,P,T,G,M,k and Ei,Pi,Ti,Mi,Gi,Ki can also be used. e.g 129e6, 129M, 128974848000m, 123Mi"
schema:
type: string
show_if: [["enableResourceLimits", "=", true]]
valid_chars: "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$"
default: "8Gi"

View File

@@ -1,35 +0,0 @@
{{- define "add.user" -}}
{{- $user := .Values.es_user -}}
{{- printf "adduser %s -D;" $user -}}
{{- end -}}
{{- define "change.user.permissions" -}}
{{- $user := .Values.es_user -}}
{{- $mountPath := .Values.elasticSearchAppVolumeMounts.esdata.mountPath -}}
{{- printf "chown -R %s:%s %s;" $user $user $mountPath -}}
{{- end -}}
{{- define "elasticsearch.IP" -}}
{{ $envList := (default list) }}
{{ $envList = mustAppend $envList (dict "name" "ES_HOST" "value" (printf "%s" (include "common.names.fullname" .))) }}
{{ $envList = mustAppend $envList (dict "name" "ES_PORT" "value" "9200") }}
{{ include "common.containers.environmentVariables" (dict "environmentVariables" $envList) }}
{{- end -}}
{{- define "elasticsearch.credentials" -}}
{{ $envList := (default list) }}
{{ $envList = mustAppend $envList (dict "name" "ES_USER" "valueFromSecret" true "secretName" "elastic-search-credentials" "secretKey" "es-username") }}
{{ $envList = mustAppend $envList (dict "name" "ES_PASS" "valueFromSecret" true "secretName" "elastic-search-credentials" "secretKey" "es-password") }}
{{ include "common.containers.environmentVariables" (dict "environmentVariables" $envList) }}
{{- end -}}
{{- define "config.file.path" -}}
{{ $envList := (default list) }}
{{ $envList = mustAppend $envList (dict "name" "DEST" "value" .mountPath) }}
{{ $envList = mustAppend $envList (dict "name" "FILE" "value" .configFile) }}
{{ include "common.containers.environmentVariables" (dict "environmentVariables" $envList) }}
{{- end -}}

View File

@@ -1,133 +0,0 @@
{{ include "common.storage.hostPathValidate" .Values }}
{{ $elastic_search := (. | mustDeepCopy) }}
{{ $_ := set $elastic_search "common" (dict "nameSuffix" "elasticsearch") }}
apiVersion: {{ template "common.capabilities.deployment.apiVersion" . }}
kind: Deployment
metadata:
name: {{ template "common.names.fullname" . }}
labels:
app: {{ template "common.names.name" . }}
chart: {{ template "common.names.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
annotations:
rollme: {{ randAlphaNum 5 | quote }}
spec:
replicas: {{ (default 1 .Values.replicas) }}
strategy:
type: "Recreate"
selector:
matchLabels:
app: {{ template "common.names.name" . }}
release: {{ .Release.Name }}
template:
metadata:
name: {{ template "common.names.fullname" . }}
labels:
app: {{ template "common.names.name" . }}
release: {{ .Release.Name }}
{{- include "common.labels.selectorLabels" . | nindent 8 }}
annotations: {{ include "common.annotations" . | nindent 8 }}
spec:
initContainers:
- name: init-config
{{ include "common.containers.imageConfig" .Values.python.image | nindent 10 }}
command: ["python3", "/init_scripts/init_config.py"]
env:
{{ $envList := (default list .Values.environmentVariables) }}
{{ $envList = mustAppend $envList (dict "name" "TZ" "value" .Values.timezone) }}
{{ $envList = mustAppend $envList (dict "name" "DS_USER" "valueFromSecret" true "secretName" "diskover-credentials" "secretKey" "username") }}
{{ $envList = mustAppend $envList (dict "name" "DS_PASS" "valueFromSecret" true "secretName" "diskover-credentials" "secretKey" "password") }}
{{ include "common.containers.environmentVariables" (dict "environmentVariables" $envList) | nindent 12 }}
{{ include "elasticsearch.IP" $elastic_search | nindent 12 }}
{{ include "elasticsearch.credentials" . | nindent 12 }}
{{ $configPath := (dict "mountPath" (printf "%s/diskover-web.conf.d/" .Values.appVolumeMounts.config.mountPath) "configFile" "Constants.php") }}
{{ include "config.file.path" $configPath | nindent 12 }}
volumeMounts: {{ include "common.storage.configureAppVolumeMountsInContainer" .Values | nindent 12 }}
- name: diskover-initial-scripts
mountPath: /init_scripts/
- name: wait-es-search
{{ include "common.containers.imageConfig" .Values.image | nindent 10 }}
env:
{{ include "elasticsearch.IP" $elastic_search | nindent 12 }}
command: ["python3", "/init_scripts/wait_for_elastic_search.py"]
volumeMounts:
- name: diskover-initial-scripts
mountPath: /init_scripts/
- name: init-es-config
{{ include "common.containers.imageConfig" .Values.python.image | nindent 10 }}
command: ["python3", "/init_scripts/initial_es_config.py"]
env:
{{ $envListConfig := (default list .Values.environmentVariables) }}
{{ include "elasticsearch.IP" $elastic_search | nindent 12 }}
{{ include "elasticsearch.credentials" . | nindent 12 }}
{{ $configPathES := (dict "mountPath" (printf "%s/diskover.conf.d/diskover/" .Values.appVolumeMounts.config.mountPath) "configFile" "config.yaml") }}
{{ include "config.file.path" $configPathES | nindent 12 }}
{{ include "common.containers.environmentVariables" (dict "environmentVariables" $envListConfig) | nindent 12 }}
volumeMounts: {{ include "common.storage.configureAppVolumeMountsInContainer" .Values | nindent 12 }}
- name: diskover-initial-scripts
mountPath: /init_scripts/
containers:
- name: {{ .Chart.Name }}
{{ include "common.resources.limitation" . | nindent 10 }}
{{ include "common.containers.imageConfig" .Values.image | nindent 10 }}
volumeMounts: {{ include "common.storage.configureAppVolumeMountsInContainer" .Values | nindent 12 }}
- name: diskover-initial-scripts
mountPath: /init_scripts/
{{ range $index, $hostPathConfiguration := .Values.extraAppVolumeMounts }}
- name: extrappvolume-{{ $index }}
mountPath: {{ $hostPathConfiguration.mountPath }}
{{ end }}
{{ range $index, $hostPathConfiguration := .Values.extraDataVolumeMounts }}
- name: extradatavolume-{{ $index }}
mountPath: {{ $hostPathConfiguration.mountPath }}
{{ end }}
ports:
- name: web
containerPort: 80
{{ $cronjobSchedule := .Values.cronjobSchedule }}
lifecycle:
postStart:
exec:
command:
- /bin/sh
- -c
- |
./init_scripts/.default_crawler.sh /app/diskover/diskover.py /data;
{{ range $index, $hostPathConfiguration := .Values.extraDataVolumeMounts }}
./init_scripts/.default_crawler.sh /app/diskover/diskover.py {{ $hostPathConfiguration.mountPath }};
{{ end }}
{{ range $index, $hostPathConfiguration := .Values.extraDataVolumeMounts }}
echo "{{$cronjobSchedule}} python3 /app/diskover/diskover.py {{ $hostPathConfiguration.mountPath }}" >> /config/crontab;
{{ end }}
echo "{{.Values.cronjobSchedule}} python3 /app/diskover/diskover.py /data" >> /config/crontab;
crontab /config/crontab;
env:
{{ $envListDiskover := (default list .Values.environmentVariables) }}
{{ $envListDiskover = mustAppend $envListDiskover (dict "name" "PUID" "value" .Values.ownerUID) }}
{{ $envListDiskover = mustAppend $envListDiskover (dict "name" "PGID" "value" .Values.ownerGID) }}
{{ include "common.containers.environmentVariables" (dict "environmentVariables" $envListDiskover) | nindent 12 }}
{{ include "common.networking.dnsConfiguration" .Values | nindent 6 }}
volumes: {{ include "common.storage.configureAppVolumes" .Values | nindent 8 }}
{{ range $index, $hostPathConfiguration := .Values.extraAppVolumeMounts }}
- name: extrappvolume-{{ $index }}
hostPath:
path: {{ $hostPathConfiguration.hostPath }}
{{ end }}
{{ range $index, $hostPathConfiguration := .Values.extraDataVolumeMounts }}
- name: extradatavolume-{{ $index }}
hostPath:
path: {{ $hostPathConfiguration.hostPath }}
{{ end }}
- name: diskover-initial-scripts
configMap:
defaultMode: 0700
name: "diskover-initial-scripts"

View File

@@ -1,9 +0,0 @@
apiVersion: v1
kind: Secret
metadata:
name: diskover-credentials
labels: {{ include "common.labels" . | nindent 4 }}
type: Opaque
data:
username: {{ .Values.diskoverCredentials.username | b64enc | quote }}
password: {{ .Values.diskoverCredentials.password | b64enc | quote }}

View File

@@ -1,20 +0,0 @@
{{ $values := (. | mustDeepCopy) }}
{{ $_ := set $values "common" (dict "nameSuffix" "elasticsearch") }}
{{ 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 }}
{{ include "common.containers.imageConfig" .Values.elasticsearch.image | nindent 10 }}
volumeMounts: {{ include "common.storage.configureAppVolumeMountsInContainer" (dict "appVolumeMounts" .Values.elasticSearchAppVolumeMounts ) | nindent 12 }}
ports:
- name: es-port
containerPort: 9200
env:
{{ $envList := (default list .Values.environmentVariables) }}
{{ $envList = mustAppend $envList (dict "name" "discovery.type" "value" "single-node") }}
{{ include "common.containers.environmentVariables" (dict "environmentVariables" $envList) | nindent 12 }}
{{ include "common.networking.dnsConfiguration" .Values | nindent 6 }}
volumes: {{ include "common.storage.configureAppVolumes" (dict "appVolumeMounts" .Values.elasticSearchAppVolumeMounts "emptyDirVolumes" .Values.emptyDirVolumes "ixVolumes" .Values.ixVolumes) | nindent 8 }}

View File

@@ -1,6 +0,0 @@
{{ $ports := list }}
{{ $ports = mustAppend $ports (dict "name" "es-port" "port" 9200 "targetPort" 9200) }}
{{ $values := (. | mustDeepCopy) }}
{{ $_ := set $values "common" (dict "nameSuffix" "elasticsearch") }}
{{ $_1 := set $values "commonService" (dict "type" "ClusterIP" "ports" $ports ) }}
{{ include "common.classes.service" $values }}

View File

@@ -1,9 +0,0 @@
apiVersion: v1
kind: Secret
metadata:
name: elastic-search-credentials
labels: {{ include "common.labels" . | nindent 4 }}
type: Opaque
data:
es-username: {{ "elastic" | b64enc | quote }}
es-password: {{ "changeme" | b64enc | quote }}

View File

@@ -1,270 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: "diskover-initial-scripts"
annotations:
rollme: {{ randAlphaNum 5 | quote }}
data:
wait_for_elastic_search.py: |-
# This Script Wait for elastic search to setup completely
import requests
import os
import time
timeout = 100
while True:
try:
if timeout < 0:
print("timeout")
raise requests.exceptions.ConnectTimeout("Elasticsearch is not responding")
timeout -= 1
response = requests.get(f"http://{os.environ['ES_HOST']}:{os.environ['ES_PORT']}")
if response.status_code == 200:
break
except requests.exceptions.ConnectTimeout as e:
print(e)
break
except requests.exceptions.ConnectionError:
print("Trying to connect to elastic search")
time.sleep(3)
.default_crawler.sh: |-
#!/bin/sh
while :
do
# this condition wait for the script to copy into the container .
if test -f "$1"; then
# Empty folders don't generate indices . if folder is empty a default file is generated
if ! [ "$(ls -A $2)" ]; then
echo "Dummy file created as empty dirs are rejected" > $2/diskover_test.txt;
fi
python3 $1 $2/;
break;
fi
sleep 5
done
init_config.py: |-
import os
Config = f"""<?php
namespace diskover;
class Constants {{`{{
const TIMEZONE = '{os.environ['TZ']}';
const ES_HOST = '{os.environ['ES_HOST']}';
const ES_PORT = {os.environ['ES_PORT']};
const ES_USER = '{os.environ['ES_USER']}';
const ES_PASS = '{os.environ['ES_PASS']}';
// if your Elasticsearch cluster uses HTTP TLS/SSL, set ES_HTTPS to TRUE
// override with env var ES_HTTPS
const ES_HTTPS = FALSE;
// login auth for diskover-web
const LOGIN_REQUIRED = TRUE;
// default username and password to login
// the password is no longer used after first login, a hashed password gets stored in separate sqlite db
const USER = '{os.environ['DS_USER']}';
const PASS = '{os.environ['DS_PASS']}';
// default results per search page
const SEARCH_RESULTS = 50;
// default size field (size, size_du) to use for sizes on file tree and charts
const SIZE_FIELD = 'size';
// default file types, used by quick search (file type) and dashboard file type usage chart
// additional extensions can be added/removed from each file types list
const FILE_TYPES = [
'docs' => ['doc', 'docx', 'odt', 'pdf', 'tex', 'wpd', 'wks', 'txt', 'rtf', 'key', 'odp', 'pps', 'ppt', 'pptx', 'ods', 'xls', 'xlsm', 'xlsx'],
'images' => ['ai', 'bmp', 'gif', 'ico', 'jpeg', 'jpg', 'png', 'ps', 'psd', 'psp', 'svg', 'tif', 'tiff', 'exr', 'tga'],
'video' => ['3g2', '3gp', 'avi', 'flv', 'h264', 'm4v', 'mkv', 'qt', 'mov', 'mp4', 'mpg', 'mpeg', 'rm', 'swf', 'vob', 'wmv', 'ogg', 'ogv', 'webm'],
'audio' => ['au', 'aif', 'aiff', 'cda', 'mid', 'midi', 'mp3', 'm4a', 'mpa', 'ogg', 'wav', 'wma', 'wpl'],
'apps' => ['apk', 'exe', 'bat', 'bin', 'cgi', 'pl', 'gadget', 'com', 'jar', 'msi', 'py', 'wsf'],
'programming' => ['c', 'cgi', 'pl', 'class', 'cpp', 'cs', 'h', 'java', 'php', 'py', 'sh', 'swift', 'vb'],
'internet' => ['asp', 'aspx', 'cer', 'cfm', 'cgi', 'pl', 'css', 'htm', 'html', 'js', 'jsp', 'part', 'php', 'py', 'rss', 'xhtml'],
'system' => ['bak', 'cab', 'cfg', 'cpl', 'cur', 'dll', 'dmp', 'drv', 'icns', 'ico', 'ini', 'lnk', 'msi', 'sys', 'tmp', 'vdi', 'raw'],
'data' => ['csv', 'dat', 'db', 'dbf', 'log', 'mdb', 'sav', 'sql', 'tar', 'xml'],
'disc' => ['bin', 'dmg', 'iso', 'toast', 'vcd', 'img'],
'compressed' => ['7z', 'arj', 'deb', 'pkg', 'rar', 'rpm', 'tar', 'gz', 'z', 'zip'],
'trash' => ['old', 'trash', 'tmp', 'temp', 'junk', 'recycle', 'delete', 'deleteme', 'clean', 'remove']
];
// extra fields for search results and view file/dir info pages
// key is description for field and value is ES field name
// Example:
//const EXTRA_FIELDS = [
// 'Date Changed' => 'ctime'
//];
const EXTRA_FIELDS = [];
// Maximum number of indices to load by default, indices are loaded in order by creation date
// setting this too high can cause slow logins and other timeout issues
// This setting can bo overridden on indices page per user and stored in maxindex cookie
// If MAX_INDEX is set higher than maxindex browser cookie, the cookie will be set to this value
const MAX_INDEX = 250;
// time in seconds for index info to be cached, clicking reload indices forces update
const INDEXINFO_CACHETIME = 600;
// time in seconds to check Elasticsearch for new index info
const NEWINDEX_CHECKTIME = 10;
// sqlite database file path
const DATABASE = '../diskoverdb.sqlite3';
}}`}}
"""
os.makedirs(os.environ['DEST'], exist_ok=True)
path = os.path.join(os.environ['DEST'], os.environ['FILE'])
with open(path, 'w') as w:
w.write(Config)
initial_es_config.py: |-
import os
Config = f"""# diskover default/sample config file
#
# default search paths for config
# macOS: ~/.config/diskover and ~/Library/Application Support/diskover
# Other Unix: ~/.config/diskover and /etc/diskover
# Windows: %APPDATA%\diskover where the APPDATA environment variable falls back to %HOME%\AppData\Roaming if undefined
#
appName: diskover
#logLevel: WARN
#logLevel: DEBUG
logLevel: INFO
logToFile: False
#logToFile: True
logDirectory: /tmp/
diskover:
# max number of crawl threads
# a thread is created up to maxthreads for each directory at level 1 of tree dir arg
# set to a number or leave blank to auto set based on number of cpus
#maxthreads: 20
maxthreads:
# block size used for du size
blocksize: 512
excludes:
# directory names and absolute paths you want to exclude from crawl
# directory excludes uses python re.search for string search (regex)
# directory excludes are case-sensitive
# Examples: .* or .backup or .backup* or /dir/dirname
# to exclude none use empty list []
dirs: [".*", ".snapshot", ".Snapshot", "~snapshot", "~Snapshot", ".zfs"]
#dirs: []
# files you want to exclude from crawl
# can include wildcards (.*, *.doc or NULLEXT for files with no extension)
# file names are case-sensitive, extensions are not
files: [".*", "Thumbs.db", ".DS_Store", "._.DS_Store", ".localized", "desktop.ini"]
#files: []
# exclude empty 0 byte files, set to True to exclude empty files or False to not exclude
emptyfiles: True
# exclude empty dirs, set to True to exclude empty dirs or False to not exclude
emptydirs: True
# exclude files smaller than min size in bytes
minfilesize: 1
#minfilesize: 512
# exclude files modified less than x days ago
minmtime: 0
#minmtime: 30
# exclude files modified more than x days ago
maxmtime: 36500
# exclude files changed less than x days ago
minctime: 0
# exclude files changed more than x days ago
maxctime: 36500
# exclude files accessed less than x days ago
minatime: 0
# exclude files accessed more than x days ago
maxatime: 36500
includes:
# directory names and absolute paths you want to include (whitelist), case-sensitive,
# to include none use empty list []
#dirs: [".recycle"]
dirs: []
# files you want to include (whitelist), case-sensitive
files: []
ownersgroups:
# control how owner (username) and group fields are stored for file and directory docs
# store uid and gid's instead of trying to get owner and group names
uidgidonly: False
# owner/group names contain domain name set to True
domain: False
# character separator used on cifs/nfs mounts to separte user/group and domain name, usually \ or @
domainsep: \
# if domain name comes first before character separator, set this to True, otherwise False
domainfirst: True
# when indexing owner and group fields, keep the domain name
keepdomain: False
replacepaths:
# translate path names set to True to enable or False to disable.
# Set to True if crawling in Windows to replace drive letters and \ with /
replace: False
#from: /mnt/
#to: /vols/
from:
to:
plugins:
# set to True to enable all plugins or False to disable all plugins
enable: False
# list of plugins (by name) to use for directories
dirs: ['unixperms']
# list of plugins (by name) to use for files
files: ['unixperms']
other:
# restore atime/mtime for files and dirs during crawl
# set to True or False, default False (useful for cifs which does not work with noatime mount option)
# for nfs, it's preferable to use mount options ro,noatime,nodiratime
restoretimes: False
databases:
elasticsearch:
host: '{os.environ['ES_HOST']}'
port: {os.environ['ES_PORT']}
#user: elastic
#password: changeme
user: '{os.environ['ES_USER']}'
password: '{os.environ['ES_PASS']}'
# set https to True if using HTTP TLS/SSL or False if using http
# for AWS ES, you will most likely want to set this to True
# override with env var ES_HTTPS
https: False
# compress http data
# for AWS ES, you will most likely want to set this to True
httpcompress: False
# timeout for connection to ES (default is 10)
timeout: 30
# number of connections kept open to ES when crawling (default is 10)
maxsize: 20
# max retries for ES operations (default is 0)
maxretries: 10
# wait for at least yellow status before bulk uploading (default is False), set to True if you want to wait
wait: False
# chunk size for ES bulk operations (default is 500)
chunksize: 1000
# the below settings are to optimize ES for crawling
# index refresh interval (default is 1s), set to -1 to disable refresh during crawl (fastest performance but no index searches), after crawl is set back to 1s
indexrefresh: 30s
# transaction log flush threshold size (default 512mb)
translogsize: 1gb
# transaction log sync interval time (default 5s)
translogsyncint: 30s
# search scroll size (default 100 docs)
scrollsize: 1000
"""
os.makedirs(os.environ['DEST'], exist_ok=True)
path = os.path.join(os.environ['DEST'], os.environ['FILE'])
with open(path, 'w') as w:
w.write(Config)

View File

@@ -1,31 +0,0 @@
apiVersion: batch/v1
kind: Job
metadata:
name: "{{ template "common.names.fullname" . }}-preinstall-job"
labels:
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
app.kubernetes.io/instance: {{ .Release.Name | quote }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
helm.sh/chart: {{ template "common.names.chart" . }}
annotations:
"helm.sh/hook": pre-install
"helm.sh/hook-delete-policy": hook-succeeded
spec:
template:
metadata:
name: "{{ template "common.names.fullname" . }}-preinstall-hook"
labels:
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
app.kubernetes.io/instance: {{ .Release.Name | quote }}
helm.sh/chart: {{ template "common.names.chart" . }}
spec:
restartPolicy: Never
containers:
- name: pre-install-job
image: "alpine:latest"
command: ["/bin/sh", "-c"]
args:
- {{ include "add.user" . }}
{{ include "change.user.permissions" . }}
volumeMounts: {{ include "common.storage.configureAppVolumeMountsInContainer" (dict "appVolumeMounts" .Values.elasticSearchAppVolumeMounts ) | nindent 12 }}
volumes: {{ include "common.storage.configureAppVolumes" (dict "appVolumeMounts" .Values.elasticSearchAppVolumeMounts "emptyDirVolumes" .Values.emptyDirVolumes "ixVolumes" .Values.ixVolumes) | nindent 8 }}

View File

@@ -1,10 +0,0 @@
{{ $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" "web" "port" .Values.web_port "nodePort" .Values.web_port "targetPort" 80) }}
{{ $params := . }}
{{ $_ := set $params "commonService" (dict "type" "NodePort" "ports" $ports ) }}
{{ $_1 := set .Values "extraSelectorLabels" $selectors }}
{{ include "common.classes.service" $params }}

View File

@@ -1,21 +0,0 @@
{{- $serviceName := (include "common.names.fullname" .) -}}
apiVersion: v1
kind: Pod
metadata:
name: {{ .Release.Name }}-test-pod
labels:
app: {{ .Release.Name }}
release: {{ .Release.Name }}
annotations:
"helm.sh/hook": test
spec:
containers:
- name: test-curl
image: alpine/curl
imagePullPolicy: "IfNotPresent"
command:
- /bin/sh
- -ec
- |
curl --connect-timeout 5 --max-time 10 --retry 5 --retry-delay 15 --retry-max-time 90 --retry-all-errors -ksf http://{{ $serviceName }}:{{.Values.web_port}}/
restartPolicy: Never

View File

@@ -1,50 +0,0 @@
image:
pullPolicy: IfNotPresent
repository: linuxserver/diskover
tag: "2.0.1"
elasticsearch:
image:
pullPolicy: IfNotPresent
repository: docker.elastic.co/elasticsearch/elasticsearch
tag: "7.5.2"
python:
image:
pullPolicy: IfNotPresent
repository: python
tag: "3.10"
environmentVariables: []
extraAppVolumeMounts: []
extraDataVolumeMounts: []
web_port: 32000
dnsConfig:
options: []
emptyDirVolumes: true
appVolumeMounts:
config:
emptyDir: true
mountPath: /config
data:
emptyDir: true
mountPath: /data
elasticSearchAppVolumeMounts:
esdata:
emptyDir: true
mountPath: /usr/share/elasticsearch/data
ownerUID: 568
ownerGID: 568
username: "admin"
password: "admin"
host: "192.169.0.156"
hostNetwork: false
timezone: "America/Los_Angeles"
diskoverCredentials:
username: admin
password: admin
cronjobSchedule: "0 3 * * *"
es_user: elasticsearch

View File

@@ -1,5 +0,0 @@
icon_url: http://www.diskoverdata.com/wp-content/uploads/2019/09/diskover.png
categories:
- storage
- monitoring
- management

View File

@@ -1,24 +0,0 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
# OWNERS file for Kubernetes
OWNERS

View File

@@ -1,6 +0,0 @@
dependencies:
- name: common
repository: file://../../../library/common/2207.0.0
version: 2207.0.0
digest: sha256:f17f3d458ca0210a52e39da0dce35034e900b36f2040d4b19bed46a7aae91506
generated: "2022-07-28T22:31:02.894743529+05:00"

View File

@@ -1,16 +0,0 @@
apiVersion: v2
appVersion: 4.7.11.0
dependencies:
- name: common
repository: file://../../../library/common/2207.0.0
version: 2207.0.0
description: Emby Server
home: https://emby.media/
icon: https://images-na.ssl-images-amazon.com/images/I/41NwssJC1iL.png
keywords:
- emby
- media
name: emby
sources:
- https://hub.docker.com/r/emby/embyserver
version: 1.0.16

View File

@@ -1,5 +0,0 @@
# Emby Server helm chart
## Configuration
Please refer to questions.yaml for a detailed overview on supported configurable items.

View File

@@ -1,3 +0,0 @@
# Emby Server
Emby Server is a personal media server with apps on just about every device

View File

@@ -1,4 +0,0 @@
image:
pullPolicy: IfNotPresent
repository: emby/embyserver
tag: 4.7.11.0

View File

@@ -1,194 +0,0 @@
groups:
- name: "Emby Server Configuration"
description: "Configure Emby Server"
- name: "Networking"
description: "Configure networking for container"
- name: "Storage"
description: "Persist and share data that is separate from the lifecycle of the container"
- 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"
- name: "Resource Limits"
description: "Set CPU/memory limits for Kubernetes Pod"
portals:
web_portal:
protocols:
- "http"
host:
- "$node_ip"
ports:
- "$kubernetes-resource_configmap_portal_port"
path: "/web"
questions:
- variable: hostNetwork
label: "Enable Host Network"
group: "Networking"
schema:
type: boolean
default: false
- variable: environmentVariables
label: "Environment Variables for Emby Server"
group: "Emby Server 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
# Update strategy
- variable: updateStrategy
description: "Upgrade Policy"
label: "Update Strategy"
group: "Scaling/Upgrade Policy"
schema:
type: string
default: "Recreate"
enum:
- value: "RollingUpdate"
description: "Create new pods and then kill old ones"
- value: "Recreate"
description: "Kill existing pods before creating new ones"
# Port configuration
- variable: embyServerHttp
label: "Configure Emby Server HTTP Service"
group: "Networking"
schema:
show_if: [[ "hostNetwork", "!=", true]]
type: dict
attrs:
- variable: port
label: "Port to expose for Emby Server UI"
schema:
type: int
min: 9000
max: 65535
default: 9096
# Specify GPU configuration
- variable: gpuConfiguration
label: "GPU Configuration"
group: "Resource Reservation"
schema:
type: dict
$ref:
- "definitions/gpuConfiguration"
attrs: []
- variable: appVolumeMounts
label: "Emby Server Storage"
group: "Storage"
schema:
type: dict
attrs:
- variable: config
label: "Config Volume"
schema:
type: dict
attrs:
- variable: datasetName
label: "Emby Server Config Volume Name"
schema:
type: string
$ref:
- "normalize/ixVolume"
show_if: [["hostPathEnabled", "=", false]]
default: "ix-emby_config"
editable: false
hidden: true
- variable: mountPath
label: "Emby Server Config Mount Path"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
editable: false
hidden: true
default: "/config"
- variable: hostPathEnabled
label: "Enable Host Path for Emby Server Config Volume"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path for Emby Server Config Volume"
schema:
type: hostpath
required: true
- variable: extraAppVolumeMounts
label: "Emby Server Extra Host Path Volumes"
group: "Storage"
schema:
type: list
items:
- variable: extraAppVolume
label: "Emby Server Host Path Volume"
description: "Add an extra host path volume for emby application"
schema:
type: dict
attrs:
- variable: mountPath
label: "Mount Path in Pod"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
required: true
- variable: hostPath
label: "Host Path"
description: "Host path"
schema:
type: hostpath
required: true
- variable: readOnly
label: "Read Only"
description: "Mount hostpath in read-only mode"
schema:
type: boolean
default: false
- variable: enableResourceLimits
label: "Enable Pod resource limits"
group: "Resource Limits"
schema:
type: boolean
default: false
- variable: cpuLimit
label: "CPU Limit"
description: "CPU resource limit allow plain integer values with suffix m(milli) e.g 1000m, 100."
group: "Resource Limits"
schema:
type: string
show_if: [["enableResourceLimits", "=", true]]
valid_chars: "^\\d+(?:\\.\\d+(?!.*m$)|m?$)"
default: "4000m"
- variable: memLimit
label: "Memory Limit"
group: "Resource Limits"
description: "Memory limits is specified by number of bytes. Followed by quantity suffix like E,P,T,G,M,k and Ei,Pi,Ti,Mi,Gi,Ki can also be used. e.g 129e6, 129M, 128974848000m, 123Mi"
schema:
type: string
show_if: [["enableResourceLimits", "=", true]]
valid_chars: "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$"
default: "8Gi"

View File

@@ -1,6 +0,0 @@
dependencies:
- name: common
repository: file://../../../library/common/2207.0.0
version: 2207.0.0
digest: sha256:47115d9b91afe42c8537dcf0fd8224f2f7d1c775f9ff860efa68a6b57d17d1c0
generated: "2021-12-06T21:24:36.674776+05:00"

View File

@@ -1,7 +0,0 @@
1. Get the application URL by running these commands:
{{- if .Values.hostNetwork }}
http://$node_ip:8096/
{{ else }}
http://$node_ip:{{ .Values.embyServerHttp.port }}/
{{ end }}

View File

@@ -1,71 +0,0 @@
{{ include "common.storage.hostPathValidate" .Values }}
{{ include "common.deployment.common_config" . | nindent 0 }}
spec: {{ include "common.deployment.common_spec" . | nindent 2 }}
template: {{ include "common.deployment.pod.metadata" . | nindent 4 }}
spec:
{{- if .Values.hostNetwork }}
hostNetwork: {{ .Values.hostNetwork }}
dnsPolicy: ClusterFirstWithHostNet
{{- end }}
hostname: {{ template "common.names.fullname" . }}
containers:
- name: {{ .Chart.Name }}
{{ include "common.resources.limitation" . | nindent 10 }}
{{ include "common.containers.imageConfig" .Values.image | nindent 10 }}
volumeMounts: {{ include "common.storage.configureAppVolumeMountsInContainer" .Values | nindent 12 }}
{{ range $index, $hostPathConfiguration := .Values.extraAppVolumeMounts }}
- name: extrappvolume-{{ $index }}
mountPath: {{ $hostPathConfiguration.mountPath }}
{{ if $hostPathConfiguration.readOnly }}
readOnly: {{ $hostPathConfiguration.readOnly }}
{{ end }}
{{ end }}
ports:
- name: emby
protocol: TCP
containerPort: 8096
- name: emby-dlna
protocol: UDP
containerPort: 1900
- name: emby-lnd
protocol: UDP
containerPort: 7359
env:
- name: KUBE_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
{{ $envList := (default list .Values.environmentVariables) }}
{{ if and .Values.gpuConfiguration (hasKey .Values.gpuConfiguration "nvidia.com/gpu") (gt (get .Values.gpuConfiguration "nvidia.com/gpu" | toDecimal) 0) }}
{{ $envList = mustAppend $envList (dict "name" "NVIDIA_DRIVER_CAPABILITIES" "value" "all") }}
{{ end }}
{{ include "common.containers.environmentVariables" (dict "environmentVariables" $envList) | nindent 12 }}
readinessProbe:
httpGet:
path: /emby/System/Ping
port: 8096
failureThreshold: 5
periodSeconds: 15
livenessProbe:
httpGet:
path: /emby/System/Ping
port: 8096
failureThreshold: 5
periodSeconds: 15
startupProbe:
httpGet:
path: /emby/System/Ping
port: 8096
initialDelaySeconds: 5
failureThreshold: 40
periodSeconds: 15
volumes: {{ include "common.storage.configureAppVolumes" .Values | nindent 8 }}
{{ range $index, $hostPathConfiguration := .Values.extraAppVolumeMounts }}
- name: extrappvolume-{{ $index }}
hostPath:
path: {{ $hostPathConfiguration.hostPath }}
{{ end }}

View File

@@ -1,10 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: portal
data:
{{- if .Values.hostNetwork }}
port: "8096"
{{- else }}
port: {{ .Values.embyServerHttp.port | quote }}
{{- end }}

View File

@@ -1,17 +0,0 @@
{{ $svc := .Values.embyServerHttp }}
{{ $ports := list }}
{{ if .Values.hostNetwork }}
{{ $ports = mustAppend $ports (dict "name" "http" "port" 8096 "targetPort" 8096) }}
{{ else }}
{{ $ports = mustAppend $ports (dict "name" "http" "port" $svc.port "nodePort" $svc.port "targetPort" 8096) }}
{{ end }}
{{ $params := . }}
{{ $_ := set $params "commonService" (dict "ports" $ports ) }}
{{ if .Values.hostNetwork }}
{{ $_ := set $params.commonService "nameSuffix" "tcp-cluster-ip" }}
{{ $_1 := set $params.commonService "type" "ClusterIP" }}
{{ else }}
{{ $_ := set $params.commonService "nameSuffix" "tcp" }}
{{ $_1 := set $params.commonService "type" "NodePort" }}
{{ end }}
{{ include "common.classes.service" $params }}

View File

@@ -1,6 +0,0 @@
{{ $ports := list }}
{{ $ports = mustAppend $ports (dict "name" "emby-dlna" "port" 1900 "protocol" "UDP" "targetPort" "emby-dlna") }}
{{ $ports = mustAppend $ports (dict "name" "emby-lnd" "port" 7359 "protocol" "UDP" "targetPort" "emby-lnd") }}
{{ $params := . }}
{{ $_ := set $params "commonService" (dict "type" "ClusterIP" "ports" $ports "nameSuffix" "udp" ) }}
{{ include "common.classes.service" $params }}

View File

@@ -1,21 +0,0 @@
{{- $serviceName := (include "common.names.fullname" .) -}}
apiVersion: v1
kind: Pod
metadata:
name: "{{ .Release.Name }}-emby-test"
labels:
app: {{ .Release.Name }}
release: {{ .Release.Name }}
annotations:
"helm.sh/hook": test
spec:
containers:
- name: test-curl
image: alpine/curl
imagePullPolicy: "IfNotPresent"
command:
- /bin/sh
- -ec
- |
curl --connect-timeout 5 --max-time 10 --retry 5 --retry-delay 15 --retry-max-time 90 --retry-all-errors -ksf http://{{ $serviceName }}-tcp:32496/emby/System/Ping
restartPolicy: Never

View File

@@ -1,19 +0,0 @@
appVolumeMounts:
config:
emptyDir: true
mountPath: /config
embyServerHttp:
port: 32496
emptyDirVolumes: true
environmentVariables: []
extraAppVolumeMounts:
- hostPath: /mnt/extras/something
mountPath: /mnt/extras
readOnly: true
gpuConfiguration: {}
hostNetwork: false
image:
pullPolicy: IfNotPresent
repository: emby/embyserver
tag: 4.7.11.0
updateStrategy: Recreate

View File

@@ -1,3 +0,0 @@
categories:
- entertainment
icon_url: https://images-na.ssl-images-amazon.com/images/I/41NwssJC1iL.png

View File

@@ -1 +0,0 @@
{"filename": "ix_values.yaml", "keys": ["image"], "test_filename": "test_values.yaml"}

View File

@@ -1,33 +0,0 @@
#!/usr/bin/python3
import json
import re
import sys
from catalog_update.upgrade_strategy import semantic_versioning
RE_STABLE_VERSION = re.compile(r'\d+.\d+.\d+.\d+')
def newer_mapping(image_tags):
key = list(image_tags.keys())[0]
version = semantic_versioning(sorted(
[tag for tag in image_tags[key] if RE_STABLE_VERSION.fullmatch(tag) and tag.split('.')[2] != '0'],
reverse=True
))
if not version:
return {}
return {
'tags': {key: version},
'app_version': version,
}
if __name__ == '__main__':
try:
versions_json = json.loads(sys.stdin.read())
except ValueError:
raise ValueError('Invalid json specified')
print(json.dumps(newer_mapping(versions_json)))

View File

@@ -1,2 +0,0 @@
# Patterns to ignore when building packages.
*.png

View File

@@ -1,6 +0,0 @@
dependencies:
- name: common
repository: file://../../../library/common/2207.0.0
version: 2207.0.0
digest: sha256:f17f3d458ca0210a52e39da0dce35034e900b36f2040d4b19bed46a7aae91506
generated: "2022-07-25T00:20:48.151643214+05:00"

View File

@@ -1,15 +0,0 @@
apiVersion: v2
appVersion: 2023.3.5
dependencies:
- name: common
repository: file://../../../library/common/2207.0.0
version: 2207.0.0
description: home-assistant App for TrueNAS SCALE
home: https://github.com/home-assistant/home-assistant
icon: https://avatars.githubusercontent.com/u/13844975?s=200&v=4
keywords:
- home-automation
name: home-assistant
sources:
- https://github.com/home-assistant/home-assistant
version: 1.0.71

View File

@@ -1,3 +0,0 @@
# Introduction
home assistant App for TrueNAS SCALE

View File

@@ -1 +0,0 @@
home-assistant App for TrueNAS SCALE

View File

@@ -1,4 +0,0 @@
image:
pullPolicy: IfNotPresent
repository: homeassistant/home-assistant
tag: 2023.3.5

View File

@@ -1,292 +0,0 @@
groups:
- name: "Configuration"
description: "Home Assistant application configuration"
- name: "Storage"
description: "Configure storage for homeassistant"
- name: "Networking"
description: "Networking Configuration for homeassistant"
- name: "Advanced DNS Settings"
description: "Configure DNS settings"
- name: "Resource Limits"
description: "Set CPU/memory limits for Kubernetes Pod"
portals:
web_portal:
protocols:
- "http"
host:
- "$node_ip"
ports:
- "$variable-web_port"
path: "/"
questions:
- variable: web_port
label: "Web Port for homeassistant"
group: Networking
schema:
type: int
min: 8000
max: 65535
default: 20810
required: true
- variable: timezone
label: "Configure timezone"
group: "Configuration"
description: "Configure timezone for Home Assistant"
schema:
type: string
$ref:
- "definitions/timezone"
- variable: hostNetwork
label: "Enable Host Network"
group: "Networking"
schema:
type: boolean
default: false
- variable: dnsConfig
label: "DNS Configuration"
group: "Advanced DNS Settings"
schema:
type: dict
attrs:
- variable: options
label: "DNS Options"
schema:
type: list
items:
- variable: optionsEntry
label: "Option Entry Configuration"
schema:
type: dict
attrs:
- variable: name
label: "Option Name"
schema:
type: string
required: true
- variable: value
label: "Option Value"
schema:
type: string
required: true
- variable: ownerUID
label: "Storage User ID"
description: "User ID of the storage volume being used (application will chown the storage volume path with specified UID)"
group: Configuration
schema:
type: int
default: 568
min: 1
max: 65535
- variable: ownerGID
label: "Storage Group ID"
description: "Group ID of the storage volume being used (application will chown the storage volume path with specified GID)"
group: Configuration
schema:
type: int
default: 568
min: 1
max: 65535
- variable: environmentVariables
label: "Home Assistant environment"
group: "Configuration"
schema:
type: list
default: []
items:
- variable: environmentVariable
label: "Environment Variable"
schema:
type: dict
attrs:
- variable: name
label: "Name"
schema:
type: string
- variable: value
label: "Value"
schema:
type: string
- variable: appVolumeMounts
label: "Home Assistant Storage"
group: "Storage"
schema:
type: dict
attrs:
- variable: config
label: "Storage Volume for Configuration"
schema:
type: dict
attrs:
- variable: datasetName
label: "Configuration Storage Volume Dataset Name"
schema:
type: string
hidden: true
$ref:
- "normalize/ixVolume"
show_if: [["hostPathEnabled", "=", false]]
default: "ix-config"
editable: false
- variable: mountPath
label: "Configuration Storage Mount Path"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
hidden: true
editable: true
default: "/config"
- variable: hostPathEnabled
label: "Enable Custom Host Path for Home Assistant Configuration Storage Volume"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path for Home Assistant Configuration Storage Volume"
schema:
type: hostpath
required: true
- variable: media
label: "Storage Volume for Media"
schema:
type: dict
attrs:
- variable: datasetName
label: "Media Storage Volume Dataset Name"
schema:
type: string
hidden: true
$ref:
- "normalize/ixVolume"
show_if: [["hostPathEnabled", "=", false]]
default: "ix-media"
editable: false
- variable: mountPath
label: "Media Storage Mount Path"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
hidden: true
editable: true
default: "/media"
- variable: hostPathEnabled
label: "Enable Custom Host Path for Home Assistant Media Storage Volume"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path for Home Assistant Media Storage Volume"
schema:
type: hostpath
required: true
- variable: postgresAppVolumeMounts
label: "Postgres Storage"
group: "Storage"
schema:
type: dict
hidden: true
attrs:
- variable: postgres-data
label: "Postgres Data Volume"
schema:
type: dict
attrs:
- variable: datasetName
label: "Postgres Data Volume Name"
schema:
type: string
$ref:
- "normalize/ixVolume"
default: "ix-postgres_data"
editable: false
- variable: mountPath
label: "Postgresql Data Mount Path"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
editable: false
default: "/var/lib/postgresql/data"
- variable: postgres-backup
label: "Postgres Backup Volume"
schema:
type: dict
attrs:
- variable: datasetName
label: "Postgres Backup Volume Name"
schema:
type: string
$ref:
- "normalize/ixVolume"
default: "ix-postgres_backups"
editable: false
- variable: mountPath
label: "Postgresql Backup Mount Path"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
editable: false
default: "/postgres_backups"
- variable: extraAppVolumeMounts
label: "Extra Host Path Volumes"
group: "Storage"
schema:
type: list
items:
- variable: extraAppVolume
label: "Host Path Volume"
description: "Add an extra host path volume for Home Assistant application"
schema:
type: dict
attrs:
- variable: mountPath
label: "Mount Path in Pod"
description: "Path where the volume will be mounted inside the pod"
schema:
type: path
required: true
- variable: hostPath
label: "Host Path"
description: "Host path"
schema:
type: hostpath
required: true
- variable: enableResourceLimits
label: "Enable Pod resource limits"
group: "Resource Limits"
schema:
type: boolean
default: false
- variable: cpuLimit
label: "CPU Limit"
description: "CPU resource limit allow plain integer values with suffix m(milli) e.g 1000m, 100."
group: "Resource Limits"
schema:
type: string
show_if: [["enableResourceLimits", "=", true]]
valid_chars: "^\\d+(?:\\.\\d+(?!.*m$)|m?$)"
default: "4000m"
- variable: memLimit
label: "Memory Limit"
group: "Resource Limits"
description: "Memory limits is specified by number of bytes. Followed by quantity suffix like E,P,T,G,M,k and Ei,Pi,Ti,Mi,Gi,Ki can also be used. e.g 129e6, 129M, 128974848000m, 123Mi"
schema:
type: string
show_if: [["enableResourceLimits", "=", true]]
valid_chars: "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$"
default: "8Gi"

View File

@@ -1,49 +0,0 @@
{{/*
Get Home assistance Postgres Database Name
*/}}
{{- define "postgres.DatabaseName" -}}
{{- print "homeassistance" -}}
{{- end -}}
{{- define "postgres.imageName" -}}
{{- print "postgres:13.1" -}}
{{- end -}}
{{/*
Retrieve postgres backup name
This will return a unique name based on revision and chart numbers specified.
*/}}
{{- define "postgres.backupName" -}}
{{- $upgradeDict := .Values.ixChartContext.upgradeMetadata -}}
{{- printf "postgres-backup-from-%s-to-%s-revision-%d" $upgradeDict.oldChartVersion $upgradeDict.newChartVersion (int64 $upgradeDict.preUpgradeRevision) -}}
{{- end }}
{{/*
Retrieve postgres credentials for environment variables configuration
*/}}
{{- define "postgres.envVariableConfiguration" -}}
{{ $envList := list }}
{{ $envList = mustAppend $envList (dict "name" "POSTGRES_USER" "valueFromSecret" true "secretName" "db-details" "secretKey" "db-user") }}
{{ $envList = mustAppend $envList (dict "name" "POSTGRES_PASSWORD" "valueFromSecret" true "secretName" "db-details" "secretKey" "db-password") }}
{{ include "common.containers.environmentVariables" (dict "environmentVariables" $envList) }}
{{- end -}}
{{/*
Retrieve postgres volume configuration
*/}}
{{- define "postgres.volumeConfiguration" -}}
{{ include "common.storage.configureAppVolumes" (dict "appVolumeMounts" .Values.postgresAppVolumeMounts "emptyDirVolumes" .Values.emptyDirVolumes "ixVolumes" .Values.ixVolumes) | nindent 0 }}
{{- end -}}
{{/*
Retrieve postgres volume mounts configuration
*/}}
{{- define "postgres.volumeMountsConfiguration" -}}
{{ include "common.storage.configureAppVolumeMountsInContainer" (dict "appVolumeMounts" .Values.postgresAppVolumeMounts ) | nindent 0 }}
{{- end -}}

View File

@@ -1,15 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: "postgres-backup-hook-config-map"
annotations:
rollme: {{ randAlphaNum 5 | quote }}
data:
entrypoint.sh: |-
#!/bin/sh
cmd="/docker-entrypoint.sh postgres"
eval "${cmd}" & disown;
until pg_isready; do
sleep 5;
done;
pg_dump -U $POSTGRES_USER -d {{ template "postgres.DatabaseName" . }} > /postgres_backups/$BACKUP_NAME;

View File

@@ -1,38 +0,0 @@
{{- if .Values.ixChartContext.isUpgrade -}}
{{ $values := (. | mustDeepCopy) }}
{{ $_ := set $values "common" (dict "nameSuffix" "postgres") }}
apiVersion: batch/v1
kind: Job
metadata:
name: "pre-upgrade-hook"
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-hook"
spec:
restartPolicy: Never
containers:
- name: {{ .Chart.Name }}-postgres-backup
image: {{ template "postgres.imageName" . }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
env: {{ include "postgres.envVariableConfiguration" $values | nindent 10 }}
- name: BACKUP_NAME
value: {{ template "postgres.backupName" . }}
volumeMounts: {{ include "postgres.volumeMountsConfiguration" $values | nindent 10 }}
- name: backup-script-configmap
mountPath: /bin/backup_entrypoint.sh
readOnly: true
subPath: entrypoint.sh
command:
- "/bin/backup_entrypoint.sh"
volumes: {{ include "postgres.volumeConfiguration" $values | nindent 8 }}
- name: backup-script-configmap
configMap:
defaultMode: 0700
name: "postgres-backup-hook-config-map"
{{- end -}}

View File

@@ -1,88 +0,0 @@
{{ include "common.storage.hostPathValidate" .Values }}
{{ $postgres_values := (. | mustDeepCopy) }}
{{ $_ := set $postgres_values "common" (dict "nameSuffix" "postgres") }}
apiVersion: {{ template "common.capabilities.deployment.apiVersion" . }}
kind: Deployment
metadata:
name: {{ template "common.names.fullname" . }}
labels:
app: {{ template "common.names.name" . }}
chart: {{ template "common.names.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
annotations:
rollme: {{ randAlphaNum 5 | quote }}
spec:
replicas: {{ (default 1 .Values.replicas) }}
strategy:
type: "Recreate"
selector:
matchLabels:
app: {{ template "common.names.name" . }}
release: {{ .Release.Name }}
template:
metadata:
name: {{ template "common.names.fullname" . }}
labels:
app: {{ template "common.names.name" . }}
release: {{ .Release.Name }}
{{- include "common.labels.selectorLabels" . | nindent 8 }}
annotations: {{ include "common.annotations" . | nindent 8 }}
spec:
hostNetwork: {{ .Values.hostNetwork }}
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 }}
- name: init-configs
image: "alpine:latest"
imagePullPolicy: {{ .Values.image.pullPolicy }}
command:
- "sh"
- "/config/init/init.sh"
env:
{{ $envList := (default list .Values.environmentVariables) }}
{{ $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" "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) | nindent 12 }}
volumeMounts: {{ include "common.storage.configureAppVolumeMountsInContainer" .Values | nindent 12 }}
- name: initial-config-script
mountPath: /config/init
containers:
- name: {{ .Chart.Name }}
{{ include "common.resources.limitation" . | nindent 10 }}
{{ include "common.containers.imageConfig" .Values.image | nindent 10 }}
volumeMounts: {{ include "common.storage.configureAppVolumeMountsInContainer" .Values | nindent 12 }}
{{ range $index, $hostPathConfiguration := .Values.extraAppVolumeMounts }}
- name: extrappvolume-{{ $index }}
mountPath: {{ $hostPathConfiguration.mountPath }}
{{ end }}
ports:
- name: web
containerPort: 8123
env:
{{ $databaseName := (include "postgres.DatabaseName" .)}}
{{ $envList := (default list .Values.environmentVariables) }}
{{ $envList = mustAppend $envList (dict "name" "PUID" "value" .Values.ownerUID) }}
{{ $envList = mustAppend $envList (dict "name" "PGID" "value" .Values.ownerGID) }}
{{ $envList = mustAppend $envList (dict "name" "TZ" "value" .Values.timezone) }}
{{ include "common.containers.environmentVariables" (dict "environmentVariables" $envList) | nindent 12 }}
{{ include "common.networking.dnsConfiguration" .Values | nindent 6 }}
volumes: {{ include "common.storage.configureAppVolumes" .Values | nindent 8 }}
- name: initial-config-script
configMap:
defaultMode: 0700
name: "home-assistance-initial-script-configmap"
{{ range $index, $hostPathConfiguration := .Values.extraAppVolumeMounts }}
- name: extrappvolume-{{ $index }}
hostPath:
path: {{ $hostPathConfiguration.hostPath }}
{{ end }}

View File

@@ -1,40 +0,0 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: "home-assistance-initial-script-configmap"
annotations:
rollme: {{ randAlphaNum 5 | quote }}
data:
configuration.yaml.default: |-
# Configure a default setup of Home Assistant (frontend, api, etc)
default_config:
# Text to speech
tts:
- platform: google_translate
init.sh: |-
#!/bin/sh
if test -f "/config/configuration.yaml"; then
echo "configuration.yaml exists."
if grep -q recorder: "/config/configuration.yaml"; then
echo "configuration.yaml already contains recorder"
else
cat /config/init/recorder.default >> /config/configuration.yaml
echo " postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}/${POSTGRES_DB}" >> /config/configuration.yaml
fi
else
echo "configuration.yaml does NOT exist."
cp /config/init/configuration.yaml.default /config/configuration.yaml
cat /config/init/recorder.default >> /config/configuration.yaml
echo " postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}/${POSTGRES_DB}" >> /config/configuration.yaml
cat /config/init/http.default >> /config/configuration.yaml
fi
recorder.default: |-
recorder:
purge_keep_days: 30
commit_interval: 3
db_url:

View File

@@ -1,8 +0,0 @@
{{ $values := (. | mustDeepCopy) }}
{{ $_ := set $values "common" (dict "nameSuffix" "postgres") }}
apiVersion: v1
kind: ConfigMap
metadata:
name: posgress-configmap
data:
database_url: {{ template "common.names.fullname" $values }}

View File

@@ -1,24 +0,0 @@
{{ $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:
hostNetwork: {{ .Values.hostNetwork }}
containers:
- name: {{ .Chart.Name }}-postgres
image: {{ template "postgres.imageName" . }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
{{ $envList := (default list .Values.environmentVariables) }}
{{ $envList = mustAppend $envList (dict "name" "POSTGRES_DB" "value" (include "postgres.DatabaseName" .)) }}
{{ $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) | nindent 10 }}
volumeMounts: {{ include "postgres.volumeMountsConfiguration" $values | nindent 10 }}
ports:
- name: postgres-tcp
containerPort: 5432
protocol: TCP
volumes: {{ include "postgres.volumeConfiguration" $values | nindent 8 }}

View File

@@ -1,11 +0,0 @@
apiVersion: v1
kind: Secret
metadata:
name: db-details
data:
db-user: {{ "postgres" | b64enc }}
{{- if .Release.IsInstall }}
db-password: {{ randAlphaNum 15 | b64enc | quote }}
{{ else }}
db-password: {{ index (lookup "v1" "Secret" .Release.Namespace "db-details").data "db-password" }}
{{ end }}

View File

@@ -1,6 +0,0 @@
{{ $ports := list }}
{{ $ports = mustAppend $ports (dict "name" "postgres-tcp" "port" 5432 "targetPort" 5432) }}
{{ $values := (. | mustDeepCopy) }}
{{ $_ := set $values "common" (dict "nameSuffix" "postgres") }}
{{ $_1 := set $values "commonService" (dict "type" "ClusterIP" "ports" $ports ) }}
{{ include "common.classes.service" $values }}

View File

@@ -1,33 +0,0 @@
apiVersion: batch/v1
kind: Job
metadata:
name: "{{ template "common.names.fullname" . }}-preinstall-job"
labels:
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
app.kubernetes.io/instance: {{ .Release.Name | quote }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
helm.sh/chart: {{ template "common.names.chart" . }}
annotations:
"helm.sh/hook": pre-install
"helm.sh/hook-delete-policy": hook-succeeded
spec:
template:
metadata:
name: "{{ template "common.names.fullname" . }}-preinstall-hook"
labels:
app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
app.kubernetes.io/instance: {{ .Release.Name | quote }}
helm.sh/chart: {{ template "common.names.chart" . }}
spec:
restartPolicy: Never
containers:
- name: pre-install-job
image: "alpine:latest"
command:
- "chown"
- "-R"
- "{{ .Values.ownerUID }}:{{ .Values.ownerGID }}"
- "{{ .Values.appVolumeMounts.config.mountPath }}"
- "{{ .Values.appVolumeMounts.media.mountPath }}"
volumeMounts: {{ include "common.storage.configureAppVolumeMountsInContainer" .Values | nindent 12 }}
volumes: {{ include "common.storage.configureAppVolumes" .Values | nindent 8 }}

View File

@@ -1,10 +0,0 @@
{{ $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" "web" "port" .Values.web_port "nodePort" .Values.web_port "targetPort" 8123) }}
{{ $params := . }}
{{ $_ := set $params "commonService" (dict "type" "NodePort" "ports" $ports ) }}
{{ $_1 := set .Values "extraSelectorLabels" $selectors }}
{{ include "common.classes.service" $params }}

View File

@@ -1,21 +0,0 @@
{{- $serviceName := (include "common.names.fullname" .) -}}
apiVersion: v1
kind: Pod
metadata:
name: {{ .Release.Name }}-test-pod
labels:
app: {{ .Release.Name }}
release: {{ .Release.Name }}
annotations:
"helm.sh/hook": test
spec:
containers:
- name: test-curl
image: alpine/curl
imagePullPolicy: "IfNotPresent"
command:
- /bin/sh
- -ec
- |
curl --connect-timeout 5 --max-time 10 --retry 5 --retry-delay 15 --retry-max-time 90 --retry-all-errors -ksf http://{{ $serviceName }}:{{.Values.web_port}}/
restartPolicy: Never

View File

@@ -1,36 +0,0 @@
appVolumeMounts:
config:
emptyDir: true
mountPath: /config
media:
emptyDir: true
mountPath: /media
dnsConfig:
options: []
emptyDirVolumes: true
environmentVariables: []
extraAppVolumeMounts: []
hostNetwork: false
image:
pullPolicy: IfNotPresent
repository: homeassistant/home-assistant
tag: 2023.3.5
ixChartContext: {}
ownerGID: 568
ownerUID: 568
postgresAppVolumeMounts:
postgres-backup:
emptyDir: true
mountPath: /postgres_backups
postgres-data:
emptyDir: true
mountPath: /var/lib/postgresql/data
postgresql:
backupVolume:
datasetName: ix-postgres_backups
mountPath: /postgres_backups
dataVolume:
datasetName: ix-postgres_data
mountPath: /var/lib/postgresql/data
timezone: America/Los_Angeles
web_port: 32000

View File

@@ -1,3 +0,0 @@
icon_url: https://avatars.githubusercontent.com/u/13844975?s=200&v=4
categories:
- home-automation

View File

@@ -1 +0,0 @@
{"filename": "ix_values.yaml", "keys": ["image"], "test_filename": "test_values.yaml"}

View File

@@ -1,27 +0,0 @@
#!/usr/bin/python3
import json
import sys
from catalog_update.upgrade_strategy import semantic_versioning
def newer_mapping(image_tags):
key = list(image_tags.keys())[0]
tags = {t: t for t in image_tags[key]}
version = semantic_versioning(list(tags))
if not version:
return {}
return {
'tags': {key: tags[version]},
'app_version': version,
}
if __name__ == '__main__':
try:
versions_json = json.loads(sys.stdin.read())
except ValueError:
raise ValueError('Invalid json specified')
print(json.dumps(newer_mapping(versions_json)))

View File

@@ -1,23 +0,0 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
# OWNERS file for Kubernetes
OWNERS

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