Compare commits

...

11 Commits

Author SHA1 Message Date
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
25 changed files with 403 additions and 40 deletions

View File

@@ -1,6 +1,6 @@
apiVersion: v2
name: cops
version: 0.0.1
version: 0.0.2
description: Chart for Calibre OPDS (and HTML) PHP Server
keywords:
- calibre

View File

@@ -17,7 +17,7 @@ spec:
tls:
- hosts:
- {{ .Values.ingress.host }}
secretName: {{ .Release.Name }}-tls-secret
secretName: {{ .Release.Name }}-secret-tls
rules:
- host: {{ .Values.ingress.host }}
http:

View File

@@ -1,6 +1,6 @@
apiVersion: v2
name: home-assistant
version: 0.0.16
version: 0.1.1
description: Chart for Home Assistant
keywords:
- home-automation

View File

@@ -4,7 +4,7 @@ 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
@@ -16,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 }}
@@ -95,4 +95,4 @@ spec:
volumes:
- name: home-assistant-config
persistentVolumeClaim:
claimName: home-assistant-config
claimName: "{{ .Release.Name }}-config"

View File

@@ -2,14 +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/part-of: {{ .Release.Name }}
spec:
entryPoints:
- websecure
@@ -18,11 +18,11 @@ spec:
match: "Host(`{{ .Values.ingressRoute.host }}`)"
middlewares:
- name: "authentik-{{ .Release.Name }}"
namespace: {{ .Release.Namespace }}
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/`)"
@@ -30,7 +30,7 @@ spec:
services:
- kind: Service
name: {{ .Values.ingressRoute.authentik.outpost }}
port: {{ .Values.ingressRoute.authentik.port }}
port: {{ .Values.ingressRoute.authentik.port }}
{{- end }}
---
@@ -38,23 +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/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 }}
- 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

@@ -1,10 +1,10 @@
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

View File

@@ -2,14 +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/part-of: {{ .Release.Name }}
spec:
groups:
- name: {{ .Release.Name }}

View File

@@ -1,11 +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/part-of: {{ .Release.Name }}

View File

@@ -2,18 +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/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,10 +1,10 @@
apiVersion: v1
kind: Service
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
@@ -17,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 }}
---
@@ -25,10 +25,10 @@ spec:
apiVersion: v1
kind: Service
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
@@ -41,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

@@ -22,7 +22,7 @@ ingressRoute:
enabled: true
host:
authentik:
outpost: authentik-proxy-outpost
outpost:
port: 9000
metrics:
enabled: false

View File

@@ -1,6 +1,6 @@
apiVersion: v2
name: outline
version: 0.0.5
version: 0.0.7
description: Chart for Outline wiki
keywords:
- wiki
@@ -14,5 +14,5 @@ icon: https://avatars.githubusercontent.com/u/1765001?s=48&v=4
dependencies:
- name: redis
repository: https://charts.bitnami.com/bitnami
version: 18.x.x
version: 18.19.2
appVersion: v0.75.2

View File

@@ -17,7 +17,7 @@ spec:
tls:
- hosts:
- {{ .Values.ingress.host }}
secretName: {{ .Release.Name }}-tls-secret
secretName: {{ .Release.Name }}-secret-tls
rules:
- host: {{ .Values.ingress.host }}
http:

View File

@@ -0,0 +1,14 @@
apiVersion: v2
name: tubearchivist-to-jellyfin
version: 0.0.3
description: Import library from tubearchivist to jellyfin
keywords:
- tubearchivist
- jellyfin
- job
sources:
- https://github.com/tubearchivist/tubearchivist-jf
maintainers:
- name: alexlebens
icon: https://avatars.githubusercontent.com/u/102734415?s=48&v=4
appVersion: "v0.1.2"

View File

@@ -0,0 +1,18 @@
## Introduction
[Tube Archivist Jellyfin Integration](https://github.com/tubearchivist/tubearchivist-jf)
Import your Tube Archivist media folder into Jellyfin
This chart bootstraps a [Tube Archivist Jellyfin Integration](https://github.com/tubearchivist/tubearchivist-jf) 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

@@ -0,0 +1,37 @@
apiVersion: batch/v1
kind: CronJob
metadata:
name: tubearchivist-to-jellyfin
namespace: {{ .Release.Namespace }}
labels:
app.kubernetes.io/name: tubearchivist-to-jellyfin
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/version: {{ .Chart.AppVersion }}
app.kubernetes.io/component: job
app.kubernetes.io/part-of: {{ .Release.Name }}
spec:
schedule: {{ .Values.job.schedule }}
successfulJobsHistoryLimit: 3
failedJobsHistoryLimit: 3
jobTemplate:
spec:
template:
spec:
restartPolicy: Never
containers:
- name: tubearchivist-to-jellyfin
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
command: ["python"]
args: ["main.py"]
{{- with .Values.envFrom }}
envFrom:
{{- toYaml . | nindent 16 }}
{{- end }}
volumeMounts:
- name: tubearchivist-youtube
mountPath: /youtube
volumes:
- name: tubearchivist-youtube
persistentVolumeClaim:
claimName: {{ .Values.persistence.youtube.claimName }}

View File

@@ -0,0 +1,10 @@
job:
schedule: "0 * * * *"
image:
repository: bbilly1/tubearchivist-jf
tag: v0.1.2
pullPolicy: IfNotPresent
envFrom:
persistence:
youtube:
claimName:

View File

@@ -0,0 +1,15 @@
apiVersion: v2
name: tubearchivist
version: 0.0.5
sources:
- https://github.com/tubearchivist/tubearchivist
- https://github.com/bitnami/charts/tree/main/bitnami/redis
- https://github.com/bitnami/charts/tree/main/bitnami/elasticsearch
dependencies:
- name: redis
version: 18.19.2
repository: https://charts.bitnami.com/bitnami
- name: elasticsearch
version: 19.21.2
repository: https://charts.bitnami.com/bitnami
appVersion: v0.4.6

View File

@@ -0,0 +1,16 @@
## Introduction
[Tube Archivist](https://github.com/tubearchivist/tubearchivist)
Your self hosted YouTube media server
This chart bootstraps an [Outline](https://github.com/tubearchivist/tubearchivist) 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 }}
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 }}
automountServiceAccountToken: true
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
env:
- name: TA_PORT
value: {{ .Values.service.http.port | quote }}
{{- 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: "{{ .Release.Name }}-cache"
mountPath: /cache
- name: "{{ .Release.Name }}-youtube"
mountPath: /youtube
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 }}-cache"
persistentVolumeClaim:
claimName: "{{ .Release.Name }}-cache"
- name: "{{ .Release.Name }}-youtube"
persistentVolumeClaim:
claimName: {{ .Values.persistence.youtube.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,21 @@
{{- if .Values.persistence.cache.enabled }}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: "{{ .Release.Name }}-cache"
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:
- {{ .Values.persistence.cache.accessMode }}
resources:
requests:
storage: {{ .Values.persistence.cache.storageSize }}
storageClassName: {{ .Values.persistence.cache.storageClassName }}
volumeMode: {{ .Values.persistence.cache.volumeMode }}
{{- end }}

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

View File

@@ -0,0 +1,75 @@
deployment:
replicas: 1
strategy: Recreate
image:
repository: bbilly1/tubearchivist
tag: v0.4.6
imagePullPolicy: IfNotPresent
env:
TZ: UTC
envFrom:
resources:
requests:
memory: 512Mi
cpu: 50m
limits:
memory: 1Gi
cpu: 1000m
service:
http:
port: 8000
ingress:
enabled: false
className:
annotations:
host:
persistence:
cache:
enabled: false
storageClassName: default
storageSize: 5Gi
accessMode: ReadWriteOnce
volumeMode: Filesystem
youtube:
claimName:
redis:
image:
repository: redis/redis-stack-server
tag: 7.2.0-v9
architecture: standalone
auth:
enabled: false
commonConfiguration: |-
# Enable AOF https://redis.io/topics/persistence#append-only-file
appendonly yes
# Disable RDB persistence, AOF persistence already enabled.
save ""
# Enable Redis Json module
loadmodule /opt/redis-stack/lib/rejson.so
elasticsearch:
global:
storageClass: default
extraEnvVars:
- name: "discovery.type"
value: "single-node"
- name: xpack.security.enabled
value: "true"
extraEnvVarsSecret:
extraConfig:
path:
repo: /usr/share/elasticsearch/data/snapshot
extraVolumes:
extraVolumeMounts:
- name: snapshot
mountPath: /usr/share/elasticsearch/data/snapshot
snapshotRepoPath: /usr/share/elasticsearch/data/snapshot
master:
masterOnly: false
replicaCount: 1
data:
replicaCount: 0
coordinating:
replicaCount: 0
ingest:
enabled: false
replicaCount: 0