Compare commits

...

10 Commits

9 changed files with 231 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: n8n
namespace: apps
labels:
app: n8n
spec:
replicas: 1
selector:
matchLabels:
app: n8n
template:
metadata:
labels:
app: n8n
spec:
containers:
- name: n8n
image: n8nio/n8n:1.57.0
ports:
- containerPort: 5678
env:
- name: N8N_HOST
value: "n8n.khalisio.com"
- name: N8N_PROTOCOL
value: "https"
- name: WEBHOOK_URL
value: "https://n8n.khalisio.com/"
- name: N8N_ENCRYPTION_KEY
valueFrom:
secretKeyRef:
name: n8n-secret
key: N8N_ENCRYPTION_KEY
resources:
requests:
cpu: 200m
memory: 256Mi
limits:
cpu: 1000m
memory: 1Gi
volumeMounts:
- name: n8n-data
mountPath: /home/node/.n8n
volumes:
- name: n8n-data
persistentVolumeClaim:
claimName: n8n-data
+18
View File
@@ -0,0 +1,18 @@
apiVersion: external-secrets.io/v1beta1
kind: ExternalSecret
metadata:
name: n8n-secret
namespace: apps
spec:
refreshInterval: 1h
secretStoreRef:
name: vault
kind: ClusterSecretStore
target:
name: n8n-secret
creationPolicy: Owner
data:
- secretKey: N8N_ENCRYPTION_KEY
remoteRef:
key: secret/data/Talos Cluster/apps/n8n
property: N8N_ENCRYPTION_KEY
+17
View File
@@ -0,0 +1,17 @@
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: n8n
namespace: apps
spec:
entryPoints:
- websecure
routes:
- match: Host(`n8n.khalisio.com`)
kind: Rule
services:
- name: n8n
port: 80
tls:
secretName: n8n-tls
certResolver: letsencrypt
+11
View File
@@ -0,0 +1,11 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: n8n-data
namespace: apps
spec:
accessModes: [ReadWriteOnce]
storageClassName: longhorn
resources:
requests:
storage: 5Gi
+12
View File
@@ -0,0 +1,12 @@
apiVersion: v1
kind: Service
metadata:
name: n8n
namespace: apps
spec:
selector:
app: n8n
ports:
- port: 80
targetPort: 5678
type: ClusterIP
@@ -0,0 +1,7 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: transmission-config
namespace: media
data:
peer-port: "0"
@@ -0,0 +1,85 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: transmission
namespace: media
labels:
app: transmission
spec:
replicas: 1
selector:
matchLabels:
app: transmission
template:
metadata:
labels:
app: transmission
spec:
containers:
- name: gluetun
image: ghcr.io/qmcgaw/gluetun:v3.40.0
env:
- name: OPENVPN_PROVIDER
value: "PROTONVPN"
- name: OPENVPN_USERNAME
valueFrom:
secretKeyRef:
name: transmission-vpn-secret
key: username
- name: OPENVPN_PASSWORD
valueFrom:
secretKeyRef:
name: transmission-vpn-secret
key: password
- name: SERVER_COUNTRIES
value: "US"
- name: FIREWALL_ENABLED
value: "off"
- name: DOT_ENABLED
value: "true"
ports:
- name: http
containerPort: 8000
volumeMounts:
- name: config
mountPath: /config
- name: transmission
image: lscr.io/linuxserver/transmission:latest
env:
- name: PUID
value: "1000"
- name: PGID
value: "1000"
- name: TZ
value: "America/New_York"
- name: USER
value: "admin"
- name: PASS
value: "admin"
- name: TRANSMISSION_WEB_HOME
value: "/combui"
- name: PEER_PORT
valueFrom:
configMapKeyRef:
name: transmission-config
key: peer-port
ports:
- name: http
containerPort: 9091
- name: peer
containerPort: 0
protocol: TCP
- name: peer-udp
containerPort: 0
protocol: UDP
volumeMounts:
- name: config
mountPath: /config
- name: downloads
mountPath: /downloads
volumes:
- name: config
emptyDir: {}
- name: downloads
persistentVolumeClaim:
claimName: media-data
@@ -0,0 +1,20 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: transmission
namespace: media
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
rules:
- host: transmission.khalis.corp
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: transmission
port:
name: http
@@ -0,0 +1,13 @@
apiVersion: v1
kind: Service
metadata:
name: transmission
namespace: media
spec:
selector:
app: transmission
ports:
- name: http
port: 9091
targetPort: http
type: ClusterIP