Compare commits

...

64 Commits

Author SHA1 Message Date
46effc5599 fix secret field schema 2024-03-30 14:32:22 -06:00
0f7a0d658f fix naming 2024-03-30 14:27:29 -06:00
08b0782645 add service monitor 2024-03-30 14:22:55 -06:00
9f7f83a40a change webhook path 2024-03-30 14:17:21 -06:00
b3f9c93fcb change chart name 2024-03-30 13:30:46 -06:00
b6bcae462f add matrix hookshot 2024-03-30 13:30:11 -06:00
renovate[bot]
70cbd7b60d Update Helm release tdarr-exporter to v1.1.1 (#20)
* Update Helm release tdarr-exporter to v1.1.1

* bump chart version

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Lebens <alexanderlebens@gmail.com>
2024-03-25 10:16:22 -06:00
renovate[bot]
ba065b36b2 Update ghcr.io/qdm12/gluetun Docker tag to v3.38.0 (#22)
* Update ghcr.io/qdm12/gluetun Docker tag to v3.38.0

* bump chart version

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Lebens <alexanderlebens@gmail.com>
2024-03-25 10:15:48 -06:00
renovate[bot]
cfc4d78b9f Update Helm release redis to v18.19.4 (#16)
* Update Helm release redis to v18.19.4

* bump chart version

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Lebens <alexanderlebens@gmail.com>
2024-03-25 10:12:55 -06:00
renovate[bot]
34e96804f4 Update ghcr.io/gethomepage/homepage Docker tag to v0.8.10 (#21)
* Update ghcr.io/gethomepage/homepage Docker tag to v0.8.10

* update chart

* remove whitespace

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Lebens <alexanderlebens@gmail.com>
2024-03-25 10:12:28 -06:00
renovate[bot]
3a8354635b Update Helm release tdarr-exporter to v1.1.0 (#17)
* Update Helm release tdarr-exporter to v1.1.0

* increment chart version

* remove trailing whitespace

* remove trailing whitespace

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Lebens <alexanderlebens@gmail.com>
2024-03-22 15:50:34 -06:00
renovate[bot]
fcba2d6011 Update homeassistant/home-assistant Docker tag to v2024.3.3 (#19)
* Update homeassistant/home-assistant Docker tag to v2024.3.3

* update chart version

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Lebens <alexanderlebens@gmail.com>
2024-03-22 15:42:11 -06:00
renovate[bot]
8db4555032 Update linuxserver/code-server Docker tag to v4.22.1 (#15)
* Update linuxserver/code-server Docker tag to v4.22.1

* update chart

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Lebens <alexanderlebens@gmail.com>
2024-03-18 01:30:05 -06:00
renovate[bot]
f22b33deba Update homeassistant/home-assistant Docker tag to v2024.3.1 (#14)
* Update homeassistant/home-assistant Docker tag to v2024.3.1

* update chart

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Lebens <alexanderlebens@gmail.com>
2024-03-18 01:28:21 -06:00
f73b754d9c fix values 2024-03-17 01:32:21 -06:00
f2e3dba5e2 remove probes 2024-03-16 09:56:06 -06:00
e89bd04a8d fix env merging 2024-03-16 09:52:14 -06:00
6f2550cf79 change env type 2024-03-16 09:41:49 -06:00
0c94180823 hardcode the exporter port 2024-03-16 09:36:56 -06:00
f59d77f8bc fix metrics switch 2024-03-16 09:34:09 -06:00
57983912f5 remove node api and probes 2024-03-16 09:29:07 -06:00
8a6cfef4c5 add server IP env 2024-03-16 09:21:32 -06:00
7c9a06dcee add existing secret name for gluetun 2024-03-16 09:12:46 -06:00
580f9efa06 add qbittorrent 2024-03-16 09:04:25 -06:00
c0b41a6d6c add tdarr 2024-03-16 08:16:38 -06:00
4efdc15832 add unpackerr 2024-03-16 07:25:27 -06:00
2dc9f33109 update chart details 2024-03-16 07:15:39 -06:00
d0255ca5d1 remove specific values 2024-03-16 05:44:05 -06:00
790ad5b440 update renovate config 2024-03-16 05:43:49 -06:00
9539635918 change repo 2024-03-16 04:38:43 -06:00
7c61825d5f enable enviroment variables 2024-03-16 04:11:46 -06:00
c2446ab6e2 add freshrss 2024-03-16 04:11:17 -06:00
120fbe05e6 fix mount location 2024-03-16 01:42:55 -06:00
e686771ce3 fix names 2024-03-16 01:34:46 -06:00
a5bd0b724a enable proxy auth for ha 2024-03-15 23:04:47 -06:00
35c7223d40 change tls secret name 2024-03-15 22:37:38 -06:00
32bda525a1 change proxy auth to code server 2024-03-15 22:36:45 -06:00
42231a40f4 add tubearchivist-to-jellyfin 2024-03-15 19:12:12 -06:00
76c6016a9e change redis image 2024-03-15 02:23:23 -06:00
d8e6ac1d7b fix env value 2024-03-15 02:19:03 -06:00
03d0cab454 update elasticsearch chart version 2024-03-15 02:16:26 -06:00
b149fbd85e add tubearchivist 2024-03-15 02:00:46 -06:00
97528e845d fix redis chart version 2024-03-15 01:57:19 -06:00
f04f777ec2 add cops 2024-03-14 23:58:52 -06:00
renovate[bot]
688d6498b0 Update homeassistant/home-assistant Docker tag to v2024.3.0 (#11)
* Update homeassistant/home-assistant Docker tag to v2024.3.0

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Alex Lebens <alexanderlebens@gmail.com>
2024-03-14 17:11:41 -06:00
7d8c554354 change ingress and port name 2024-03-14 08:59:18 -06:00
b31dab5a46 inject db secrets into deployment 2024-03-14 08:52:39 -06:00
c485eb9682 change depcreciated env value 2024-03-14 08:51:37 -06:00
627f2ca6b6 enable configmap for s3 2024-03-14 08:46:52 -06:00
2b9ea0bcdb fix bootstrap switch 2024-03-14 06:32:41 -06:00
ba0c6fe7d2 fix values paths 2024-03-14 01:30:16 -06:00
6c11bf51b2 change cluster role names 2024-03-14 00:18:14 -06:00
8ffe5fd408 update renovate config 2024-03-13 06:05:23 -06:00
773ff53432 update postgresql cluster 2024-03-13 06:00:36 -06:00
81ab282822 update outline 2024-03-13 06:00:19 -06:00
8fb910383d update kubelet-serving-cert-approver 2024-03-13 05:54:53 -06:00
1fe5c07c36 update homepage 2024-03-13 05:49:35 -06:00
eadbf37ce5 update home-assistant 2024-03-13 05:46:15 -06:00
f7f210a905 update calibre-server 2024-03-13 05:40:30 -06:00
a6d3eaf404 add outline 2024-03-13 04:43:14 -06:00
72f5ebc567 increase chart version 2024-03-13 04:38:00 -06:00
e52c5dc8c8 add readme 2024-03-13 01:14:31 -06:00
f08ae85e5c fix indentation 2024-03-13 01:11:57 -06:00
4988c82be2 fix chart data 2024-03-13 01:08:29 -06:00
116 changed files with 2917 additions and 191 deletions

84
.github/renovate.json vendored
View File

@@ -7,11 +7,9 @@
],
"timezone": "US/Mountain",
"schedule": [
"after 10am every weekday",
"before 5pm every weekday"
],
"labels": [
"every weekday"
],
"labels": [],
"packageRules": [
{
"description": "Disables for non major Renovate version",
@@ -41,34 +39,72 @@
"automerge": false
},
{
"description": "Generate image updates on Tuesdays",
"description": "Label service images",
"matchPackageNames": [
"linuxserver/calibre",
"homeassistant/home-assistant",
"ghcr.io/gethomepage/homepage",
"ghcr.io/alex1989hu/kubelet-serving-cert-approver",
"ghcr.io/cloudnative-pg/postgresql",
"linuxserver/code-server"
"redis/redis-stack-server"
],
"matchDatasources": [
"docker",
"gitea-releases",
"gitea-tags",
"github-releases",
"github-tags",
"gitlab-packages",
"gitlab-releases",
"gitlab-tags"
],
"schedule": [
"after 10am on tuesday",
"before 5pm on tuesday"
"docker"
],
"addLabels": [
"upgrade",
"weekly",
"service",
"image"
],
"bumpVersion": "minor",
"automerge": false,
"minimumReleaseAge": "3 days"
},
{
"description": "Label service charts",
"matchPackageNames": [
"elasticsearch",
"redis"
],
"matchDatasources": [
"helm"
],
"addLabels": [
"serivce",
"chart"
],
"automerge": false,
"minimumReleaseAge": "3 days"
},
{
"description": "Label application images",
"matchPackageNames": [
"bbilly1/tubearchivist-jf",
"bbilly1/tubearchivist",
"freshrss/freshrss",
"ghcr.io/gethomepage/homepage",
"homeassistant/home-assistant",
"linuxserver/calibre",
"linuxserver/code-server",
"linuxserver/cops",
"outlinewiki/outline",
"rmcrackan/libation"
],
"matchDatasources": [
"docker"
],
"addLabels": [
"application",
"image"
],
"automerge": false,
"minimumReleaseAge": "3 days"
},
{
"description": "Label application charts",
"matchPackageNames": [],
"matchDatasources": [
"helm"
],
"addLabels": [
"application",
"chart"
],
"automerge": false,
"minimumReleaseAge": "3 days"
}

View File

@@ -1,6 +1,6 @@
apiVersion: v2
name: calibre-server
version: 0.0.4
version: 0.0.6
description: Chart for Calibre content database
keywords:
- media

View File

@@ -11,6 +11,7 @@ This chart bootstraps a [Calibre](https://github.com/home-assistant) deployment
- Kubernetes
- Helm
- Traefik v2 / IngressRoute
- Authentik / Auth
## Parameters

View File

@@ -9,7 +9,6 @@ metadata:
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
app.kubernetes.io/managed-by: helm
spec:
revisionHistoryLimit: 3
replicas: {{ .Values.deployment.replicas }}
@@ -28,7 +27,7 @@ spec:
serviceAccountName: calibre-server
automountServiceAccountToken: true
containers:
- name: {{ .Release.Name }}
- name: calibre-server
image: "{{ .Values.deployment.image.repository }}:{{ .Values.deployment.image.tag }}"
imagePullPolicy: {{ .Values.deployment.image.imagePullPolicy }}
ports:

View File

@@ -10,7 +10,6 @@ metadata:
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: calibre-server
app.kubernetes.io/managed-by: helm
spec:
entryPoints:
- websecure
@@ -18,7 +17,7 @@ spec:
- kind: Rule
match: "Host(`{{ .Values.ingressRoute.http.host }}`)"
middlewares:
- name: authentik
- name: "authentik-{{ .Release.Name }}"
namespace: {{ .Release.Namespace }}
priority: 10
services:

View File

@@ -2,15 +2,14 @@
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: authentik
name: "authentik-{{ .Release.Name }}"
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: calibre-server
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: auth
app.kubernetes.io/part-of: calibre-server
app.kubernetes.io/managed-by: helm
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
forwardAuth:
address: "http://{{ .Values.ingressRoute.authentik.outpost }}.authentik:{{ .Values.ingressRoute.authentik.port }}/outpost.goauthentik.io/auth/traefik"

View File

@@ -9,7 +9,6 @@ metadata:
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
app.kubernetes.io/managed-by: helm
spec:
accessModes:
- ReadWriteOnce

View File

@@ -9,4 +9,3 @@ metadata:
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: calibre-server
app.kubernetes.io/managed-by: helm

View File

@@ -2,14 +2,13 @@ apiVersion: v1
kind: Service
metadata:
name: calibre-server
namespace: {{ .Release.Namespace }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: calibre-server
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
app.kubernetes.io/managed-by: helm
spec:
type: ClusterIP
ports:
@@ -26,14 +25,13 @@ apiVersion: v1
kind: Service
metadata:
name: calibre-server-content
namespace: {{ .Release.Namespace }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: calibre-server
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
app.kubernetes.io/managed-by: helm
spec:
type: ClusterIP
ports:

View File

@@ -29,14 +29,14 @@ service:
ingressRoute:
enabled: true
http:
host: server.calibre.alexlebens.net
host:
authentik:
outpost: authentik-proxy-outpost
outpost:
port: 9000
persistence:
config:
storageClassName: ceph-block
storageClassName: default
storageSize: 5Gi
volumeMode: Filesystem
books:
claimName: calibre-server-nfs-storage
claimName:

12
charts/cops/Chart.yaml Normal file
View File

@@ -0,0 +1,12 @@
apiVersion: v2
name: cops
version: 0.0.3
description: Chart for Calibre OPDS (and HTML) PHP Server
keywords:
- calibre
- OPDS
sources:
- https://github.com/seblucas/cops
maintainers:
- name: alexlebens
appVersion: 1.1.3

22
charts/cops/README.md Normal file
View File

@@ -0,0 +1,22 @@
## Introduction
[Calibre OPDS (and HTML) PHP Server](https://github.com/seblucas/cops)
COPS's main advantages are :
- No need for many dependencies.
- No need for a lot of CPU or RAM.
- Not much code.
- Search is available.
- It was fun to code.
This chart bootstraps a [COPS](https://github.com/seblucas/cops) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
## Prerequisites
- Kubernetes
- Helm
## Parameters
See the [values files](values.yaml).

View File

@@ -0,0 +1,82 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace | quote }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
revisionHistoryLimit: 3
replicas: {{ .Values.deployment.replicas }}
strategy:
type: {{ .Values.deployment.strategy }}
selector:
matchLabels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
template:
metadata:
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
serviceAccountName: {{ .Release.Name }}
containers:
- name: {{ .Release.Name }}
image: "{{ .Values.deployment.image.repository }}:{{ .Values.deployment.image.tag }}"
imagePullPolicy: {{ .Values.deployment.image.imagePullPolicy }}
ports:
- name: http
containerPort: {{ .Values.service.http.port }}
protocol: TCP
volumeMounts:
- mountPath: /config
name: cops-config
- mountPath: /books
name: cops-books
resources:
{{- toYaml .Values.deployment.resources | nindent 12 }}
env:
{{- range $k,$v := .Values.deployment.env }}
- name: {{ $k }}
value: {{ $v | quote }}
{{- end }}
{{- with .Values.deployment.envFrom }}
envFrom:
{{- toYaml . | nindent 12 }}
{{- end }}
livenessProbe:
httpGet:
path: /
port: {{ .Values.service.http.port }}
initialDelaySeconds: 0
failureThreshold: 5
timeoutSeconds: 1
periodSeconds: 10
readinessProbe:
httpGet:
path: /
port: {{ .Values.service.http.port }}
initialDelaySeconds: 0
failureThreshold: 5
timeoutSeconds: 1
periodSeconds: 10
startupProbe:
httpGet:
path: /
port: {{ .Values.service.http.port }}
initialDelaySeconds: 5
failureThreshold: 30
periodSeconds: 10
timeoutSeconds: 1
volumes:
- name: cops-config
persistentVolumeClaim:
claimName: cops-config
- name: cops-books
persistentVolumeClaim:
claimName: {{ .Values.persistence.books.claimName }}

View File

@@ -0,0 +1,32 @@
{{- if .Values.ingress.enabled }}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
annotations:
{{- toYaml .Values.ingress.annotations | nindent 4 }}
spec:
ingressClassName: {{ .Values.ingress.className }}
tls:
- hosts:
- {{ .Values.ingress.host }}
secretName: {{ .Release.Name }}-secret-tls
rules:
- host: {{ .Values.ingress.host }}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: {{ .Release.Name }}
port:
name: http
{{- end }}

View File

@@ -0,0 +1,19 @@
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: cops-config
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: storage
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.persistence.config.storageSize }}
storageClassName: {{ .Values.persistence.config.storageClassName }}
volumeMode: {{ .Values.persistence.config.volumeMode }}

View File

@@ -0,0 +1,26 @@
apiVersion: v1
kind: Pod
metadata:
name: "{{ .Release.Name }}-test-connection"
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
annotations:
"helm.sh/hook": test-success
spec:
restartPolicy: Never
containers:
- name: wget
image: busybox
command: ['wget']
args: ['{{ .Release.Name }}:{{ .Values.service.http.port }}']
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 50m
memory: 256Mi

View File

@@ -0,0 +1,11 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}

View File

@@ -0,0 +1,22 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
type: ClusterIP
externalTrafficPolicy:
ports:
- port: {{ .Values.service.http.port }}
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}

36
charts/cops/values.yaml Normal file
View File

@@ -0,0 +1,36 @@
deployment:
replicas: 1
strategy: Recreate
image:
repository: linuxserver/cops
tag: 2.3.1-ls185
imagePullPolicy: IfNotPresent
env:
PGID: "1000"
PUID: "1000"
TZ: UTC
envFrom:
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 50m
memory: 256Mi
serviceAccount:
create: true
service:
http:
port: 80
ingress:
enabled: false
annotations:
className:
host:
persistence:
config:
storageClassName: default
storageSize: 5Gi
volumeMode: Filesystem
books:
claimName:

View File

@@ -0,0 +1,12 @@
apiVersion: v2
name: freshrss
version: 0.0.3
description: Chart for Freshrss
keywords:
- rss
sources:
- https://github.com/FreshRSS/FreshRSS
maintainers:
- name: alexlebens
icon: https://avatars.githubusercontent.com/u/9414285?s=48&v=4
appVersion: "1.23.1"

18
charts/freshrss/README.md Normal file
View File

@@ -0,0 +1,18 @@
## Introduction
[FreshRSS](https://github.com/FreshRSS/FreshRSS)
FreshRSS is a self-hosted RSS feed aggregator.
It is lightweight, easy to work with, powerful, and customizable.
This chart bootstraps a [FreshRSS](https://github.com/FreshRSS/FreshRSS) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
## Prerequisites
- Kubernetes
- Helm
## Parameters
See the [values files](values.yaml).

View File

@@ -0,0 +1,76 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace | quote }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
revisionHistoryLimit: 3
replicas: {{ .Values.deployment.replicas }}
strategy:
type: {{ .Values.deployment.strategy }}
selector:
matchLabels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
template:
metadata:
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
serviceAccountName: {{ .Release.Name }}
containers:
- name: {{ .Release.Name }}
image: "{{ .Values.deployment.image.repository }}:{{ .Values.deployment.image.tag }}"
imagePullPolicy: {{ .Values.deployment.image.imagePullPolicy }}
ports:
- name: http
containerPort: {{ .Values.service.http.port }}
protocol: TCP
volumeMounts:
- name: {{ .Release.Name }}-config
mountPath: /config
resources:
{{- toYaml .Values.deployment.resources | nindent 12 }}
env:
- name: LISTEN
value: "0.0.0.0:{{ .Values.service.http.port }}"
{{- range $k,$v := .Values.deployment.env }}
- name: {{ $k }}
value: {{ $v | quote }}
{{- end }}
{{- with .Values.deployment.envFrom }}
envFrom:
{{- toYaml . | nindent 12 }}
{{- end }}
livenessProbe:
tcpSocket:
port: {{ .Values.service.http.port }}
initialDelaySeconds: 0
failureThreshold: 3
timeoutSeconds: 1
periodSeconds: 10
readinessProbe:
tcpSocket:
port: {{ .Values.service.http.port }}
initialDelaySeconds: 0
failureThreshold: 3
timeoutSeconds: 1
periodSeconds: 10
startupProbe:
tcpSocket:
port: {{ .Values.service.http.port }}
initialDelaySeconds: 0
failureThreshold: 30
timeoutSeconds: 1
periodSeconds: 5
volumes:
- name: {{ .Release.Name }}-config
persistentVolumeClaim:
claimName: {{ .Release.Name }}-config

View File

@@ -0,0 +1,32 @@
{{- if .Values.ingress.enabled }}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
annotations:
{{- toYaml .Values.ingress.annotations | nindent 4 }}
spec:
ingressClassName: {{ .Values.ingress.className }}
tls:
- hosts:
- {{ .Values.ingress.host }}
secretName: {{ .Release.Name }}-secret-tls
rules:
- host: {{ .Values.ingress.host }}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: {{ .Release.Name }}
port:
name: http
{{- end }}

View File

@@ -0,0 +1,19 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ .Release.Name }}-config
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: storage
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.persistence.config.storageSize }}
storageClassName: {{ .Values.persistence.config.storageClassName }}
volumeMode: {{ .Values.persistence.config.volumeMode }}

View File

@@ -0,0 +1,26 @@
apiVersion: v1
kind: Pod
metadata:
name: "{{ .Release.Name }}-test-connection"
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
annotations:
"helm.sh/hook": test-success
spec:
restartPolicy: Never
containers:
- name: wget
image: busybox
command: ['wget']
args: ['{{ .Release.Name }}:{{ .Values.service.http.port }}']
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 50m
memory: 256Mi

View File

@@ -0,0 +1,11 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}

View File

@@ -0,0 +1,21 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
type: ClusterIP
ports:
- port: {{ .Values.service.http.port }}
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}

View File

@@ -0,0 +1,33 @@
deployment:
replicas: 1
strategy: Recreate
image:
repository: freshrss/freshrss
tag: 1.23.1
imagePullPolicy: IfNotPresent
env:
PGID: "568"
PUID: "568"
TZ: UTC
FRESHRSS_ENV: production
envFrom:
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 50m
memory: 256Mi
service:
http:
port: 80
ingress:
enabled: true
className:
annotations:
host:
persistence:
config:
storageClassName: default
storageSize: 5Gi
volumeMode: Filesystem

View File

@@ -1,6 +1,6 @@
apiVersion: v2
name: home-assistant
version: 0.0.14
version: 0.1.4
description: Chart for Home Assistant
keywords:
- home-automation
@@ -9,4 +9,4 @@ sources:
maintainers:
- name: alexlebens
icon: https://avatars.githubusercontent.com/u/13844975?s=200&v=4
appVersion: v2024.2.5
appVersion: v2024.3.3

View File

@@ -4,12 +4,11 @@ metadata:
name: home-assistant
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: home-assistant
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
app.kubernetes.io/managed-by: helm
spec:
revisionHistoryLimit: 3
replicas: {{ .Values.deployment.replicas }}
@@ -17,15 +16,15 @@ spec:
type: {{ .Values.deployment.strategy }}
selector:
matchLabels:
app.kubernetes.io/name: home-assistant
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
template:
metadata:
labels:
app.kubernetes.io/name: home-assistant
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
serviceAccountName: home-assistant
serviceAccountName: {{ .Release.Name }}
automountServiceAccountToken: true
containers:
- name: {{ .Release.Name }}
@@ -96,4 +95,4 @@ spec:
volumes:
- name: home-assistant-config
persistentVolumeClaim:
claimName: home-assistant-config
claimName: "{{ .Release.Name }}-config"

View File

@@ -2,15 +2,14 @@
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: home-assistant
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: home-assistant
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: home-assistant
app.kubernetes.io/managed-by: helm
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
entryPoints:
- websecure
@@ -18,12 +17,12 @@ spec:
- kind: Rule
match: "Host(`{{ .Values.ingressRoute.host }}`)"
middlewares:
- name: authentik
namespace: {{ .Release.Namespace }}
- name: "authentik-{{ .Release.Name }}"
namespace: {{ .Release.Namespace }}
priority: 10
services:
- kind: Service
name: home-assistant
name: {{ .Release.Name }}
port: {{ .Values.service.http.port }}
- kind: Rule
match: "Host(`{{ .Values.ingressRoute.host }}`) && PathPrefix(`/outpost.goauthentik.io/`)"
@@ -31,7 +30,7 @@ spec:
services:
- kind: Service
name: {{ .Values.ingressRoute.authentik.outpost }}
port: {{ .Values.ingressRoute.authentik.port }}
port: {{ .Values.ingressRoute.authentik.port }}
{{- end }}
---
@@ -39,24 +38,33 @@ spec:
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: home-assistant-codeserver
name: "{{ .Release.Name }}-codeserver"
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: home-assistant
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: home-assistant
app.kubernetes.io/managed-by: helm
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
entryPoints:
- websecure
routes:
- kind: Rule
match: "Host(`{{ .Values.codeserver.ingressRoute.host }}`)"
middlewares:
- name: "authentik-{{ .Release.Name }}"
namespace: {{ .Release.Namespace }}
priority: 10
services:
- kind: Service
name: home-assistant-codeserver
name: "{{ .Release.Name }}-codeserver"
port: {{ .Values.codeserver.service.http.port }}
{{- end }}
- kind: Rule
match: "Host(`{{ .Values.ingressRoute.host }}`) && PathPrefix(`/outpost.goauthentik.io/`)"
priority: 15
services:
- kind: Service
name: {{ .Values.ingressRoute.authentik.outpost }}
port: {{ .Values.ingressRoute.authentik.port }}
{{- end }}

View File

@@ -2,15 +2,14 @@
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: authentik
name: "authentik-{{ .Release.Name }}"
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: home-assistant
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: auth
app.kubernetes.io/part-of: home-assistant
app.kubernetes.io/managed-by: helm
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
forwardAuth:
address: "http://{{ .Values.ingressRoute.authentik.outpost }}.authentik:{{ .Values.ingressRoute.authentik.port }}/outpost.goauthentik.io/auth/traefik"

View File

@@ -1,15 +1,14 @@
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: home-assistant-config
name: "{{ .Release.Name }}-config"
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: home-assistant
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
app.kubernetes.io/managed-by: helm
spec:
accessModes:
- ReadWriteOnce

View File

@@ -2,15 +2,14 @@
apiVersion: monitoring.coreos.com/v1
kind: PrometheusRule
metadata:
name: home-assistant
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: home-assistant
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: home-assistant
app.kubernetes.io/managed-by: helm
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
groups:
- name: {{ .Release.Name }}

View File

@@ -1,12 +1,11 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: home-assistant
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: home-assistant
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: home-assistant
app.kubernetes.io/managed-by: helm
app.kubernetes.io/part-of: {{ .Release.Name }}

View File

@@ -2,19 +2,18 @@
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: home-assistant
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: home-assistant
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: home-assistant
app.kubernetes.io/managed-by: helm
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
selector:
matchLabels:
app.kubernetes.io/name: home-assistant
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
endpoints:
- port: http

View File

@@ -1,15 +1,14 @@
apiVersion: v1
kind: Service
metadata:
name: home-assistant
namespace: {{ .Release.Namespace }}
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: home-assistant
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
app.kubernetes.io/managed-by: helm
spec:
type: ClusterIP
ports:
@@ -18,7 +17,7 @@ spec:
protocol: TCP
name: http
selector:
app.kubernetes.io/name: home-assistant
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
---
@@ -26,15 +25,14 @@ spec:
apiVersion: v1
kind: Service
metadata:
name: home-assistant-codeserver
namespace: {{ .Release.Namespace }}
name: "{{ .Release.Name }}-codeserver"
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: home-assistant
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
app.kubernetes.io/managed-by: helm
spec:
type: ClusterIP
ports:
@@ -43,6 +41,6 @@ spec:
protocol: TCP
name: codeserver-http
selector:
app.kubernetes.io/name: home-assistant
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}

View File

@@ -3,10 +3,10 @@ deployment:
strategy: Recreate
image:
repository: homeassistant/home-assistant
tag: 2024.2.5
tag: 2024.3.3
imagePullPolicy: IfNotPresent
env:
TZ: US/Mountain
TZ: UTC
envFrom:
resources:
requests:
@@ -20,9 +20,9 @@ service:
port: 8123
ingressRoute:
enabled: true
host: homeassistant.alexlebens.net
host:
authentik:
outpost: authentik-proxy-outpost
outpost:
port: 9000
metrics:
enabled: false
@@ -49,17 +49,17 @@ metrics:
severity: critical
persistence:
config:
storageClassName: ceph-block
storageClassName: default
storageSize: 1Gi
volumeMode: Filesystem
codeserver:
enabled: true
enabled: false
image:
repository: linuxserver/code-server
tag: 4.22.0
tag: 4.22.1
imagePullPolicy: IfNotPresent
env:
TZ: US/Mountain
TZ: UTC
PUID: 1000
PGID: 1000
DEFAULT_WORKSPACE: /config
@@ -70,5 +70,5 @@ codeserver:
http:
port: 8443
ingressRoute:
enabled: true
host: codeserver.homeassistant.alexlebens.net
enabled: false
host:

View File

@@ -1,6 +1,6 @@
apiVersion: v2
name: homepage
version: 0.0.5
version: 0.0.9
description: Chart for benphelps homepage
keywords:
- dashboard
@@ -9,4 +9,4 @@ sources:
maintainers:
- name: alexlebens
icon: https://github.com/benphelps/homepage/blob/de584eae8f12a0d257e554e9511ef19bd2a1232c/public/mstile-150x150.png
appVersion: v0.8.8
appVersion: v0.8.10

View File

@@ -1,19 +1,18 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: homepage
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: homepage
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: homepage
app.kubernetes.io/managed-by: helm
app.kubernetes.io/part-of: {{ .Release.Name }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: homepage
name: {{ .Release.Name }}
subjects:
- kind: ServiceAccount
name: homepage

View File

@@ -1,15 +1,14 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: homepage
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: homepage
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: homepage
app.kubernetes.io/managed-by: helm
app.kubernetes.io/part-of: {{ .Release.Name }}
rules:
- apiGroups:
- ""

View File

@@ -9,7 +9,6 @@ metadata:
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: homepage
app.kubernetes.io/managed-by: helm
data:
bookmarks.yaml: {{- if .Values.config.bookmarks }} |
{{- .Values.config.bookmarks | toYaml | nindent 4}}

View File

@@ -9,7 +9,6 @@ metadata:
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: homepage
app.kubernetes.io/managed-by: helm
spec:
revisionHistoryLimit: 3
replicas: {{ .Values.deployment.replicas }}

View File

@@ -9,7 +9,6 @@ metadata:
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: homepage
app.kubernetes.io/managed-by: helm
spec:
entryPoints:
- websecure
@@ -17,7 +16,7 @@ spec:
- kind: Rule
match: "Host(`{{ .Values.ingressRoute.host }}`)"
middlewares:
- name: authentik
- name: "authentik-{{ .Release.Name }}"
namespace: {{ .Release.Namespace }}
priority: 10
services:

View File

@@ -1,15 +1,14 @@
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
name: authentik
name: "authentik-{{ .Release.Name }}"
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: homepage
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: auth
app.kubernetes.io/part-of: homepage
app.kubernetes.io/managed-by: helm
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
forwardAuth:
address: "http://{{ .Values.ingressRoute.authentik.outpost }}.authentik:{{ .Values.ingressRoute.authentik.port }}/outpost.goauthentik.io/auth/traefik"

View File

@@ -10,6 +10,5 @@ metadata:
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: homepage
app.kubernetes.io/managed-by: helm
annotations:
kubernetes.io/service-account.name: homepage

View File

@@ -9,6 +9,5 @@ metadata:
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: homepage
app.kubernetes.io/managed-by: helm
secrets:
- name: "{{ .Release.Name }}-sa-token"

View File

@@ -9,7 +9,6 @@ metadata:
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: homepage
app.kubernetes.io/managed-by: helm
spec:
type: ClusterIP
ports:

View File

@@ -3,7 +3,7 @@ deployment:
strategy: Recreate
image:
repository: ghcr.io/gethomepage/homepage
tag: v0.8.8
tag: v0.8.10
imagePullPolicy: IfNotPresent
env:
envFrom:
@@ -13,14 +13,14 @@ deployment:
cpu: 50m
limits:
memory: 512Mi
cpu: 500m
cpu: 500m
service:
http:
port: 3000
ingressRoute:
host: homepage.alexlebens.net
host:
authentik:
outpost: authentik-proxy-outpost
outpost:
port: 9000
config:
bookmarks:

View File

@@ -1,6 +1,6 @@
apiVersion: v2
name: kubelet-serving-cert-approver
version: 0.0.3
version: 0.0.4
description: Kubelet Serving TLS Certificate Signing Request Approver
keywords:
- kubernetes

View File

@@ -1,15 +1,14 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: {{ .Release.Name }}
name: kubelet-serving-cert-approver
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/name: kubelet-serving-cert-approver
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: server
app.kubernetes.io/part-of: {{ .Release.Name }}
app.kubernetes.io/managed-by: helm
app.kubernetes.io/part-of: kubelet-serving-cert-approver
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole

View File

@@ -4,12 +4,11 @@ metadata:
name: "certificates:{{ .Release.Name }}"
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/name: kubelet-serving-cert-approver
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: server
app.kubernetes.io/part-of: {{ .Release.Name }}
app.kubernetes.io/managed-by: helm
app.kubernetes.io/part-of: kubelet-serving-cert-approver
rules:
- apiGroups:
- certificates.k8s.io
@@ -47,12 +46,11 @@ metadata:
name: "events:{{ .Release.Name }}"
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/name: kubelet-serving-cert-approver
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: server
app.kubernetes.io/part-of: {{ .Release.Name }}
app.kubernetes.io/managed-by: helm
app.kubernetes.io/part-of: kubelet-serving-cert-approverv
rules:
- apiGroups:
- ""

View File

@@ -1,15 +1,14 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Release.Name }}
name: kubelet-serving-cert-approver
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/name: kubelet-serving-cert-approver
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: server
app.kubernetes.io/part-of: {{ .Release.Name }}
app.kubernetes.io/managed-by: helm
app.kubernetes.io/part-of: kubelet-serving-cert-approver
spec:
revisionHistoryLimit: 3
replicas: {{ .Values.deployment.replicas }}
@@ -17,13 +16,14 @@ spec:
type: {{ .Values.deployment.strategy }}
selector:
matchLabels:
app.kubernetes.io/name: kubelet-serving-cert-approver
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/name: {{ .Release.Name }}
template:
metadata:
labels:
app.kubernetes.io/name: kubelet-serving-cert-approver
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/name: {{ .Release.Name }}
spec:
affinity:
nodeAffinity:
@@ -43,7 +43,7 @@ spec:
- containerPort: 8080
name: health
- containerPort: 9090
name: metrics
name: metrics
args:
- serve
env:
@@ -52,7 +52,7 @@ spec:
fieldRef:
fieldPath: metadata.namespace
resources:
{{- toYaml .Values.deployment.resources | nindent 12 }}
{{- toYaml .Values.deployment.resources | nindent 12 }}
livenessProbe:
httpGet:
path: /healthz
@@ -78,7 +78,7 @@ spec:
runAsUser: 65534
seccompProfile:
type: RuntimeDefault
serviceAccountName: {{ .Release.Name }}
serviceAccountName: kubelet-serving-cert-approver
tolerations:
- effect: NoSchedule
key: node-role.kubernetes.io/master

View File

@@ -1,10 +1,10 @@
apiVersion: v1
kind: Namespace
metadata:
name: {{ .Release.Name }}
name: kubelet-serving-cert-approver
labels:
app.kubernetes.io/name: kubelet-serving-cert-approver
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/name: {{ .Release.Name }}
pod-security.kubernetes.io/audit: restricted
pod-security.kubernetes.io/enforce: restricted
pod-security.kubernetes.io/warn: restricted

View File

@@ -4,17 +4,16 @@ metadata:
name: "events:{{ .Release.Name }}"
namespace: default
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/name: kubelet-serving-cert-approver
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: server
app.kubernetes.io/part-of: {{ .Release.Name }}
app.kubernetes.io/managed-by: helm
app.kubernetes.io/part-of: kubelet-serving-cert-approver
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: "events:{{ .Release.Name }}"
subjects:
- kind: ServiceAccount
name: {{ .Release.Name }}
name: kubelet-serving-cert-approver
namespace: {{ .Release.Name }}

View File

@@ -1,12 +1,11 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ .Release.Name }}
name: kubelet-serving-cert-approver
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/name: kubelet-serving-cert-approver
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: server
app.kubernetes.io/part-of: {{ .Release.Name }}
app.kubernetes.io/managed-by: helm
app.kubernetes.io/part-of: kubelet-serving-cert-approver

View File

@@ -1,15 +1,14 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name }}
name: kubelet-serving-cert-approver
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/name: kubelet-serving-cert-approver
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: server
app.kubernetes.io/part-of: {{ .Release.Name }}
app.kubernetes.io/managed-by: helm
app.kubernetes.io/part-of: kubelet-serving-cert-approver
spec:
ports:
- name: metrics
@@ -17,5 +16,5 @@ spec:
protocol: TCP
targetPort: metrics
selector:
app.kubernetes.io/name: kubelet-serving-cert-approver
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/name: {{ .Release.Name }}

View File

@@ -1,9 +1,10 @@
apiVersion: v2
name: libation
version: 0.0.1
description: Chart for benphelps homepage
version: 0.0.6
description: Import library from audible
keywords:
- dashboard
- audiobooks
- job
sources:
- https://github.com/rmcrackan/Libation
maintainers:

18
charts/libation/README.md Normal file
View File

@@ -0,0 +1,18 @@
## Introduction
[Libation](https://github.com/rmcrackan/Libation)
Libation: Liberate your Library. Import library from audible, including cover art
This chart bootstraps a [Libation](https://github.com/benphelps/homepage) CronJob on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
## Prerequisites
- Kubernetes
- Helm
- CronJob
## Parameters
See the [values files](values.yaml).

View File

@@ -10,7 +10,7 @@ metadata:
app.kubernetes.io/component: job
app.kubernetes.io/part-of: libation
spec:
schedule: {{ .Values.libation.job.schedule }}
schedule: {{ .Values.job.schedule }}
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 3
jobTemplate:
@@ -20,8 +20,8 @@ spec:
restartPolicy: Never
containers:
- name: libation
image: "{{ .Values.libation.image.repository }}:{{ .Values.libation.image.tag }}"
imagePullPolicy: {{ .Values.libation.image.pullPolicy }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
env:
- name: SLEEP_TIME
value: "-1"

View File

@@ -1,14 +1,13 @@
libation:
job:
schedule: "0 * * * *"
image:
repository: rmcrackan/libation
tag: "11.1.0"
pullPolicy: IfNotPresent
job:
schedule: "0 * * * *"
image:
repository: rmcrackan/libation
tag: "11.1.0"
pullPolicy: IfNotPresent
persistence:
config:
storageClassName: nfs-client
storageClassName: default
storageSize: 1Gi
volumeMode: Filesystem
books:
claimName: libation-nfs-storage
claimName:

View File

@@ -0,0 +1,14 @@
apiVersion: v2
name: matrix-hookshot
version: 0.0.6
description: Chart for Matrix Hookshot
keywords:
- matrix
- matrix-hookshot
- webhook
sources:
- https://github.com/matrix-org/matrix-hookshot
maintainers:
- name: alexlebens
icon: https://avatars.githubusercontent.com/u/8418310?s=48&v=4
appVersion: "5.2.1"

View File

@@ -0,0 +1,32 @@
{{/*
Helper for secret name
*/}}
{{- define "hookshot.secretName" -}}
{{- if .Values.hookshot.existingSecret }}
{{- printf "%s" .Values.hookshot.existingSecret -}}
{{- else }}
{{- printf "matrix-hookshot-config-secret" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{/*
Helper for registration secret name
*/}}
{{- define "hookshot.registrationSecretName" -}}
{{- if .Values.hookshot.existingRegistrationSecret }}
{{- printf "%s" .Values.hookshot.existingRegistrationSecret -}}
{{- else }}
{{- printf "matrix-hookshot-registration-secret" }}
{{- end }}
{{- end }}
{{/*
Helper for passkey secret name
*/}}
{{- define "hookshot.passkeySecretName" -}}
{{- if .Values.hookshot.existingPasskeySecret }}
{{- printf "%s" .Values.hookshot.existingPasskeySecret -}}
{{- else }}
{{- printf "matrix-hookshot-passkey-secret" }}
{{- end }}
{{- end }}

View File

@@ -0,0 +1,76 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: matrix-hookshot
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: matrix-hookshot
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
revisionHistoryLimit: 3
replicas: {{ .Values.deployment.replicas }}
strategy:
type: {{ .Values.deployment.strategy }}
selector:
matchLabels:
app.kubernetes.io/name: matrix-hookshot
app.kubernetes.io/instance: {{ .Release.Name }}
template:
metadata:
labels:
app.kubernetes.io/name: matrix-hookshot
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
serviceAccountName: {{ .Release.Name }}
automountServiceAccountToken: true
containers:
- name: matrix-hookshot
image: "{{ .Values.deployment.image.repository }}:{{ .Values.deployment.image.tag }}"
imagePullPolicy: {{ .Values.deployment.image.imagePullPolicy }}
ports:
- name: webhook
containerPort: {{ .Values.service.webhook.port }}
protocol: TCP
- name: metrics
containerPort: {{ .Values.service.metrics.port }}
protocol: TCP
- name: appservice
containerPort: {{ .Values.service.appservice.port }}
protocol: TCP
env:
{{- range $k,$v := .Values.deployment.env }}
- name: {{ $k }}
value: {{ $v | quote }}
{{- end }}
{{- with .Values.deployment.envFrom }}
envFrom:
{{- toYaml . | nindent 12 }}
{{- end }}
resources:
{{- toYaml .Values.deployment.resources | nindent 12 }}
volumeMounts:
- name: config
mountPath: /data/config.yml
subPath: config.yml
readOnly: true
- name: registration
mountPath: /data/registration.yml
subPath: registration.yml
readOnly: true
- name: passkey
mountPath: "/data/{{ .Values.hookshot.config.passFile }}"
subPath: "{{ .Values.hookshot.config.passFile }}"
readOnly: true
volumes:
- name: config
secret:
secretName: {{ template "hookshot.secretName" . }}
- name: registration
secret:
secretName: {{ template "hookshot.registrationSecretName" . }}
- name: passkey
secret:
secretName: {{ template "hookshot.passkeySecretName" . }}

View File

@@ -0,0 +1,66 @@
{{- if .Values.ingress.webhook.enabled }}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: matrix-hookshot-webhook
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: matrix-hookshot-webhook
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
annotations:
{{- toYaml .Values.ingress.webhook.annotations | nindent 4 }}
spec:
ingressClassName: {{ .Values.ingress.webhook.className }}
tls:
- hosts:
- {{ .Values.ingress.webhook.host }}
secretName: {{ .Release.Name }}-webhook-secret-tls
rules:
- host: {{ .Values.ingress.webhook.host }}
http:
paths:
- path: /webhook/
pathType: Prefix
backend:
service:
name: {{ .Release.Name }}
port:
name: webhook
{{- end }}
---
{{- if .Values.ingress.appservice.enabled }}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: matrix-hookshot-appservice
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: matrix-hookshot-appservice
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
annotations:
{{- toYaml .Values.ingress.appservice.annotations | nindent 4 }}
spec:
ingressClassName: {{ .Values.ingress.appservice.className }}
tls:
- hosts:
- {{ .Values.ingress.appservice.host }}
secretName: {{ .Release.Name }}-appservice-secret-tls
rules:
- host: {{ .Values.ingress.appservice.host }}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: {{ .Release.Name }}
port:
name: appservice
{{- end }}

View File

@@ -0,0 +1,26 @@
apiVersion: v1
kind: Pod
metadata:
name: matrix-hookshot-test-connection
labels:
app.kubernetes.io/name: matrix-hookshot-test-connection
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
annotations:
"helm.sh/hook": test-success
spec:
restartPolicy: Never
containers:
- name: wget
image: busybox
command: ['wget']
args: ['matrix-hookshot:{{ .Values.service.webhook.port }}']
resources:
limits:
cpu: 500m
memory: 1Gi
requests:
cpu: 50m
memory: 256Mi

View File

@@ -0,0 +1,52 @@
{{- if not .Values.hookshot.existingSecret }}
apiVersion: v1
kind: Secret
metadata:
name: matrix-hookshot-config-secret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: matrix-hookshot-config
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
data:
config.yml: |
{{ toYaml .Values.hookshot.config | indent 4 }}
{{- end }}
---
{{- if not .Values.hookshot.existingRegistrationSecret }}
apiVersion: v1
kind: Secret
metadata:
name: matrix-hookshot-registration-secret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: matrix-hookshot-registration
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
data:
registration.yml: |
{{ toYaml .Values.hookshot.registration | indent 4 }}
{{- end }}
---
{{- if not .Values.hookshot.existingPasskeySecret }}
apiVersion: v1
kind: Secret
metadata:
name: matrix-hookshot-passkey-secret
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: matrix-hookshot-passkey
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
data:
{{ .Values.hookshot.config.passFile }}: |
{{ toYaml .Values.hookshot.passkey | indent 4 }}
{{- end }}

View File

@@ -0,0 +1,11 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: matrix-hookshot
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: matrix-hookshot
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}

View File

@@ -0,0 +1,23 @@
{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: matrix-hookshot
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: matrix-hookshot
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
endpoints:
- port: metrics
interval: {{ .Values.metrics.serviceMonitor.interval }}
scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }}
path: /metrics
selector:
matchLabels:
app.kubernetes.io/name: matrix-hookshot
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}

View File

@@ -0,0 +1,29 @@
apiVersion: v1
kind: Service
metadata:
name: matrix-hookshot
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: matrix-hookshot
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
type: {{ .Values.service.type }}
ports:
- port: {{ .Values.service.webhook.port }}
targetPort: webhook
protocol: TCP
name: webhook
- port: {{ .Values.service.metrics.port }}
targetPort: metrics
protocol: TCP
name: metrics
- port: {{ .Values.service.appservice.port }}
targetPort: appservice
protocol: TCP
name: appservice
selector:
app.kubernetes.io/name: matrix-hookshot
app.kubernetes.io/instance: {{ .Release.Name }}

View File

@@ -0,0 +1,241 @@
deployment:
replicas: 1
strategy: Recreate
image:
repository: halfshot/matrix-hookshot
tag: "4.5.1"
imagePullPolicy: IfNotPresent
env: {}
envFrom: []
resources:
limits:
memory: 512Mi
cpu: 100m
requests:
memory: 256Mi
cpu: 50m
service:
type: ClusterIP
webhook:
port: 9000
metrics:
port: 9001
appservice:
port: 9002
ingress:
webhook:
enabled: false
className: ""
annotations: {}
host: ""
appservice:
enabled: false
className: ""
annotations: {}
host: ""
metrics:
enabled: false
serviceMonitor:
enabled: false
interval: 15s
scrapeTimeout: 5s
# Reference the following for examples
# https://matrix-org.github.io/matrix-hookshot/latest/setup/sample-configuration.html
hookshot:
# config.yml contents
existingSecret: ""
config:
bridge:
domain: example.com
url: http://localhost:8008
mediaUrl: https://example.com
port: 9993
bindAddress: 0.0.0.0
passFile: passkey.pem
logging:
level: info
colorize: true
json: false
timestampFormat: HH:mm:ss:SSS
listeners:
- port: 9000
bindAddress: 0.0.0.0
resources:
- webhooks
- port: 9001
bindAddress: 0.0.0.0
resources:
- metrics
- provisioning
- port: 9002
bindAddress: 0.0.0.0
resources:
- widgets
#github:
# # (Optional) Configure this to enable GitHub support
# auth:
# # Authentication for the GitHub App.
# id: 123
# privateKeyFile: github-key.pem
# webhook:
# # Webhook settings for the GitHub app.
# secret: secrettoken
# oauth:
# # (Optional) Settings for allowing users to sign in via OAuth.
# client_id: foo
# client_secret: bar
# redirect_uri: https://example.com/oauth/
# defaultOptions:
# # (Optional) Default options for GitHub connections.
# showIssueRoomLink: false
# hotlinkIssues:
# prefix: "#"
# userIdPrefix:
# # (Optional) Prefix used when creating ghost users for GitHub accounts.
# _github_
#gitlab:
# # (Optional) Configure this to enable GitLab support
# instances:
# gitlab.com:
# url: https://gitlab.com
# webhook:
# secret: secrettoken
# publicUrl: https://example.com/hookshot/
# userIdPrefix:
# # (Optional) Prefix used when creating ghost users for GitLab accounts.
# _gitlab_
# commentDebounceMs:
# # (Optional) Aggregate comments by waiting this many miliseconds before posting them to Matrix. Defaults to 5000 (5 seconds)
# 5000
#figma:
# # (Optional) Configure this to enable Figma support
# publicUrl: https://example.com/hookshot/
# instances:
# your-instance:
# teamId: your-team-id
# accessToken: your-personal-access-token
# passcode: your-webhook-passcode
#jira:
# # (Optional) Configure this to enable Jira support. Only specify `url` if you are using a On Premise install (i.e. not atlassian.com)
# webhook:
# # Webhook settings for JIRA
# secret: secrettoken
# oauth:
# # (Optional) OAuth settings for connecting users to JIRA. See documentation for more information
# client_id: foo
# client_secret: bar
# redirect_uri: https://example.com/oauth/
#generic:
# # (Optional) Support for generic webhook events.
# #'allowJsTransformationFunctions' will allow users to write short transformation snippets in code, and thus is unsafe in untrusted environments
# enabled: false
# enableHttpGet: false
# urlPrefix: https://example.com/webhook/
# userIdPrefix: _webhooks_
# allowJsTransformationFunctions: false
# waitForComplete: false
#feeds:
# # (Optional) Configure this to enable RSS/Atom feed support
# enabled: false
# pollConcurrency: 4
# pollIntervalSeconds: 600
# pollTimeoutSeconds: 30
#provisioning:
# # (Optional) Provisioning API for integration managers
# secret: "!secretToken"
#bot:
# # (Optional) Define profile information for the bot user
# displayname: Hookshot Bot
# avatar: mxc://half-shot.uk/2876e89ccade4cb615e210c458e2a7a6883fe17d
#serviceBots:
# # (Optional) Define additional bot users for specific services
# - localpart: feeds
# displayname: Feeds
# avatar: ./assets/feeds_avatar.png
# prefix: "!feeds"
# service: feeds
#metrics:
# # (Optional) Prometheus metrics support
# enabled: true
#cache:
# # (Optional) Cache options for large scale deployments.
# # For encryption to work, this must be configured.
# redisUri: redis://localhost:6379
#queue:
# # (Optional) Message queue configuration options for large scale deployments.
# # For encryption to work, this must not be configured.
# redisUri: redis://localhost:6379
#widgets:
# # (Optional) EXPERIMENTAL support for complimentary widgets
# addToAdminRooms: false
# disallowedIpRanges:
# - 127.0.0.0/8
# - 10.0.0.0/8
# - 172.16.0.0/12
# - 192.168.0.0/16
# - 100.64.0.0/10
# - 192.0.0.0/24
# - 169.254.0.0/16
# - 192.88.99.0/24
# - 198.18.0.0/15
# - 192.0.2.0/24
# - 198.51.100.0/24
# - 203.0.113.0/24
# - 224.0.0.0/4
# - ::1/128
# - fe80::/10
# - fc00::/7
# - 2001:db8::/32
# - ff00::/8
# - fec0::/10
# roomSetupWidget:
# addOnInvite: false
# publicUrl: https://example.com/widgetapi/v1/static/
# branding:
# widgetTitle: Hookshot Configuration
#sentry:
# # (Optional) Configure Sentry error reporting
# dsn: https://examplePublicKey@o0.ingest.sentry.io/0
# environment: production
#permissions:
# # (Optional) Permissions for using the bridge. See docs/setup.md#permissions for help
# - actor: example.com
# services:
# - service: "*"
# level: admin
# registration.yml contents
existingRegistrationSecret: ""
registration:
id: matrix-hookshot
as_token: ""
hs_token: ""
namespaces:
rooms: []
users: []
sender_localpart: hookshot
url: "http://example.com"
rate_limited: false
# A passkey used to encrypt tokens stored inside the bridge.
# Run openssl genpkey -out passkey.pem -outform PEM -algorithm RSA -pkeyopt rsa_keygen_bits:4096 to generate
existingPasskeySecret: ""
passkey: ""

18
charts/outline/Chart.yaml Normal file
View File

@@ -0,0 +1,18 @@
apiVersion: v2
name: outline
version: 0.0.9
description: Chart for Outline wiki
keywords:
- wiki
- documentation
sources:
- https://github.com/outline/outline
- https://github.com/bitnami/charts/tree/main/bitnami/redis
maintainers:
- name: alexlebens
icon: https://avatars.githubusercontent.com/u/1765001?s=48&v=4
dependencies:
- name: redis
repository: https://charts.bitnami.com/bitnami
version: 18.19.4
appVersion: v0.75.2

17
charts/outline/README.md Normal file
View File

@@ -0,0 +1,17 @@
## Introduction
[Outline](https://github.com/outline/outline)
The fastest knowledge base for growing teams. Beautiful, realtime collaborative, feature packed, and markdown compatible.
This chart bootstraps an [Outline](https://github.com/outline/outline) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
## Prerequisites
- Kubernetes
- Helm
- Bitnami Redis Chart
## Parameters
See the [values files](values.yaml).

View File

@@ -0,0 +1,201 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: outline
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: outline
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: outline
spec:
revisionHistoryLimit: 3
replicas: {{ .Values.deployment.replicas }}
strategy:
type: {{ .Values.deployment.strategy }}
selector:
matchLabels:
app.kubernetes.io/name: outline
app.kubernetes.io/instance: {{ .Release.Name }}
template:
metadata:
labels:
app.kubernetes.io/name: outline
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
serviceAccountName: outline
automountServiceAccountToken: true
containers:
- name: {{ .Release.Name }}
image: "{{ .Values.deployment.image.repository }}:{{ .Values.deployment.image.tag }}"
imagePullPolicy: {{ .Values.deployment.image.imagePullPolicy }}
ports:
- name: web
containerPort: {{ .Values.service.web.port }}
protocol: TCP
env:
- name: NODE_ENV
value: "{{ .Values.outline.nodeEnv }}"
- name: URL
value: "{{ .Values.outline.url }}"
- name: PORT
value: "{{ .Values.service.web.port }}"
- name: SECRET_KEY
valueFrom:
secretKeyRef:
name: "{{ .Values.outline.secretKey.existingSecretName }}"
key: "{{ .Values.outline.secretKey.existingSecretKey }}"
- name: UTILS_SECRET
valueFrom:
secretKeyRef:
name: "{{ .Values.outline.utilsSecret.existingSecretName }}"
key: "{{ .Values.outline.secretKey.existingSecretKey }}"
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: "{{ .Values.outline.database.passwordSecret.existingSecretName }}"
key: "{{ .Values.outline.database.passwordSecret.existingSecretKey }}"
- name: POSTGRES_USERNAME
valueFrom:
secretKeyRef:
name: "{{ .Values.outline.database.usernameSecret.existingSecretName }}"
key: "{{ .Values.outline.database.usernameSecret.existingSecretKey }}"
- name: POSTGRES_DATABASE_NAME
valueFrom:
secretKeyRef:
name: "{{ .Values.outline.database.databaseName.existingSecretName }}"
key: "{{ .Values.outline.database.databaseName.existingSecretKey }}"
- name: POSTGRES_DATABASE_HOST
valueFrom:
secretKeyRef:
name: "{{ .Values.outline.database.databaseHost.existingSecretName }}"
key: "{{ .Values.outline.database.databaseHost.existingSecretKey }}"
- name: DATABASE_URL
value: "postgres://$(POSTGRES_USERNAME):$(POSTGRES_PASSWORD)@postgresql-{{ .Release.Name }}-cluster-rw:5432/$(POSTGRES_DATABASE_NAME)"
- name: DATABASE_URL_TEST
value: "postgres://$(POSTGRES_USERNAME):$(POSTGRES_PASSWORD)@postgresql-{{ .Release.Name }}-cluster-rw:5432/$(POSTGRES_DATABASE_NAME)-test"
- name: DATABASE_CONNECTION_POOL_MIN
value: "{{ .Values.outline.database.connectionPoolMin }}"
- name: DATABASE_CONNECTION_POOL_MAX
value: "{{ .Values.outline.database.connectionPoolMax }}"
- name: PGSSLMODE
value: "{{ .Values.outline.database.sslMode }}"
- name: REDIS_URL
value: "redis://{{ .Release.Name }}-redis-master:6379"
- name: FILE_STORAGE
value: "{{ .Values.persistence.type }}"
{{- if eq .Values.persistence.type "s3" }}
- name: AWS_ACCESS_KEY_ID
valueFrom:
secretKeyRef:
name: "{{ .Values.persistence.s3.credentialsSecret }}"
key: AWS_ACCESS_KEY_ID
- name: AWS_SECRET_ACCESS_KEY
valueFrom:
secretKeyRef:
name: "{{ .Values.persistence.s3.credentialsSecret }}"
key: AWS_SECRET_ACCESS_KEY
{{- if .Values.persistence.s3.endpointConfigMap.enabled }}
- name: AWS_REGION
valueFrom:
configMapKeyRef:
name: "{{ .Values.persistence.s3.endpointConfigMap.name }}"
key: BUCKET_REGION
- name: AWS_S3_UPLOAD_BUCKET_NAME
valueFrom:
configMapKeyRef:
name: "{{ .Values.persistence.s3.endpointConfigMap.name }}"
key: BUCKET_NAME
- name: AWS_S3_UPLOAD_BUCKET_HOST
valueFrom:
configMapKeyRef:
name: "{{ .Values.persistence.s3.endpointConfigMap.name }}"
key: BUCKET_HOST
- name: AWS_S3_UPLOAD_BUCKET_PORT
valueFrom:
configMapKeyRef:
name: "{{ .Values.persistence.s3.endpointConfigMap.name }}"
key: BUCKET_PORT
- name: AWS_S3_UPLOAD_BUCKET_URL
value: "$(AWS_S3_UPLOAD_BUCKET_HOST):$(AWS_S3_UPLOAD_BUCKET_PORT)|"
{{- else }}
- name: AWS_REGION
value: "{{ .Values.persistence.s3.region }}"
- name: AWS_S3_UPLOAD_BUCKET_NAME
value: "{{ .Values.persistence.s3.bucketName }}"
- name: AWS_S3_UPLOAD_BUCKET_URL
value: "{{ .Values.persistence.s3.endpoint }}"
{{- end }}
- name: AWS_S3_FORCE_PATH_STYLE
value: "{{ .Values.persistence.s3.forcePathStyle }}"
- name: AWS_S3_ACL
value: "{{ .Values.persistence.s3.acl }}"
- name: FILE_STORAGE_UPLOAD_MAX_SIZE
value: "{{ .Values.persistence.s3.uploadMaxSize }}"
{{- else if eq .Values.persistence.type "local" }}
- name: FILE_STORAGE_LOCAL_ROOT_DIR
value: "{{ .Values.persistence.local.localRootDir }}"
- name: FILE_STORAGE_UPLOAD_MAX_SIZE
value: "{{ .Values.persistence.local.uploadMaxSize }}"
{{- end }}
- name: FORCE_HTTPS
value: "{{ .Values.outline.optional.forceHttps }}"
- name: ENABLE_UPDATES
value: "{{ .Values.outline.optional.enableUpdates }}"
- name: WEB_CONCURRENCY
value: "{{ .Values.outline.optional.webConcurrency }}"
- name: FILE_STORAGE_IMPORT_MAX_SIZE
value: "{{ .Values.outline.optional.maximumImportSize }}"
- name: LOG_LEVEL
value: "{{ .Values.outline.optional.logLevel }}"
- name: DEFAULT_LANGUAGE
value: "{{ .Values.outline.optional.defaultLanguage }}"
- name: RATE_LIMITER_ENABLED
value: "{{ .Values.outline.optional.rateLimiter.enabled }}"
- name: RATE_LIMITER_REQUESTS
value: "{{ .Values.outline.optional.rateLimiter.requests }}"
- name: RATE_LIMITER_DURATION_WINDOW
value: "{{ .Values.outline.optional.rateLimiter.durationWindow }}"
- name: DEVELOPMENT_UNSAFE_INLINE_CSP
value: "{{ .Values.outline.optional.developmentUnsafeInlineCsp }}"
{{- if .Values.outline.auth.oidc.enabled }}
- name: OIDC_CLIENT_ID
valueFrom:
secretKeyRef:
name: "{{ .Values.outline.auth.oidc.clientId.existingSecretName }}"
key: "{{ .Values.outline.auth.oidc.clientId.existingSecretKey }}"
- name: OIDC_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: "{{ .Values.outline.auth.oidc.clientSecret.existingSecretName }}"
key: "{{ .Values.outline.auth.oidc.clientSecret.existingSecretKey }}"
- name: OIDC_AUTH_URI
value: "{{ .Values.outline.auth.oidc.authUri }}"
- name: OIDC_TOKEN_URI
value: "{{ .Values.outline.auth.oidc.tokenUri }}"
- name: OIDC_USERINFO_URI
value: "{{ .Values.outline.auth.oidc.userinfoUri }}"
- name: OIDC_USERNAME_CLAIM
value: "{{ .Values.outline.auth.oidc.usernameClaim }}"
- name: OIDC_DISPLAY_NAME
value: "{{ .Values.outline.auth.oidc.displayName }}"
- name: OIDC_SCOPES
value: "{{ .Values.outline.auth.oidc.scopes }}"
{{- end }}
resources:
{{- toYaml .Values.deployment.resources | nindent 12 }}
{{- if eq .Values.persistence.type "local" }}
volumeMounts:
- name: "{{ .Release.Name }}-volume-claim"
mountPath: {{ .Values.persistence.local.localRootDir }}
volumes:
- name: "{{ .Release.Name }}-volume-claim"
persistentVolumeClaim:
claimName: "{{ .Release.Name }}-volume-claim"
{{- end }}

View File

@@ -0,0 +1,32 @@
{{- if .Values.ingress.enabled }}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
annotations:
{{- toYaml .Values.ingress.annotations | nindent 4 }}
spec:
ingressClassName: {{ .Values.ingress.className }}
tls:
- hosts:
- {{ .Values.ingress.host }}
secretName: {{ .Release.Name }}-secret-tls
rules:
- host: {{ .Values.ingress.host }}
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: {{ .Release.Name }}
port:
name: web
{{- end }}

View File

@@ -0,0 +1,20 @@
{{- if eq .Values.persistence.type "local" }}
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ .Release.Name }}-volume-claim
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: outline
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: storage
app.kubernetes.io/part-of: outline
spec:
storageClassName: {{ .Values.persistence.local.storageClassName }}
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.persistence.local.storageSize }}
{{- end }}

View File

@@ -0,0 +1,11 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: outline
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: outline
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: outline

View File

@@ -0,0 +1,21 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
type: ClusterIP
ports:
- port: {{ .Values.service.web.port }}
targetPort: web
protocol: TCP
name: web
selector:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}

View File

@@ -0,0 +1,96 @@
deployment:
replicas: 1
strategy: Recreate
image:
repository: outlinewiki/outline
tag: "0.75.2"
imagePullPolicy: IfNotPresent
resources:
requests:
memory: 256Mi
cpu: 50m
limits:
memory: 1Gi
cpu: 500m
service:
web:
port: 3000
ingress:
enabled: true
className:
annotations:
host:
persistence:
type: s3
s3:
credentialsSecret:
endpointConfigMap:
enabled: false
name:
region:
bucketName:
endpoint:
uploadMaxSize: "26214400"
forcePathStyle: false
acl: private
local:
storageClassName: default
storageSize: 50Gi
localRootDir: /var/lib/outline/data
uploadMaxSize: 26214400
redis:
architecture: standalone
auth:
enabled: false
outline:
nodeEnv: production
url:
secretKey:
existingSecretName: outline-key-secret
existingSecretKey: secret-key
utilsSecret:
existingSecretName: outline-key-secret
existingSecretKey: utils-key
database:
passwordSecret:
existingSecretName:
existingSecretKey:
usernameSecret:
existingSecretName:
existingSecretKey:
databaseName:
existingSecretName:
existingSecretKey:
databaseHost:
existingSecretName:
existingSecretKey:
connectionPoolMin: ""
connectionPoolMax: "20"
sslMode: disable
optional:
forceHttps: false
enableUpdates: false
webConcurrency: 1
maximumImportSize: 5120000
logLevel: info
defaultLanguage: en_US
rateLimiter:
enabled: false
requests: 1000
durationWindow: 60
developmentUnsafeInlineCsp: false
auth:
oidc:
enabled: true
clientId:
existingSecretName: outline-auth-secret
existingSecretKey: oidc-client-id
clientSecret:
existingSecretName: outline-auth-secret
existingSecretKey: oidc-client-secret
authUri:
tokenUri:
userinfoUri:
usernameClaim:
displayName:
scopes: openid profile email

View File

@@ -1,6 +1,6 @@
apiVersion: v2
name: postgres-cluster
version: 0.2.1
version: 0.2.3
description: Chart for cloudnative-pg cluster
keywords:
- database

View File

@@ -2,7 +2,7 @@
[CloudNative PG](https://github.com/cloudnative-pg/cloudnative-pg)
CloudNativePG is the Kubernetes operator that covers the full lifecycle of a highly available PostgreSQL database cluster with a primary/standby architecture, using native streaming replication.
CloudNativePG is the Kubernetes operator that covers the full lifecycle of a highly available PostgreSQL database cluster with a primary/standby architecture, using native streaming replication.
This chart bootstraps a [CNPG](https://github.com/cloudnative-pg/cloudnative-pg) cluster on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.

View File

@@ -9,7 +9,6 @@ metadata:
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: database
app.kubernetes.io/part-of: {{ .Release.Name }}
app.kubernetes.io/managed-by: helm
spec:
imageName: "{{ .Values.cluster.image.repository }}:{{ .Values.cluster.image.tag }}"
instances: {{ .Values.cluster.instances }}
@@ -39,7 +38,7 @@ spec:
{{- toYaml .Values.bootstrap.initdb | nindent 6 }}
{{- end }}
{{- if .Values.backup.recoveryEnabled }}
{{- if .Values.bootstrap.recoveryEnabled }}
bootstrap:
recovery:
source: "postgresql-{{ .Release.Name }}-cluster-backup-index-{{ .Values.bootstrap.recoveryIndex }}"

View File

@@ -19,16 +19,16 @@ cluster:
hugepages-2Mi: 512Mi
storage:
data:
storageClass: ceph-block
storageClass: default
size: 10Gi
wal:
storageClass: ceph-block
storageClass: default
size: 2Gi
bootstrap:
recoveryEnabled: false
recoveryIndex: 1
endpointURL: https://nyc3.digitaloceanspaces.com
bucket: alexlebens.net
endpointURL:
bucket:
initdbEnabled: false
initdb:
database: app
@@ -38,5 +38,5 @@ backup:
schedule: "0 0 0 * * *"
retentionPolicy: 14d
backupIndex: 1
endpointURL: https://nyc3.digitaloceanspaces.com
bucket: alexlebens.net
endpointURL:
bucket:

View File

@@ -0,0 +1,13 @@
apiVersion: v2
name: qbittorrent
version: 0.0.8
description: Chart for qBittorrent
keywords:
- downloads
- torrent
sources:
- https://github.com/qbittorrent/qBittorrent
maintainers:
- name: alexlebens
icon: https://avatars.githubusercontent.com/u/2131270?s=48&v=4
appVersion: version-4.6.3-r0

View File

@@ -0,0 +1,17 @@
## Introduction
[qBittorrent](https://github.com/qbittorrent/qBittorrent)
qBittorrent is a bittorrent client programmed in C++ / Qt that uses libtorrent
This chart bootstraps a [qBittorrent](https://github.com/qbittorrent/qBittorrent) deployment on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
## Prerequisites
- Kubernetes
- Helm
## Parameters
See the [values files](values.yaml).

View File

@@ -0,0 +1,111 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: qbittorrent
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: qbittorrent
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: qbittorrent
spec:
revisionHistoryLimit: 3
replicas: {{ .Values.server.replicas }}
strategy:
type: {{ .Values.server.strategy }}
selector:
matchLabels:
app.kubernetes.io/name: qbittorrent
app.kubernetes.io/instance: {{ .Release.Name }}
template:
metadata:
labels:
app.kubernetes.io/name: qbittorrent
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
serviceAccountName: qbittorrent
automountServiceAccountToken: true
containers:
- name: qbittorrent
image: "{{ .Values.server.image.repository }}:{{ .Values.server.image.tag }}"
imagePullPolicy: {{ .Values.server.image.pullPolicy }}
env:
{{- with (concat .Values.global.env .Values.server.env) }}
{{- toYaml . | nindent 12 }}
{{- end }}
- name: WEBUI_PORT
value: "{{ .Values.server.service.http.port }}"
resources:
{{- toYaml .Values.server.resources | nindent 12 }}
volumeMounts:
- name: qbittorrent-config
mountPath: /config
- name: media-storage
mountPath: {{ .Values.global.persistence.media.mountPath }}
{{- if .Values.gluetun.enabled }}
- name: gluetun
image: "{{.Values.gluetun.image.repository}}:{{.Values.gluetun.image.tag}}"
imagePullPolicy: {{ .Values.gluetun.image.pullPolicy }}
env:
{{- with (concat .Values.global.env .Values.gluetun.env) }}
{{- toYaml . | nindent 12 }}
{{- end }}
ports:
- name: health
containerPort: {{ .Values.gluetun.service.health.port }}
protocol: TCP
- name: http
containerPort: {{ .Values.server.service.http.port }}
protocol: TCP
- name: metrics
containerPort: 9022
protocol: TCP
securityContext:
{{- toYaml .Values.gluetun.securityContext | nindent 12 }}
resources:
{{- toYaml .Values.gluetun.resources | nindent 12 }}
volumeMounts:
- name: tunnel-device
mountPath: /dev/net/tun
- name: wg0-wireguard-config
mountPath: /gluetun/wireguard/
{{- end }}
{{- if .Values.metrics.enabled }}
- name: exporter
image: "{{ .Values.metrics.exporter.image.repository }}:{{.Values.metrics.exporter.image.tag }}"
imagePullPolicy: {{ .Values.metrics.exporter.image.pullPolicy }}
env:
{{- with (concat .Values.global.env .Values.metrics.exporter.env) }}
{{- toYaml . | nindent 12 }}
{{- end }}
- name: QBITTORRENT_HOST
value: "http://localhost"
- name: QBITTORRENT_PORT
value: "{{ .Values.server.service.http.port }}"
- name: EXPORTER_PORT
value: "9022"
{{- end }}
volumes:
{{- if .Values.gluetun.enabled }}
- name: tunnel-device
hostPath:
path: /dev/net/tun
- name: wg0-wireguard-config
secret:
secretName: {{ .Values.gluetun.existingSecretName }}
items:
- key: wg0.conf
path: wg0.conf
{{- end }}
- name: qbittorrent-config
persistentVolumeClaim:
claimName: qbittorrent-config
- name: media-storage
persistentVolumeClaim:
claimName: {{ .Values.global.persistence.media.claimName }}

View File

@@ -0,0 +1,32 @@
{{- if .Values.server.ingress.enabled }}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: qbittorrent
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: qbittorrent
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: qbittorrent
annotations:
{{- toYaml .Values.server.ingress.annotations | nindent 4 }}
spec:
ingressClassName: {{ .Values.server.ingress.className }}
tls:
- hosts:
- {{ .Values.server.ingress.host }}
secretName: qbittorrent-secret-tls
rules:
- host: {{ .Values.server.ingress.host }}
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: qbittorrent-webui
port:
name: http
{{- end }}

View File

@@ -0,0 +1,19 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: qbittorrent-config
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: qbittorrent
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: storage
app.kubernetes.io/part-of: qbittorrent
spec:
storageClassName: {{ .Values.server.persistence.config.storageClassName }}
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
resources:
requests:
storage: {{ .Values.server.persistence.config.storageSize }}

View File

@@ -0,0 +1,13 @@
{{- if .Values.global.serviceAccount.create -}}
apiVersion: v1
kind: ServiceAccount
metadata:
name: qbittorrent
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: qbittorrent
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: qbittorrent
{{- end }}

View File

@@ -0,0 +1,23 @@
{{- if and .Values.metrics.enabled .Values.metrics.serviceMonitor.enabled }}
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: qbittorrent
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: qbittorrent
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: qbittorrent
spec:
endpoints:
- port: metrics
interval: {{ .Values.metrics.serviceMonitor.interval }}
scrapeTimeout: {{ .Values.metrics.serviceMonitor.scrapeTimeout }}
path: /metrics
selector:
matchLabels:
app.kubernetes.io/name: qbittorrent
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}

View File

@@ -0,0 +1,21 @@
apiVersion: v1
kind: Service
metadata:
name: qbittorrent-webui
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: qbittorrent
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: qbittorrent
spec:
type: ClusterIP
ports:
- port: {{ .Values.server.service.http.port }}
targetPort: http
protocol: TCP
name: http
selector:
app.kubernetes.io/name: qbittorrent
app.kubernetes.io/instance: {{ .Release.Name }}

View File

@@ -0,0 +1,84 @@
global:
serviceAccount:
create: true
env: []
persistence:
media:
claimName:
mountPath:
server:
replicas: 1
strategy: Recreate
image:
repository: linuxserver/qbittorrent
tag: "version-4.6.3-r0"
pullPolicy: IfNotPresent
env:
- name: TZ
value: UTC
- name: PUID
value: "1000"
- name: PGID
value: "1000"
- name: UMASK_SET
value: "002"
resources:
requests:
cpu: 100m
memory: 2Gi
limits:
cpu: 2000m
memory: 2Gi
service:
http:
port: 8080
ingress:
enabled: false
className:
annotations:
host:
persistence:
config:
storageClassName:
storageSize:
gluetun:
enabled: false
image:
repository: ghcr.io/qdm12/gluetun
tag: v3.38.0
pullPolicy: IfNotPresent
securityContext:
privileged: True
capabilities:
add:
- NET_ADMIN
env: []
existingSecretName:
resources:
requests:
cpu: 100m
memory: 128Mi
limits:
cpu: 500m
memory: 256Mi
service:
health:
port: 9999
metrics:
enabled: false
serviceMonitor:
enabled: false
interval: 15s
scrapeTimeout: 5s
exporter:
image:
repository: esanchezm/prometheus-qbittorrent-exporter
tag: v1.5.1
imagePullPolicy: IfNotPresent
env:
- name: QBITTORRENT_USER
value: admin
- name: QBITTORRENT_PASS
value: ""
- name: EXPORTER_LOG_LEVEL
value: INFO

18
charts/tdarr/Chart.yaml Normal file
View File

@@ -0,0 +1,18 @@
apiVersion: v2
name: tdarr
version: 0.0.5
description: Chart for Tdarr V2
keywords:
- video
- transcode
sources:
- https://github.com/HaveAGitGat/Tdarr
- https://github.com/homeylab/helm-charts/tree/main/charts/tdarr-exporter
maintainers:
- name: alexlebens
icon: https://avatars.githubusercontent.com/u/43864057?s=48&v=4
dependencies:
- name: tdarr-exporter
version: 1.1.1
repository: https://homeylab.github.io/helm-charts/
appVersion: "2.17.01"

16
charts/tdarr/README.md Normal file
View File

@@ -0,0 +1,16 @@
## Introduction
[Tdarr V2](https://github.com/HaveAGitGat/Tdarr)
Distributed transcode automation using FFmpeg/HandBrake + Audio/Video library analytics + video health checking.
This chart bootstraps an [Tdarr V2](https://github.com/HaveAGitGat/Tdarr) server deployment with separate node deployments on a [Kubernetes](https://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager.
## Prerequisites
- Kubernetes
- Helm
## Parameters
See the [values files](values.yaml).

View File

@@ -0,0 +1,162 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: tdarr-server
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: tdarr-server
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: tdarr-server
spec:
revisionHistoryLimit: 3
replicas: {{ .Values.server.replicas }}
strategy:
type: {{ .Values.server.strategy }}
selector:
matchLabels:
app.kubernetes.io/name: tdarr-server
app.kubernetes.io/instance: {{ .Release.Name }}
template:
metadata:
labels:
app.kubernetes.io/name: tdarr-server
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
serviceAccountName: {{ .Release.Name }}
automountServiceAccountToken: true
containers:
- name: tdarr-server
image: "{{ .Values.server.image.repository }}:{{ .Values.server.image.tag }}"
imagePullPolicy: {{ .Values.server.image.pullPolicy }}
ports:
- name: api
containerPort: {{ .Values.server.service.api.port }}
protocol: TCP
- name: web
containerPort: {{ .Values.server.service.web.port }}
protocol: TCP
env:
{{- with (concat .Values.global.env .Values.server.env) }}
{{- toYaml . | nindent 12 }}
{{- end }}
- name: internalNode
value: "false"
- name: inContainer
value: "true"
- name: nodeName
value: tdarr-server
- name: serverIP
value: 0.0.0.0
- name: serverPort
value: "{{ .Values.server.service.api.port }}"
- name: webUIPort
value: "{{ .Values.server.service.web.port }}"
volumeMounts:
- name: tdarr-server-config
mountPath: /app/configs
- name: tdarr-server-server
mountPath: /app/server
- name: tdarr-server-cache
mountPath: /tcache
- name: media-storage
mountPath: {{ .Values.global.persistence.media.mountPath }}
resources:
{{- toYaml .Values.server.resources | nindent 12 }}
livenessProbe:
tcpSocket:
port: {{ .Values.server.service.api.port }}
initialDelaySeconds: 0
failureThreshold: 3
timeoutSeconds: 1
periodSeconds: 10
readinessProbe:
tcpSocket:
port: {{ .Values.server.service.api.port }}
initialDelaySeconds: 0
failureThreshold: 3
timeoutSeconds: 1
periodSeconds: 10
startupProbe:
tcpSocket:
port: {{ .Values.server.service.api.port }}
initialDelaySeconds: 0
failureThreshold: 30
timeoutSeconds: 1
periodSeconds: 5
volumes:
- name: tdarr-server-config
persistentVolumeClaim:
claimName: tdarr-server-config
- name: tdarr-server-server
persistentVolumeClaim:
claimName: tdarr-server-server
- name: tdarr-server-cache
emptyDir:
sizeLimit: {{ .Values.node.persistence.cache.size }}
- name: media-storage
persistentVolumeClaim:
claimName: {{ .Values.global.persistence.media.claimName }}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: tdarr-node
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: tdarr-node
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: tdarr-node
spec:
revisionHistoryLimit: 3
replicas: {{ .Values.node.replicas }}
strategy:
type: {{ .Values.node.strategy }}
selector:
matchLabels:
app.kubernetes.io/name: tdarr-node
app.kubernetes.io/instance: {{ .Release.Name }}
template:
metadata:
labels:
app.kubernetes.io/name: tdarr-node
app.kubernetes.io/instance: {{ .Release.Name }}
spec:
serviceAccountName: {{ .Release.Name }}
automountServiceAccountToken: true
containers:
- name: tdarr-node
image: "{{ .Values.node.image.repository }}:{{ .Values.node.image.tag }}"
imagePullPolicy: {{ .Values.node.image.pullPolicy }}
env:
{{- with (concat .Values.global.env .Values.node.env) }}
{{- toYaml . | nindent 12 }}
{{- end }}
- name: inContainer
value: "true"
- name: nodeName
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: serverIP
value: tdarr-server-api
- name: serverPort
value: "{{ .Values.server.service.api.port }}"
volumeMounts:
- name: tdarr-node-cache
mountPath: /tcache
- name: media-storage
mountPath: {{ .Values.global.persistence.media.mountPath }}
resources:
{{- toYaml .Values.node.resources | nindent 12 }}
volumes:
- name: tdarr-node-cache
emptyDir:
sizeLimit: {{ .Values.node.persistence.cache.size }}
- name: media-storage
persistentVolumeClaim:
claimName: {{ .Values.global.persistence.media.claimName }}

View File

@@ -0,0 +1,32 @@
{{- if .Values.server.ingress.enabled }}
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: tdarr-server
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: tdarr-server
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: tdarr-server
annotations:
{{- toYaml .Values.server.ingress.annotations | nindent 4 }}
spec:
ingressClassName: {{ .Values.server.ingress.className }}
tls:
- hosts:
- {{ .Values.server.ingress.host }}
secretName: tdarr-server-secret-tls
rules:
- host: {{ .Values.server.ingress.host }}
http:
paths:
- path: /
pathType: ImplementationSpecific
backend:
service:
name: tdarr-server-web
port:
name: web
{{- end }}

View File

@@ -0,0 +1,40 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: tdarr-server-config
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: tdarr-server
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: storage
app.kubernetes.io/part-of: tdarr-server
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.server.persistence.config.storageSize }}
storageClassName: {{ .Values.server.persistence.config.storageClassName }}
volumeMode: {{ .Values.server.persistence.config.volumeMode }}
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: tdarr-server-server
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: tdarr-server
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: storage
app.kubernetes.io/part-of: tdarr-server
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.server.persistence.server.storageSize }}
storageClassName: {{ .Values.server.persistence.server.storageClassName }}
volumeMode: {{ .Values.server.persistence.server.volumeMode }}

View File

@@ -0,0 +1,13 @@
{{- if .Values.global.serviceAccount.create -}}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ .Release.Name }}
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: {{ .Release.Name }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: {{ .Release.Name }}
{{- end }}

View File

@@ -0,0 +1,43 @@
apiVersion: v1
kind: Service
metadata:
name: tdarr-server-api
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: tdarr-server
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: tdarr-server
spec:
type: ClusterIP
ports:
- port: {{ .Values.server.service.api.port }}
targetPort: api
protocol: TCP
name: api
selector:
app.kubernetes.io/name: tdarr-server
app.kubernetes.io/instance: {{ .Release.Name }}
---
apiVersion: v1
kind: Service
metadata:
name: tdarr-server-web
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: tdarr-server
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: web
app.kubernetes.io/part-of: tdarr-server
spec:
ports:
- port: {{ .Values.server.service.web.port }}
targetPort: web
protocol: TCP
name: web
selector:
app.kubernetes.io/name: tdarr-server
app.kubernetes.io/instance: {{ .Release.Name }}

85
charts/tdarr/values.yaml Normal file
View File

@@ -0,0 +1,85 @@
global:
serviceAccount:
create: true
env:
- name: TZ
value: UTC
- name: PUID
value: "1001"
- name: PGID
value: "1001"
- name: UMASK_SET
value: "002"
- name: ffmpegVersion
value: "6"
persistence:
media:
claimName:
mountPath:
server:
replicas: 1
strategy: Recreate
image:
repository: ghcr.io/haveagitgat/tdarr
tag: "2.17.01"
pullPolicy: IfNotPresent
env: []
envFrom: []
resources:
requests:
cpu: 50m
memory: 256Mi
limits:
cpu: 500m
memory: 1Gi
service:
api:
port: 8266
web:
port: 8265
ingress:
enabled: false
className:
annotations:
host:
persistence:
config:
storageClassName: default
storageSize: 5Gi
volumeMode: Filesystem
server:
storageClassName: default
storageSize: 5Gi
volumeMode: Filesystem
cache:
size: 100Mi
node:
replicas: 3
strategy: Recreate
image:
repository: ghcr.io/haveagitgat/tdarr_node
tag: "2.17.01"
pullPolicy: IfNotPresent
env: []
envFrom: []
resources:
requests:
cpu: 100m
memory: 1Gi
limits:
cpu: 1000m
memory: 2Gi
persistence:
cache:
size: 5Gi
tdarr-exporter:
metrics:
serviceMonitor:
enabled: false
interval: 30s
scrapeTimeout: 30s
settings:
config:
url:
verify_ssl: false
log_level: "info"

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