mirror of
https://github.com/morten-olsen/homelab-operator.git
synced 2026-02-08 01:36:28 +01:00
Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1259e3e752 | ||
|
|
03e406322f |
@@ -1,2 +1,2 @@
|
|||||||
environment: dev
|
environment: prod
|
||||||
subdomain: bytestash
|
subdomain: bytestash
|
||||||
|
|||||||
1
charts/apps/jellyfin/notes.md
Normal file
1
charts/apps/jellyfin/notes.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
https://www.authelia.com/integration/openid-connect/clients/jellyfin/
|
||||||
@@ -5,6 +5,6 @@ metadata:
|
|||||||
spec:
|
spec:
|
||||||
environment: '{{ .Values.environment }}'
|
environment: '{{ .Values.environment }}'
|
||||||
redirectUris:
|
redirectUris:
|
||||||
- path: /api/auth/oidc/callback
|
- path: /sso/OID/redirect/Authentik
|
||||||
subdomain: '{{ .Values.subdomain }}'
|
subdomain: '{{ .Values.subdomain }}'
|
||||||
matchingMode: strict
|
matchingMode: strict
|
||||||
|
|||||||
@@ -33,10 +33,20 @@ spec:
|
|||||||
name: config
|
name: config
|
||||||
- mountPath: /media/movies
|
- mountPath: /media/movies
|
||||||
name: movies
|
name: movies
|
||||||
|
- mountPath: /media/tv-shows
|
||||||
|
name: tvshows
|
||||||
|
- mountPath: /media/music
|
||||||
|
name: music
|
||||||
volumes:
|
volumes:
|
||||||
- name: config
|
- name: config
|
||||||
persistentVolumeClaim:
|
persistentVolumeClaim:
|
||||||
claimName: '{{ .Release.Name }}-config'
|
claimName: '{{ .Release.Name }}-config'
|
||||||
- name: movies
|
- name: movies
|
||||||
persistentVolumeClaim:
|
persistentVolumeClaim:
|
||||||
claimName: 'movies'
|
claimName: movies
|
||||||
|
- name: tvshows
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: tvshows
|
||||||
|
- name: music
|
||||||
|
persistentVolumeClaim:
|
||||||
|
claimName: music
|
||||||
|
|||||||
@@ -2,5 +2,5 @@ image:
|
|||||||
repository: docker.io/jellyfin/jellyfin
|
repository: docker.io/jellyfin/jellyfin
|
||||||
tag: latest
|
tag: latest
|
||||||
pullPolicy: IfNotPresent
|
pullPolicy: IfNotPresent
|
||||||
environment: dev
|
environment: prod
|
||||||
subdomain: jellyfin
|
subdomain: jellyfin
|
||||||
|
|||||||
0
charts/apps/values.yaml
Normal file
0
charts/apps/values.yaml
Normal file
3
charts/root/Chart.yaml
Normal file
3
charts/root/Chart.yaml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
version: 1.0.0
|
||||||
|
name: root
|
||||||
32
charts/root/templates/apps.yaml
Normal file
32
charts/root/templates/apps.yaml
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: ApplicationSet
|
||||||
|
metadata:
|
||||||
|
name: homelab-apps
|
||||||
|
namespace: '{{ .Values.env }}-argo'
|
||||||
|
spec:
|
||||||
|
generators:
|
||||||
|
- directory:
|
||||||
|
path: charts/apps
|
||||||
|
recurse: false
|
||||||
|
include: '.*'
|
||||||
|
filter: |
|
||||||
|
.is_dir == true and (.path | endswith(".disabled") | not)
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
name: '{{path.basename}}'
|
||||||
|
spec:
|
||||||
|
project: default
|
||||||
|
source:
|
||||||
|
repoURL: '{{ .Values.repo }}'
|
||||||
|
targetRevision: '{{ .Values.ref }}'
|
||||||
|
path: charts/apps/{{path.basename}}
|
||||||
|
helm:
|
||||||
|
values: |
|
||||||
|
global: {{ .Values.global | toYaml | nindent 14 }}
|
||||||
|
destination:
|
||||||
|
server: https://kubernetes.default.svc
|
||||||
|
namespace: '{{ .Values.globals.env }}'
|
||||||
|
syncPolicy:
|
||||||
|
automated:
|
||||||
|
prune: true
|
||||||
|
selfHeal: true
|
||||||
21
charts/root/templates/root.yaml
Normal file
21
charts/root/templates/root.yaml
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
apiVersion: argoproj.io/v1alpha1
|
||||||
|
kind: Application
|
||||||
|
metadata:
|
||||||
|
name: homelab-root
|
||||||
|
namespace: '{{ .Values.globals.env }}-argo'
|
||||||
|
spec:
|
||||||
|
project: default
|
||||||
|
source:
|
||||||
|
repoURL: '{{ .Values.repo }}'
|
||||||
|
targetRevision: '{{ .Values.ref }}'
|
||||||
|
path: charts/root
|
||||||
|
helm:
|
||||||
|
valueFiles:
|
||||||
|
- values.yaml
|
||||||
|
destination:
|
||||||
|
server: https://kubernetes.default.svc
|
||||||
|
namespace: '{{ .Values.globals.env }}-argo'
|
||||||
|
syncPolicy:
|
||||||
|
automated:
|
||||||
|
prune: true
|
||||||
|
selfHeal: true
|
||||||
4
charts/root/values.yaml
Normal file
4
charts/root/values.yaml
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
globals:
|
||||||
|
env: prod
|
||||||
|
repo: https://github.com/morten-olsen/homelab-operator.git
|
||||||
|
ref: HEAD
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolume
|
kind: PersistentVolume
|
||||||
metadata:
|
metadata:
|
||||||
name: tv-shows
|
name: tvshows
|
||||||
labels:
|
labels:
|
||||||
type: nfs
|
type: nfs
|
||||||
spec:
|
spec:
|
||||||
@@ -13,14 +13,14 @@ spec:
|
|||||||
storageClassName: manual
|
storageClassName: manual
|
||||||
hostPath: null
|
hostPath: null
|
||||||
nfs:
|
nfs:
|
||||||
path: '{{ .Values.tv-shows.path }}'
|
path: '{{ .Values.tvshows.path }}'
|
||||||
server: '{{ .Values.host }}'
|
server: '{{ .Values.host }}'
|
||||||
readOnly: true
|
readOnly: true
|
||||||
---
|
---
|
||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
kind: PersistentVolumeClaim
|
kind: PersistentVolumeClaim
|
||||||
metadata:
|
metadata:
|
||||||
name: tv-shows
|
name: tvshows
|
||||||
spec:
|
spec:
|
||||||
storageClassName: manual
|
storageClassName: manual
|
||||||
accessModes:
|
accessModes:
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
host: 192.168.20.106
|
host: 192.168.20.106
|
||||||
movies:
|
movies:
|
||||||
path: /mnt/HDD/Movies
|
path: /mnt/HDD/Movies
|
||||||
tv-shows:
|
tvshows:
|
||||||
path: /mnt/HDD/TV-Shows
|
path: /mnt/HDD/TV-Shows
|
||||||
music:
|
music:
|
||||||
path: /mnt/HDD/Music2
|
path: /mnt/HDD/Music2
|
||||||
books:
|
books:
|
||||||
path: /mnt/HDD/Books
|
path: /mnt/HDD/Books
|
||||||
podcats:
|
podcasts:
|
||||||
path: /mnt/HDD/Podcasts
|
path: /mnt/HDD/Podcasts
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ metadata:
|
|||||||
apiVersion: homelab.mortenolsen.pro/v1
|
apiVersion: homelab.mortenolsen.pro/v1
|
||||||
kind: Environment
|
kind: Environment
|
||||||
metadata:
|
metadata:
|
||||||
name: dev
|
name: prod
|
||||||
spec:
|
spec:
|
||||||
domain: mortenolsen.net
|
domain: olsen.cloud
|
||||||
networkIp: 192.168.64.2
|
networkIp: 192.168.20.180
|
||||||
tls:
|
tls:
|
||||||
issuer: lets-encrypt-prod
|
issuer: lets-encrypt-prod
|
||||||
|
|||||||
@@ -4,16 +4,10 @@ metadata:
|
|||||||
name: homelab-operator
|
name: homelab-operator
|
||||||
|
|
||||||
build:
|
build:
|
||||||
# This tells Skaffold to build the image locally using your Docker daemon.
|
cluster: {}
|
||||||
local:
|
|
||||||
push: false
|
|
||||||
# This is the crucial part for your workflow. Instead of pushing to a
|
|
||||||
# registry, it loads the built image directly into your cluster's nodes.
|
|
||||||
# load: true
|
|
||||||
artifacts:
|
artifacts:
|
||||||
# Defines the image to build. It matches the placeholder in deployment.yaml.
|
|
||||||
- image: homelaboperator
|
- image: homelaboperator
|
||||||
context: . # The build context is the root directory
|
context: .
|
||||||
docker:
|
docker:
|
||||||
dockerfile: Dockerfile
|
dockerfile: Dockerfile
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user