Compare commits
7 Commits
paperless-
...
dashmachin
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a5cd196a7f | ||
|
|
94bf122994 | ||
|
|
97de7b430d | ||
|
|
3bd8295151 | ||
|
|
38efefa16b | ||
|
|
c522152e20 | ||
|
|
beee21811a |
@@ -4,6 +4,25 @@ All notable changes to this project will be documented in this file.
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [2.3.0]
|
||||
|
||||
### Added
|
||||
|
||||
- Allow overriding the main container command.
|
||||
- Allow setting Helm templates as environment variables via `envTpl`. The given value is parsed through Helm's `tpl` function, allowing for powerful variable substitution.
|
||||
- Support for defining volumeClaimTemplates for StatefulSet.
|
||||
- Allow the following Pod spec fields to be configurable:
|
||||
- `priorityClassName`
|
||||
- `schedulerName`
|
||||
- `hostname`
|
||||
|
||||
### Fixed
|
||||
|
||||
- `values.yaml` now contains the following sections, these were already functional but were previously undocumented:
|
||||
- `podSecurityContext`
|
||||
- `securityContext`
|
||||
- `resources`
|
||||
|
||||
## [2.2.1]
|
||||
|
||||
### Fixed
|
||||
|
||||
@@ -2,7 +2,7 @@ apiVersion: v2
|
||||
name: common
|
||||
description: Function library for k8s-at-home charts
|
||||
type: library
|
||||
version: 2.2.1
|
||||
version: 2.3.0
|
||||
keywords:
|
||||
- k8s-at-home
|
||||
- common
|
||||
|
||||
@@ -36,4 +36,18 @@ spec:
|
||||
{{- include "common.labels.selectorLabels" . | nindent 8 }}
|
||||
spec:
|
||||
{{- include "common.controller.pod" . | nindent 6 }}
|
||||
volumeClaimTemplates:
|
||||
{{- range $index, $vct := .Values.volumeClaimTemplates }}
|
||||
- metadata:
|
||||
name: {{ $vct.name }}
|
||||
spec:
|
||||
accessModes:
|
||||
- {{ required (printf "accessMode is required for vCT %v" $vct.name) $vct.accessMode | quote }}
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ required (printf "size is required for PVC %v" $vct.name) $vct.size | quote }}
|
||||
{{- if $vct.storageClass }}
|
||||
storageClassName: {{ if (eq "-" $vct.storageClass) }}""{{- else }}{{ $vct.storageClass | quote }}{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
@@ -5,6 +5,9 @@ The main container included in the controller.
|
||||
- name: {{ include "common.names.fullname" . }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
{{- with .Values.command }}
|
||||
command: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.args }}
|
||||
args: {{ . }}
|
||||
{{- end }}
|
||||
@@ -12,12 +15,16 @@ The main container included in the controller.
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- if .Values.env }}
|
||||
{{- if or .Values.env .Values.envTpl }}
|
||||
env:
|
||||
{{- range $key, $value := .Values.env }}
|
||||
- name: {{ $key }}
|
||||
value: {{ $value | quote }}
|
||||
{{- end }}
|
||||
{{- range $key, $value := .Values.envTpl }}
|
||||
- name: {{ $key }}
|
||||
value: {{ tpl $value $ | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- with .Values.envFrom }}
|
||||
envFrom:
|
||||
@@ -37,6 +44,15 @@ The main container included in the controller.
|
||||
{{- if .Values.additionalVolumeMounts }}
|
||||
{{- toYaml .Values.additionalVolumeMounts | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- if eq .Values.controllerType "statefulset" }}
|
||||
{{- range $index, $vct := .Values.volumeClaimTemplates }}
|
||||
- mountPath: {{ $vct.mountPath }}
|
||||
name: {{ $vct.name }}
|
||||
{{- if $vct.subPath }}
|
||||
subPath: {{ $vct.subPath }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- include "common.controller.probes" . | nindent 2 }}
|
||||
{{- with .Values.resources }}
|
||||
resources:
|
||||
|
||||
@@ -11,9 +11,18 @@ serviceAccountName: {{ include "common.names.serviceAccountName" . }}
|
||||
securityContext:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
{{- with .Values.priorityClassName }}
|
||||
priorityClassName: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.schedulerName }}
|
||||
schedulerName: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.hostNetwork }}
|
||||
hostNetwork: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.hostname }}
|
||||
hostname: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.dnsPolicy }}
|
||||
dnsPolicy: {{ . }}
|
||||
{{- end }}
|
||||
|
||||
@@ -12,6 +12,8 @@ strategy:
|
||||
## DaemonSets ignore this
|
||||
type: RollingUpdate
|
||||
|
||||
# Override the default command
|
||||
command: []
|
||||
# Override the default args
|
||||
args: []
|
||||
|
||||
@@ -33,12 +35,25 @@ serviceAccount:
|
||||
env: {}
|
||||
# TZ: UTC
|
||||
|
||||
## Variables with values set from templates, example
|
||||
## With a release name of: demo, the example env value will be: demo-admin
|
||||
envTpl: {}
|
||||
# TEMPLATE_VALUE: "{{ .Release.Name }}-admin"
|
||||
envFrom: []
|
||||
# - configMapRef:
|
||||
# name: config-map-name
|
||||
# - secretRef:
|
||||
# name: secret-name
|
||||
|
||||
# Custom priority class for different treatment by the scheduler
|
||||
# priorityClassName: system-node-critical
|
||||
|
||||
# Allow specifying a custom scheduler name
|
||||
# schedulerName: awkward-dangerous-scheduler
|
||||
|
||||
# Allow specifying explicit hostname setting
|
||||
# hostname:
|
||||
|
||||
# When using hostNetwork make sure you set dnsPolicy to ClusterFirstWithHostNet
|
||||
hostNetwork: false
|
||||
|
||||
@@ -56,6 +71,12 @@ dnsPolicy: ClusterFirst
|
||||
# for more information.
|
||||
enableServiceLinks: true
|
||||
|
||||
# Configure the Security Context for the Pod
|
||||
podSecurityContext: {}
|
||||
|
||||
# Configure the Security Context for the main container
|
||||
securityContext: {}
|
||||
|
||||
initContainers: []
|
||||
|
||||
additionalContainers: []
|
||||
@@ -207,6 +228,19 @@ additionalVolumes: []
|
||||
|
||||
additionalVolumeMounts: []
|
||||
|
||||
volumeClaimTemplates: []
|
||||
# Used in statefulset to create individual disks for each instance
|
||||
# - name: data
|
||||
# mountPath: /data
|
||||
# accessMode: "ReadWriteOnce"
|
||||
# size: 1Gi
|
||||
# - name: backup
|
||||
# mountPath: /backup
|
||||
# subPath: theSubPath
|
||||
# accessMode: "ReadWriteOnce"
|
||||
# size: 2Gi
|
||||
# storageClass: cheap-storage-class
|
||||
|
||||
nodeSelector: {}
|
||||
|
||||
affinity: {}
|
||||
@@ -221,6 +255,18 @@ hostAliases: []
|
||||
# - "example.com"
|
||||
# - "www.example.com"
|
||||
|
||||
resources: {}
|
||||
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||
# choice for the user. This also increases chances charts run on environments with little
|
||||
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||
# limits:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
# requests:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
|
||||
addons:
|
||||
|
||||
# Enable running a VPN in the pod to route traffic through a VPN
|
||||
|
||||
@@ -4,12 +4,10 @@ description: DashMachine is another web application bookmark dashboard, with fun
|
||||
icon: https://github.com/rmountjoy92/DashMachine/raw/master/dashmachine/static/images/logo/logo.png
|
||||
home: https://github.com/rmountjoy92/DashMachine
|
||||
name: dashmachine
|
||||
version: 3.3.1
|
||||
deprecated: true
|
||||
version: 3.3.2
|
||||
sources:
|
||||
- https://github.com/rmountjoy92/DashMachine
|
||||
maintainers:
|
||||
- name: carpenike
|
||||
email: ryan@ryanholt.net
|
||||
dependencies:
|
||||
- name: common
|
||||
version: 2.2.1
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
apiVersion: v2
|
||||
appVersion: latest
|
||||
appVersion: v0.12.0
|
||||
description: Music streaming server / subsonic server API implementation
|
||||
name: gonic
|
||||
version: 1.0.0
|
||||
version: 2.0.1
|
||||
keywords:
|
||||
- music
|
||||
- subsonic
|
||||
|
||||
21
charts/gonic/ci/ct-values.yaml
Normal file
21
charts/gonic/ci/ct-values.yaml
Normal file
@@ -0,0 +1,21 @@
|
||||
env:
|
||||
GONIC_MUSIC_PATH: "/music"
|
||||
GONIC_PODCAST_PATH: "/podcasts"
|
||||
GONIC_CACHE_PATH: "/cache"
|
||||
persistence:
|
||||
data:
|
||||
enabled: true
|
||||
emptyDir: true
|
||||
mountPath: /data
|
||||
podcasts:
|
||||
enabled: true
|
||||
emptyDir: true
|
||||
mountPath: /podcasts
|
||||
cache:
|
||||
enabled: true
|
||||
emptyDir: true
|
||||
mountPath: /cache
|
||||
music:
|
||||
enabled: true
|
||||
emptyDir: true
|
||||
mountPath: /music
|
||||
@@ -3,7 +3,7 @@
|
||||
image:
|
||||
repository: sentriz/gonic
|
||||
pullPolicy: IfNotPresent
|
||||
tag: latest
|
||||
tag: v0.12.0
|
||||
|
||||
strategy:
|
||||
type: Recreate
|
||||
@@ -15,13 +15,24 @@ service:
|
||||
# # See more environment variables in the gonic documentation
|
||||
# https://github.com/sentriz/gonic#configuration-options
|
||||
env: {}
|
||||
# TZ: UTC
|
||||
# TZ:
|
||||
# GONIC_MUSIC_PATH:
|
||||
# GONIC_PODCAST_PATH:
|
||||
# GONIC_CACHE_PATH:
|
||||
|
||||
persistence:
|
||||
data:
|
||||
enabled: false
|
||||
emptyDir: false
|
||||
|
||||
podcasts:
|
||||
enabled: false
|
||||
emptyDir: false
|
||||
|
||||
cache:
|
||||
enabled: false
|
||||
emptyDir: false
|
||||
|
||||
music:
|
||||
enabled: false
|
||||
emptyDir: false
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
apiVersion: v2
|
||||
name: lazylibrarian
|
||||
description: A Helm chart for deploying LazyLibrarian
|
||||
version: 2.0.1
|
||||
version: 3.0.0
|
||||
appVersion: 1.7.2
|
||||
keywords:
|
||||
- lazylibrarian
|
||||
@@ -14,3 +14,7 @@ sources:
|
||||
maintainers:
|
||||
- name: billimek
|
||||
email: jeff@billimek.com
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: https://k8s-at-home.com/charts/
|
||||
version: 2.2.1
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
# LazyLibrarian helm chart
|
||||
# LazyLibrarian
|
||||
|
||||
This is a helm chart for [LazyLibrarian](https://gitlab.com/LazyLibrarian/LazyLibrarian.git) based on the [container image provided by LinuxServer.io](https://hub.docker.com/r/linuxserver/lazylibrarian/).
|
||||
This is a helm chart for [LazyLibrarian](https://gitlab.com/LazyLibrarian/LazyLibrarian.git).
|
||||
|
||||
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)**
|
||||
|
||||
## TL;DR
|
||||
|
||||
@@ -13,89 +15,67 @@ $ helm install k8s-at-home/lazylibrarian
|
||||
|
||||
To install the chart with the release name `my-release`:
|
||||
|
||||
```shell
|
||||
helm install my-release k8s-at-home/lazylibrarian
|
||||
```console
|
||||
helm install --name my-release k8s-at-home/lazylibrarian
|
||||
```
|
||||
|
||||
## Uninstalling the Chart
|
||||
|
||||
To uninstall/delete the `my-release` deployment:
|
||||
|
||||
```shell
|
||||
```console
|
||||
helm delete my-release --purge
|
||||
```
|
||||
|
||||
The command removes all the Kubernetes components associated with the chart and deletes the release.
|
||||
|
||||
## Configuration
|
||||
|
||||
The following tables lists the configurable parameters of the LazyLibrarian chart and their default values.
|
||||
|
||||
| Parameter | Description | Default |
|
||||
| ------------------------------------------- | --------------------------------------------------------------------------------------------------- | ---------------------------------------------- |
|
||||
| `image.repository` | Image repository | `linuxserver/lazylibrarian` |
|
||||
| `image.tag` | Image tag. Possible values listed [here](https://hub.docker.com/r/linuxserver/lazylibrarian/tags/). | `581cdfb3-ls23` |
|
||||
| `image.pullPolicy` | Image pull policy | `IfNotPresent` |
|
||||
| `strategyType` | Specifies the strategy used to replace old Pods by new ones | `Recreate` |
|
||||
| `timezone` | Timezone the instance should run as, e.g. 'America/New_York' | `UTC` |
|
||||
| `puid` | process userID the instance should run as | `1001` |
|
||||
| `pgid` | process groupID the instance should run as | `1001` |
|
||||
| `dockerMods.calibre.enabled` | Enable optional calibre conversion feature. refer [here](https://github.com/linuxserver/docker-lazylibrarian#application-setup) | `false` |
|
||||
| `dockerMods.calibre.image.repository` | DockerMod image repository | `linuxserver/calibre-web` |
|
||||
| `dockerMods.calibre.image.tag` | DockerMod image tag. Can be found [here](https://hub.docker.com/r/linuxserver/calibre-web/tags/) | `calibre` |
|
||||
| `dockerMods.ffmpeg.enabled` | Enable optional ffmpeg conversion feature. refer [here](https://github.com/linuxserver/docker-lazylibrarian#application-setup) | `false` |
|
||||
| `dockerMods.ffmpeg.image.repository` | DockerMod image repository | `linuxserver/mods` |
|
||||
| `dockerMods.ffmpeg.image.tag` | DockerMod image tag. | `lazylibrarian-ffmpeg` |
|
||||
| `probes.liveness.enabled` | Enables liveness probe for the main container | `true` |
|
||||
| `probes.liveness.initialDelaySeconds` | Specify liveness `initialDelaySeconds` parameter for the main container | `60` |
|
||||
| `probes.liveness.failureThreshold` | Specify liveness `failureThreshold` parameter for the main container | `5` |
|
||||
| `probes.liveness.timeoutSeconds` | Specify liveness `timeoutSeconds` parameter for the main container | `10` |
|
||||
| `probes.readiness.enabled` | Enables readiness probe for the main container | `true` |
|
||||
| `probes.readiness.initialDelaySeconds` | Specify readiness `initialDelaySeconds` parameter for the main container | `60` |
|
||||
| `probes.readiness.failureThreshold` | Specify readiness `failureThreshold` parameter for the main container | `5` |
|
||||
| `probes.readiness.timeoutSeconds` | Specify readiness `timeoutSeconds` parameter for the main container | `10` |
|
||||
| `probes.startup.enabled` | Enables startup probe for the main container | `false` |
|
||||
| `probes.startup.failureThreshold` | Specify startup `failureThreshold` parameter for the main container | `30` |
|
||||
| `probes.startup.timeoutSeconds` | Specify startup `periodSeconds` parameter for the main container | `10` |
|
||||
| `service.type` | Kubernetes service type for the GUI | `ClusterIP` |
|
||||
| `service.port` | Kubernetes port where the GUI is exposed | `5299` |
|
||||
| `service.annotations` | Service annotations for the GUI | `{}` |
|
||||
| `service.labels` | Custom labels | `{}` |
|
||||
| `service.loadBalancerIP` | Loadbalancer IP for the GUI | `{}` |
|
||||
| `service.loadBalancerSourceRanges` | List of IP CIDRs allowed access to load balancer (if supported) | None |
|
||||
| `ingress.enabled` | Enables Ingress | `false` |
|
||||
| `ingress.annotations` | Ingress annotations | `{}` |
|
||||
| `ingress.labels` | Custom labels | `{}` |
|
||||
| `ingress.path` | Ingress path | `/` |
|
||||
| `ingress.hosts` | Ingress accepted hostnames | `chart-example.local` |
|
||||
| `ingress.tls` | Ingress TLS configuration | `[]` |
|
||||
| `persistence.enabled` | Use persistent volume to store configuration data | `true` |
|
||||
| `persistence.size` | Size of persistent volume claim | `1Gi` |
|
||||
| `persistence.existingClaim` | Use an existing PVC to persist data | `nil` |
|
||||
| `persistence.storageClass` | Type of persistent volume claim | `-` |
|
||||
| `persistence.subPath` | Mount a sub directory if set | `nil ` |
|
||||
| `persistence.accessMode` | Persistence access mode | `ReadWriteOnce` |
|
||||
| `persistence.extraVolumes` | Optionally add multiple additional volumes | `[]` |
|
||||
| `resources` | CPU/Memory resource requests/limits | `{}` |
|
||||
| `nodeSelector` | Node labels for pod assignment | `{}` |
|
||||
| `tolerations` | Toleration labels for pod assignment | `[]` |
|
||||
| `affinity` | Affinity settings for pod assignment | `{}` |
|
||||
| `podAnnotations` | Key-value pairs to add as pod annotations | `{}` |
|
||||
Read through the charts [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/lazylibrarian/values.yaml)
|
||||
file. It has several commented out suggested values.
|
||||
Additionally you can take a look at the common library [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/common/values.yaml) for more (advanced) configuration options.
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
||||
|
||||
```console
|
||||
helm install my-release \
|
||||
--set timezone="Europe/Amsterdam" \
|
||||
helm install lazylibrarian \
|
||||
--set env.TZ="America/New_York" \
|
||||
k8s-at-home/lazylibrarian
|
||||
```
|
||||
|
||||
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
|
||||
|
||||
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the
|
||||
chart. For example,
|
||||
```console
|
||||
helm install my-release -f values.yaml k8s-at-home/lazylibrarian
|
||||
helm install lazylibrarian k8s-at-home/lazylibrarian --values values.yaml
|
||||
```
|
||||
|
||||
```yaml
|
||||
image:
|
||||
tag: ...
|
||||
```
|
||||
|
||||
---
|
||||
**NOTE**
|
||||
|
||||
Read through the [values.yaml](https://github.com/k8s-at-home/charts/lazylibrarian/values.yaml) file. It has several commented out suggested values.
|
||||
If you get
|
||||
```console
|
||||
Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: ...`
|
||||
```
|
||||
it may be because you uninstalled the chart with `skipuninstall` enabled, you need to manually delete the pvc or use `existingClaim`.
|
||||
|
||||
---
|
||||
|
||||
## Upgrading an existing Release to a new major version
|
||||
|
||||
A major chart version change (like 4.0.1 -> 5.0.0) indicates that there is an incompatible breaking change potentially needing manual actions.
|
||||
|
||||
### Upgrading from 2.x.x to 3.x.x
|
||||
|
||||
Due to migrating to a centralized common library some values in `values.yaml` have changed.
|
||||
|
||||
Examples:
|
||||
|
||||
* `pguid` has been moved to `env`
|
||||
* `pgid` has been moved to `env`
|
||||
* All dockermods have been moved to `env`
|
||||
* `service.port` has been moved to `service.port.port`.
|
||||
* `persistence.type` has been moved to `controllerType`.
|
||||
|
||||
Refer to the library values.yaml for more configuration options.
|
||||
|
||||
@@ -1,21 +1 @@
|
||||
1. Get the application URL by running these commands:
|
||||
{{- if .Values.ingress.enabled }}
|
||||
{{- range $host := .Values.ingress.hosts }}
|
||||
{{- range .paths }}
|
||||
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ . }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- else if contains "NodePort" .Values.service.type }}
|
||||
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "lazylibrarian.fullname" . }})
|
||||
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
|
||||
echo http://$NODE_IP:$NODE_PORT
|
||||
{{- else if contains "LoadBalancer" .Values.service.type }}
|
||||
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
|
||||
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "lazylibrarian.fullname" . }}'
|
||||
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "lazylibrarian.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
|
||||
echo http://$SERVICE_IP:{{ .Values.service.port }}
|
||||
{{- else if contains "ClusterIP" .Values.service.type }}
|
||||
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "lazylibrarian.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
|
||||
echo "Visit http://127.0.0.1:8080 to use your application"
|
||||
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:{{ .Values.service.port }}
|
||||
{{- end }}
|
||||
{{- include "common.notes.defaultNotes" . -}}
|
||||
|
||||
@@ -1,107 +0,0 @@
|
||||
{{/* vim: set filetype=mustache: */}}
|
||||
{{/*
|
||||
Expand the name of the chart.
|
||||
*/}}
|
||||
{{- define "lazylibrarian.name" -}}
|
||||
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create a default fully qualified app name.
|
||||
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
|
||||
If release name contains chart name it will be used as a full name.
|
||||
*/}}
|
||||
{{- define "lazylibrarian.fullname" -}}
|
||||
{{- if .Values.fullnameOverride }}
|
||||
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- $name := default .Chart.Name .Values.nameOverride }}
|
||||
{{- if contains $name .Release.Name }}
|
||||
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
|
||||
{{- else }}
|
||||
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create chart name and version as used by the chart label.
|
||||
*/}}
|
||||
{{- define "lazylibrarian.chart" -}}
|
||||
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Common labels
|
||||
*/}}
|
||||
{{- define "lazylibrarian.labels" -}}
|
||||
helm.sh/chart: {{ include "lazylibrarian.chart" . }}
|
||||
{{ include "lazylibrarian.selectorLabels" . }}
|
||||
{{- if .Chart.AppVersion }}
|
||||
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
|
||||
{{- end }}
|
||||
app.kubernetes.io/managed-by: {{ .Release.Service }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Selector labels
|
||||
*/}}
|
||||
{{- define "lazylibrarian.selectorLabels" -}}
|
||||
app.kubernetes.io/name: {{ include "lazylibrarian.name" . }}
|
||||
app.kubernetes.io/instance: {{ .Release.Name }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Create the name of the service account to use
|
||||
*/}}
|
||||
{{- define "lazylibrarian.serviceAccountName" -}}
|
||||
{{- if .Values.serviceAccount.create }}
|
||||
{{- default (include "lazylibrarian.fullname" .) .Values.serviceAccount.name }}
|
||||
{{- else }}
|
||||
{{- default "default" .Values.serviceAccount.name }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Determine the addons to be installed
|
||||
*/}}
|
||||
{{- define "lazylibrarian.enabledAddons" -}}
|
||||
{{- $enabledAddons := list -}}
|
||||
{{- if .Values.dockerMods.calibre.enabled }}
|
||||
{{- $enabledAddons = printf "%s:%s" .Values.dockerMods.calibre.image.repository .Values.dockerMods.calibre.image.tag | append $enabledAddons -}}
|
||||
{{- end -}}
|
||||
{{- if .Values.dockerMods.ffmpeg.enabled }}
|
||||
{{- $enabledAddons = printf "%s:%s" .Values.dockerMods.ffmpeg.image.repository .Values.dockerMods.ffmpeg.image.tag | append $enabledAddons -}}
|
||||
{{- end -}}
|
||||
{{- join "|" $enabledAddons | quote -}}
|
||||
{{- end -}}
|
||||
|
||||
{{/*
|
||||
Get the additional volumes
|
||||
*/}}
|
||||
{{- define "lazylibrarian.extraVolumes" -}}
|
||||
{{- if .Values.persistence.extraVolumes }}
|
||||
{{- $extraVolumes := .Values.persistence.extraVolumes -}}
|
||||
{{- range $extraVolumes }}
|
||||
{{- $_ := unset . "mountPath" }}
|
||||
{{- end }}
|
||||
{{- toYaml $extraVolumes }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
|
||||
{{/*
|
||||
Get the additional volumeMounts
|
||||
*/}}
|
||||
{{- define "lazylibrarian.extraVolumeMounts" -}}
|
||||
{{- if .Values.persistence.extraVolumes }}
|
||||
{{- $extraVolumeMounts := list -}}
|
||||
{{- range .Values.persistence.extraVolumes }}
|
||||
{{- if .mountPath }}
|
||||
{{- $extraVolumeMounts = dict "name" .name "mountPath" .mountPath | append $extraVolumeMounts -}}
|
||||
{{- else }}
|
||||
{{- $extraVolumeMounts = dict "name" .name "mountPath" (printf "/mnt/%s" .name) | append $extraVolumeMounts -}}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- toYaml $extraVolumeMounts }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
1
charts/lazylibrarian/templates/common.yaml
Normal file
1
charts/lazylibrarian/templates/common.yaml
Normal file
@@ -0,0 +1 @@
|
||||
{{ include "common.all" . }}
|
||||
@@ -1,15 +0,0 @@
|
||||
{{- if .Values.autoscaling.enabled }}
|
||||
apiVersion: autoscaling/v2beta1
|
||||
kind: HorizontalPodAutoscaler
|
||||
metadata:
|
||||
name: {{ include "lazylibrarian.fullname" . }}
|
||||
labels:
|
||||
{{- include "lazylibrarian.labels" . | nindent 4 }}
|
||||
spec:
|
||||
scaleTargetRef:
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
name: {{ include "lazylibrarian.fullname" . }}
|
||||
minReplicas: {{ .Values.autoscaling.minReplicas }}
|
||||
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
|
||||
{{- end }}
|
||||
@@ -1,41 +0,0 @@
|
||||
{{- if .Values.ingress.enabled -}}
|
||||
{{- $fullName := include "lazylibrarian.fullname" . -}}
|
||||
{{- $svcPort := .Values.service.port -}}
|
||||
{{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
|
||||
apiVersion: networking.k8s.io/v1beta1
|
||||
{{- else -}}
|
||||
apiVersion: extensions/v1beta1
|
||||
{{- end }}
|
||||
kind: Ingress
|
||||
metadata:
|
||||
name: {{ $fullName }}
|
||||
labels:
|
||||
{{- include "lazylibrarian.labels" . | nindent 4 }}
|
||||
{{- with .Values.ingress.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
{{- if .Values.ingress.tls }}
|
||||
tls:
|
||||
{{- range .Values.ingress.tls }}
|
||||
- hosts:
|
||||
{{- range .hosts }}
|
||||
- {{ . | quote }}
|
||||
{{- end }}
|
||||
secretName: {{ .secretName }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
rules:
|
||||
{{- range .Values.ingress.hosts }}
|
||||
- host: {{ .host | quote }}
|
||||
http:
|
||||
paths:
|
||||
{{- range .paths }}
|
||||
- path: {{ . }}
|
||||
backend:
|
||||
serviceName: {{ $fullName }}
|
||||
servicePort: {{ $svcPort }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,32 +0,0 @@
|
||||
apiVersion: v1
|
||||
kind: Service
|
||||
metadata:
|
||||
name: {{ include "lazylibrarian.fullname" . }}
|
||||
labels:
|
||||
{{- include "lazylibrarian.labels" . | nindent 4 }}
|
||||
{{- if .Values.service.annotations }}
|
||||
annotations:
|
||||
{{ toYaml .Values.service.annotations | indent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
type: {{ .Values.service.type }}
|
||||
{{- if .Values.service.loadBalancerIP }}
|
||||
loadBalancerIP: {{ .Values.service.loadBalancerIP }}
|
||||
{{- end }}
|
||||
{{- if .Values.service.load }}
|
||||
loadBalancerIP: {{ .Values.service.loadBalancerIP }}
|
||||
{{- end }}
|
||||
{{- if .Values.service.loadBalancerSourceRanges }}
|
||||
loadBalancerSourceRanges:
|
||||
{{ toYaml .Values.service.loadBalancerSourceRanges | indent 4 }}
|
||||
{{- end -}}
|
||||
{{- if .Values.service.externalTrafficPolicy }}
|
||||
externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy }}
|
||||
{{- end }}
|
||||
ports:
|
||||
- port: {{ .Values.service.port }}
|
||||
targetPort: http
|
||||
protocol: TCP
|
||||
name: http
|
||||
selector:
|
||||
{{- include "lazylibrarian.selectorLabels" . | nindent 4 }}
|
||||
@@ -1,12 +0,0 @@
|
||||
{{- if .Values.serviceAccount.create -}}
|
||||
apiVersion: v1
|
||||
kind: ServiceAccount
|
||||
metadata:
|
||||
name: {{ include "lazylibrarian.serviceAccountName" . }}
|
||||
labels:
|
||||
{{- include "lazylibrarian.labels" . | nindent 4 }}
|
||||
{{- with .Values.serviceAccount.annotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,132 +0,0 @@
|
||||
apiVersion: apps/v1
|
||||
kind: StatefulSet
|
||||
metadata:
|
||||
name: {{ include "lazylibrarian.fullname" . }}
|
||||
labels:
|
||||
{{- include "lazylibrarian.labels" . | nindent 4 }}
|
||||
spec:
|
||||
{{- if not .Values.autoscaling.enabled }}
|
||||
replicas: {{ .Values.replicaCount }}
|
||||
{{- end }}
|
||||
selector:
|
||||
matchLabels:
|
||||
{{- include "lazylibrarian.selectorLabels" . | nindent 6 }}
|
||||
serviceName: {{ include "lazylibrarian.name" . }}
|
||||
template:
|
||||
metadata:
|
||||
{{- with .Values.podAnnotations }}
|
||||
annotations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "lazylibrarian.selectorLabels" . | nindent 8 }}
|
||||
spec:
|
||||
{{- with .Values.imagePullSecrets }}
|
||||
imagePullSecrets:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
serviceAccountName: {{ include "lazylibrarian.serviceAccountName" . }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.podSecurityContext | nindent 8 }}
|
||||
containers:
|
||||
- name: {{ .Chart.Name }}
|
||||
securityContext:
|
||||
{{- toYaml .Values.securityContext | nindent 12 }}
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: {{ .Values.service.port }}
|
||||
protocol: TCP
|
||||
env:
|
||||
- name: TZ
|
||||
value: {{ .Values.timezone }}
|
||||
- name: PUID
|
||||
value: {{ .Values.puid | quote }}
|
||||
- name: PGID
|
||||
value: {{ .Values.pgid | quote }}
|
||||
- name: DOCKER_MODS
|
||||
value: {{ include "lazylibrarian.enabledAddons" . }}
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /config
|
||||
{{- include "lazylibrarian.extraVolumeMounts" . | nindent 12 }}
|
||||
{{- if .Values.probes.liveness.enabled }}
|
||||
livenessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: http
|
||||
scheme: {{ .Values.probes.liveness.scheme }}
|
||||
initialDelaySeconds: {{ .Values.probes.liveness.initialDelaySeconds }}
|
||||
failureThreshold: {{ .Values.probes.liveness.failureThreshold }}
|
||||
timeoutSeconds: {{ .Values.probes.liveness.timeoutSeconds }}
|
||||
{{- end }}
|
||||
{{- if .Values.probes.readiness.enabled }}
|
||||
readinessProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: http
|
||||
scheme: {{ .Values.probes.readiness.scheme }}
|
||||
initialDelaySeconds: {{ .Values.probes.readiness.initialDelaySeconds }}
|
||||
failureThreshold: {{ .Values.probes.readiness.failureThreshold }}
|
||||
timeoutSeconds: {{ .Values.probes.readiness.timeoutSeconds }}
|
||||
{{- end }}
|
||||
{{- if .Values.probes.startup.enabled }}
|
||||
startupProbe:
|
||||
httpGet:
|
||||
path: /
|
||||
port: http
|
||||
scheme: {{ .Values.probes.startup.scheme }}
|
||||
failureThreshold: {{ .Values.probes.startup.failureThreshold }}
|
||||
periodSeconds: {{ .Values.probes.startup.periodSeconds }}
|
||||
{{- end }}
|
||||
resources:
|
||||
{{- toYaml .Values.resources | nindent 12 }}
|
||||
{{- with .Values.nodeSelector }}
|
||||
nodeSelector:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.affinity }}
|
||||
affinity:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
{{- with .Values.tolerations }}
|
||||
tolerations:
|
||||
{{- toYaml . | nindent 8 }}
|
||||
{{- end }}
|
||||
|
||||
volumes:
|
||||
{{- if not .Values.persistence.enabled }}
|
||||
- name: config
|
||||
emptyDir: {}
|
||||
{{- end }}
|
||||
{{- if and .Values.persistence.enabled .Values.persistence.existingClaim }}
|
||||
- name: config
|
||||
persistentVolumeClaim:
|
||||
claimName: {{ .Values.persistence.existingClaim }}
|
||||
{{- end }}
|
||||
{{- include "lazylibrarian.extraVolumes" . | nindent 8 }}
|
||||
|
||||
volumeClaimTemplates:
|
||||
{{- if and .Values.persistence.enabled ( not .Values.persistence.existingClaim ) }}
|
||||
- metadata:
|
||||
name: config
|
||||
labels:
|
||||
{{- include "lazylibrarian.labels" . | nindent 10 }}
|
||||
{{- if .Values.persistence.annotations }}
|
||||
annotations:
|
||||
{{- toYaml .Values.persistence.annotations | nindent 10 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
accessModes: [ {{ .Values.persistence.accessMode | quote }} ]
|
||||
resources:
|
||||
requests:
|
||||
storage: {{ .Values.persistence.size | quote }}
|
||||
{{- if .Values.persistence.storageClass }}
|
||||
{{- if (eq "-" .Values.persistence.storageClass) }}
|
||||
storageClassName: ""
|
||||
{{- else }}
|
||||
storageClassName: {{ .Values.persistence.storageClass | quote }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
{{- end }}
|
||||
@@ -1,153 +1,43 @@
|
||||
# Default values for lazylibrarian.
|
||||
# This is a YAML-formatted file.
|
||||
# Declare variables to be passed into your templates.
|
||||
|
||||
replicaCount: 1
|
||||
|
||||
autoscaling:
|
||||
enabled: false
|
||||
minReplicas: 1
|
||||
maxReplicas: 1
|
||||
# Default values for LazyLibrarian.
|
||||
|
||||
image:
|
||||
repository: linuxserver/lazylibrarian
|
||||
pullPolicy: IfNotPresent
|
||||
# Overrides the image tag whose default is the chart appVersion.
|
||||
tag: 2551a8bc-ls25
|
||||
tag: version-047f91af
|
||||
|
||||
imagePullSecrets: []
|
||||
nameOverride: ""
|
||||
fullnameOverride: ""
|
||||
|
||||
timezone: UTC
|
||||
puid: 1001
|
||||
pgid: 1001
|
||||
|
||||
# Linuxserver.io additional layers.
|
||||
# Enables additional features for the image, at the cost of increased size and
|
||||
# possible incompatabilities with certain architectures. Disabled by default.
|
||||
#
|
||||
# To enable, set enabled to true, and follow the guide at: https://github.com/linuxserver/docker-lazylibrarian#application-setup
|
||||
# to configure the application.
|
||||
dockerMods:
|
||||
# Enable the Calibre Docker Mod to allow Calibredb import
|
||||
calibre:
|
||||
enabled: false
|
||||
image:
|
||||
repository: linuxserver/calibre-web
|
||||
tag: calibre
|
||||
# Enable the FFMpeg Docker Mod. This allows using the audiobook conversion features of LazyLibrarian.
|
||||
ffmpeg:
|
||||
enabled: false
|
||||
image:
|
||||
repository: linuxserver/mods
|
||||
tag: lazylibrarian-ffmpeg
|
||||
|
||||
serviceAccount:
|
||||
# Specifies whether a service account should be created
|
||||
create: true
|
||||
# Annotations to add to the service account
|
||||
annotations: {}
|
||||
# The name of the service account to use.
|
||||
# If not set and create is true, a name is generated using the fullname template
|
||||
name: ""
|
||||
|
||||
podAnnotations: {}
|
||||
|
||||
podSecurityContext: {}
|
||||
# fsGroup: 2000
|
||||
|
||||
securityContext: {}
|
||||
# capabilities:
|
||||
# drop:
|
||||
# - ALL
|
||||
# readOnlyRootFilesystem: true
|
||||
# runAsNonRoot: true
|
||||
# runAsUser: 1000
|
||||
|
||||
persistence:
|
||||
enabled: false
|
||||
annotations: {}
|
||||
## lazylibrarian data Persistent Volume Storage Class
|
||||
## If defined, storageClassName: <storageClass>
|
||||
## If set to "-", storageClassName: "", which disables dynamic provisioning
|
||||
## If undefined (the default) or set to null, no storageClassName spec is
|
||||
## set, choosing the default provisioner. (gp2 on AWS, standard on
|
||||
## GKE, AWS & OpenStack)
|
||||
##
|
||||
# storageClass: "-"
|
||||
|
||||
## If you want to reuse an existing claim, you can pass the name of the PVC using
|
||||
## the existingClaim variable
|
||||
##
|
||||
# existingClaim: lazylibrarian-config
|
||||
accessMode: ReadWriteOnce
|
||||
size: 1Gi
|
||||
|
||||
# Any extra volumes to define for the pod
|
||||
# Volumes will be mounted to the folder specified under mountPath
|
||||
# If no mountPath is set it will be mounted to /mnt/<name>
|
||||
extraVolumes: []
|
||||
# - name: example-name
|
||||
# hostPath:
|
||||
# path: /path/on/host
|
||||
# type: DirectoryOrCreate
|
||||
# mountPath: "/mnt/test"
|
||||
strategy:
|
||||
type: Recreate
|
||||
|
||||
service:
|
||||
type: ClusterIP
|
||||
port: 5299
|
||||
# externalTrafficPolicy: Local
|
||||
# loadBalancerIP: ""
|
||||
# loadBalancerSourceRanges: []
|
||||
annotations: {}
|
||||
port:
|
||||
port: 5299
|
||||
|
||||
ingress:
|
||||
enabled: false
|
||||
annotations: {}
|
||||
# kubernetes.io/ingress.class: nginx
|
||||
# kubernetes.io/tls-acme: "true"
|
||||
hosts:
|
||||
- host: chart-example.local
|
||||
paths: []
|
||||
tls: []
|
||||
# - secretName: chart-example-tls
|
||||
# hosts:
|
||||
# - chart-example.local
|
||||
env: {}
|
||||
# TZ: UTC
|
||||
# PUID: 1001
|
||||
# PGID: 1001
|
||||
## Docker Mods are not actively tested and might not work as expected.
|
||||
# DOCKER_MODS=linuxserver/mods:lazylibrarian-ffmpeg
|
||||
# DOCKER_MODS=linuxserver/calibre-web:calibre
|
||||
|
||||
resources: {}
|
||||
# We usually recommend not to specify default resources and to leave this as a conscious
|
||||
# choice for the user. This also increases chances charts run on environments with little
|
||||
# resources, such as Minikube. If you do want to specify resources, uncomment the following
|
||||
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
|
||||
# limits:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
# requests:
|
||||
# cpu: 100m
|
||||
# memory: 128Mi
|
||||
|
||||
probes:
|
||||
liveness:
|
||||
enabled: true
|
||||
scheme: HTTP
|
||||
initialDelaySeconds: 60
|
||||
failureThreshold: 5
|
||||
timeoutSeconds: 10
|
||||
readiness:
|
||||
enabled: true
|
||||
scheme: HTTP
|
||||
initialDelaySeconds: 60
|
||||
failureThreshold: 5
|
||||
timeoutSeconds: 10
|
||||
startup:
|
||||
persistence:
|
||||
config:
|
||||
enabled: false
|
||||
scheme: HTTP
|
||||
failureThreshold: 30
|
||||
periodSeconds: 10
|
||||
emptyDir: false
|
||||
|
||||
nodeSelector: {}
|
||||
|
||||
tolerations: []
|
||||
|
||||
affinity: {}
|
||||
media:
|
||||
enabled: false
|
||||
emptyDir: false
|
||||
mountPath: /media
|
||||
## Persistent Volume Storage Class
|
||||
## If defined, storageClassName: <storageClass>
|
||||
## If set to "-", storageClassName: "", which disables dynamic provisioning
|
||||
## If undefined (the default) or set to null, no storageClassName spec is
|
||||
## set, choosing the default provisioner. (gp2 on AWS, standard on
|
||||
## GKE, AWS & OpenStack)
|
||||
# storageClass: "-"
|
||||
# accessMode: ReadWriteOnce
|
||||
# size: 1Gi
|
||||
## Do not delete the pvc upon helm uninstall
|
||||
# skipuninstall: false
|
||||
# existingClaim: ""
|
||||
|
||||
18
charts/protonmail-bridge/Chart.yaml
Normal file
18
charts/protonmail-bridge/Chart.yaml
Normal file
@@ -0,0 +1,18 @@
|
||||
apiVersion: v2
|
||||
appVersion: 1.5.7-1
|
||||
description: Container for protonmail bridge to work on the network.
|
||||
name: protonmail-bridge
|
||||
version: 1.0.0
|
||||
keywords:
|
||||
- protonmail
|
||||
- protonmail-bridge
|
||||
sources:
|
||||
- https://github.com/shenxn/protonmail-bridge-docker
|
||||
- https://hub.docker.com/r/shenxn/protonmail-bridge
|
||||
maintainers:
|
||||
- name: Eagleman7
|
||||
email: my@email.com
|
||||
dependencies:
|
||||
- name: common
|
||||
repository: https://k8s-at-home.com/charts/
|
||||
version: 2.2.1
|
||||
8
charts/protonmail-bridge/OWNERS
Normal file
8
charts/protonmail-bridge/OWNERS
Normal file
@@ -0,0 +1,8 @@
|
||||
approvers:
|
||||
- billimek
|
||||
- onedr0p
|
||||
- bjw-s
|
||||
reviewers:
|
||||
- billimek
|
||||
- onedr0p
|
||||
- bjw-s
|
||||
88
charts/protonmail-bridge/README.md
Normal file
88
charts/protonmail-bridge/README.md
Normal file
@@ -0,0 +1,88 @@
|
||||
# Protonmail-bridge
|
||||
|
||||
This is a helm chart for [Protonmail-bridge](https://github.com/shenxn/protonmail-bridge-docker).
|
||||
|
||||
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)**
|
||||
|
||||
## TL;DR;
|
||||
|
||||
```shell
|
||||
$ helm repo add k8s-at-home https://k8s-at-home.com/charts/
|
||||
$ helm install k8s-at-home/protonmail-bridge
|
||||
```
|
||||
|
||||
## Installing the Chart
|
||||
|
||||
To install the chart with the release name `my-release`:
|
||||
|
||||
```console
|
||||
helm install --name my-release k8s-at-home/protonmail-bridge
|
||||
```
|
||||
|
||||
## Uninstalling the Chart
|
||||
|
||||
To uninstall/delete the `my-release` deployment:
|
||||
|
||||
```console
|
||||
helm delete my-release --purge
|
||||
```
|
||||
|
||||
The command removes all the Kubernetes components associated with the chart and deletes the release.
|
||||
|
||||
## Configuration
|
||||
Once installed do the following to configure the application within the pod:
|
||||
1. Get the name of your deployed pod `kubectl get pods`
|
||||
2. Run interactively on the pod (setup only) `kubectl exec --stdin --tty protonmail-bridge-deployment-6c79fd7f84-ftwcw -- /bin/bash`
|
||||
3. Once logged in, execute the init command `bash /protonmail/entrypoint.sh init`
|
||||
4. You should now see the CLI for protonmail-bridge, authenticate with login
|
||||
5. (optional) If you use split address mode, change mode and info are good for printing the details.
|
||||
6. Copy your SMTP server info (or IMAP, your choice)
|
||||
7. Delete the active pod so a new one gets created (which will properly fire up with your persisted settings)
|
||||
|
||||
Read through the charts [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/protonmail-bridge/values.yaml)
|
||||
file. It has several commented out suggested values.
|
||||
Additionally you can take a look at the common library [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/common/values.yaml) for more (advanced) configuration options.
|
||||
|
||||
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
|
||||
```console
|
||||
helm install protonmail-bridge \
|
||||
--set env.TZ="America/New_York" \
|
||||
k8s-at-home/protonmail-bridge
|
||||
```
|
||||
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the
|
||||
chart. For example,
|
||||
```console
|
||||
helm install protonmail-bridge k8s-at-home/protonmail-bridge --values values.yaml
|
||||
```
|
||||
|
||||
```yaml
|
||||
image:
|
||||
tag: ...
|
||||
```
|
||||
|
||||
|
||||
---
|
||||
**NOTE**
|
||||
|
||||
If you get
|
||||
```console
|
||||
Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: ...`
|
||||
```
|
||||
it may be because you uninstalled the chart with `skipuninstall` enabled, you need to manually delete the pvc or use `existingClaim`.
|
||||
|
||||
---
|
||||
|
||||
## Upgrading an existing Release to a new major version
|
||||
|
||||
A major chart version change (like 4.0.1 -> 5.0.0) indicates that there is an incompatible breaking change potentially needing manual actions.
|
||||
|
||||
### Upgrading from 3.x.x to 4.x.x
|
||||
|
||||
Due to migrating to a centralized common library some values in `values.yaml` have changed.
|
||||
|
||||
Examples:
|
||||
|
||||
* `service.port` has been moved to `service.port.port`.
|
||||
* `persistence.type` has been moved to `controllerType`.
|
||||
|
||||
Refer to the library values.yaml for more configuration options.
|
||||
1
charts/protonmail-bridge/templates/NOTES.txt
Normal file
1
charts/protonmail-bridge/templates/NOTES.txt
Normal file
@@ -0,0 +1 @@
|
||||
{{- include "common.notes.defaultNotes" . -}}
|
||||
1
charts/protonmail-bridge/templates/common.yaml
Normal file
1
charts/protonmail-bridge/templates/common.yaml
Normal file
@@ -0,0 +1 @@
|
||||
{{ include "common.all" . }}
|
||||
19
charts/protonmail-bridge/values.yaml
Normal file
19
charts/protonmail-bridge/values.yaml
Normal file
@@ -0,0 +1,19 @@
|
||||
# Default values for Protonmail-bridge.
|
||||
|
||||
image:
|
||||
repository: shenxn/protonmail-bridge
|
||||
tag: 1.5.7-1
|
||||
pullPolicy: IfNotPresent
|
||||
|
||||
strategy:
|
||||
type: Recreate
|
||||
|
||||
service:
|
||||
port:
|
||||
port: 25
|
||||
name: smtp-service
|
||||
|
||||
persistence:
|
||||
config:
|
||||
enabled: true
|
||||
mountPath: /root
|
||||
@@ -38,6 +38,53 @@ class Test < ChartTest
|
||||
end
|
||||
end
|
||||
|
||||
describe 'Environment settings' do
|
||||
it 'Check no environment variables' do
|
||||
values = {}
|
||||
chart.value values
|
||||
assert_nil(resource('Deployment')['spec']['template']['spec']['containers'][0]['env'])
|
||||
end
|
||||
|
||||
it 'set "static" environment variables' do
|
||||
values = {
|
||||
env: {
|
||||
STATIC_ENV: 'value_of_env'
|
||||
}
|
||||
}
|
||||
chart.value values
|
||||
jq('.spec.template.spec.containers[0].env[0].name', resource('Deployment')).must_equal values[:env].keys[0].to_s
|
||||
jq('.spec.template.spec.containers[0].env[0].value', resource('Deployment')).must_equal values[:env].values[0].to_s
|
||||
end
|
||||
|
||||
|
||||
it 'set "static" and "Dynamic/Tpl" environment variables' do
|
||||
values = {
|
||||
env: {
|
||||
STATIC_ENV: 'value_of_env'
|
||||
},
|
||||
envTpl: {
|
||||
DYN_ENV: "{{ .Release.Name }}-admin"
|
||||
}
|
||||
}
|
||||
chart.value values
|
||||
jq('.spec.template.spec.containers[0].env[0].name', resource('Deployment')).must_equal values[:env].keys[0].to_s
|
||||
jq('.spec.template.spec.containers[0].env[0].value', resource('Deployment')).must_equal values[:env].values[0].to_s
|
||||
jq('.spec.template.spec.containers[0].env[1].name', resource('Deployment')).must_equal values[:envTpl].keys[0].to_s
|
||||
jq('.spec.template.spec.containers[0].env[1].value', resource('Deployment')).must_equal 'common-test-admin'
|
||||
end
|
||||
|
||||
it 'set "Dynamic/Tpl" environment variables' do
|
||||
values = {
|
||||
envTpl: {
|
||||
DYN_ENV: "{{ .Release.Name }}-admin"
|
||||
}
|
||||
}
|
||||
chart.value values
|
||||
jq('.spec.template.spec.containers[0].env[0].name', resource('Deployment')).must_equal values[:envTpl].keys[0].to_s
|
||||
jq('.spec.template.spec.containers[0].env[0].value', resource('Deployment')).must_equal 'common-test-admin'
|
||||
end
|
||||
end
|
||||
|
||||
describe 'ports settings' do
|
||||
default_name = 'http'
|
||||
default_port = 8080
|
||||
@@ -97,5 +144,33 @@ class Test < ChartTest
|
||||
assert_match("Our charts do not support named ports for targetPort. (port name #{default_name}, targetPort #{values[:service][:port][:targetPort]})", exception.message)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'statefulset volumeClaimTemplates' do
|
||||
|
||||
it 'volumeClaimTemplates should be empty by default' do
|
||||
chart.value controllerType: 'statefulset'
|
||||
assert_nil(resource('StatefulSet')['spec']['volumeClaimTemplates'])
|
||||
end
|
||||
|
||||
it 'can set values for volumeClaimTemplates' do
|
||||
values = {
|
||||
controllerType: 'statefulset',
|
||||
volumeClaimTemplates: [
|
||||
{
|
||||
name: 'storage',
|
||||
accessMode: 'ReadWriteOnce',
|
||||
size: '10Gi',
|
||||
storageClass: 'storage'
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
chart.value values
|
||||
jq('.spec.volumeClaimTemplates[0].metadata.name', resource('StatefulSet')).must_equal values[:volumeClaimTemplates][0][:name]
|
||||
jq('.spec.volumeClaimTemplates[0].spec.accessModes[0]', resource('StatefulSet')).must_equal values[:volumeClaimTemplates][0][:accessMode]
|
||||
jq('.spec.volumeClaimTemplates[0].spec.resources.requests.storage', resource('StatefulSet')).must_equal values[:volumeClaimTemplates][0][:size]
|
||||
jq('.spec.volumeClaimTemplates[0].spec.storageClassName', resource('StatefulSet')).must_equal values[:volumeClaimTemplates][0][:storageClass]
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user