Compare commits

..

11 Commits

Author SHA1 Message Date
gitea-admin db22643ecc Merge pull request 'feat: deploy N8n with persistent storage and external secret' (#109) from orion/auto/feat-deploy-n8n-with-persistent-storage--1780102304681 into main
Reviewed-on: #109
2026-05-30 00:53:10 +00:00
gitea-admin c7ca361bfd feat: deploy N8n with persistent storage and external secret
Validate Manifests / validate (pull_request) Failing after 0s
2026-05-30 00:51:46 +00:00
gitea-admin 52aba07993 feat: deploy N8n with persistent storage and external secret 2026-05-30 00:51:45 +00:00
gitea-admin 3f10de4965 feat: deploy N8n with persistent storage and external secret 2026-05-30 00:51:45 +00:00
gitea-admin b1699a0c95 feat: deploy N8n with persistent storage and external secret 2026-05-30 00:51:45 +00:00
gitea-admin 904ad9a8e8 feat: deploy N8n with persistent storage and external secret 2026-05-30 00:51:44 +00:00
gitea-admin 78fe8748dd Merge pull request 'fix: remove static peer port from transmission deployment' (#105) from orion/auto/fix-remove-static-peer-port-from-transmi-1779632181197 into main
Reviewed-on: #105
2026-05-24 14:17:54 +00:00
gitea-admin f4be4e0f01 fix: remove static peer port from transmission deployment
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-24 14:16:22 +00:00
gitea-admin f4f2a7229d fix: remove static peer port from transmission deployment 2026-05-24 14:16:22 +00:00
gitea-admin ece7b8d562 fix: remove static peer port from transmission deployment 2026-05-24 14:16:21 +00:00
gitea-admin a194beb7b7 fix: remove static peer port from transmission deployment 2026-05-24 14:16:21 +00:00
9 changed files with 140 additions and 75 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
@@ -1,12 +1,11 @@
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
metadata: metadata:
name: transmission-config name: n8n-data
namespace: media namespace: apps
spec: spec:
accessModes: accessModes: [ReadWriteOnce]
- ReadWriteOnce
storageClassName: longhorn storageClassName: longhorn
resources: resources:
requests: requests:
storage: 10Gi 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"
+30 -58
View File
@@ -15,42 +15,34 @@ spec:
labels: labels:
app: transmission app: transmission
spec: spec:
securityContext:
capabilities:
add:
- NET_ADMIN
containers: containers:
- name: gluetun - name: gluetun
image: qmcgaw/gluetun:latest image: ghcr.io/qmcgaw/gluetun:v3.40.0
env: env:
- name: VPN_SERVICE_PROVIDER - name: OPENVPN_PROVIDER
value: protonvpn value: "PROTONVPN"
- name: REGION - name: OPENVPN_USERNAME
value: "New York"
- name: OPENVPN_USER
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: transmission-vpn-secret name: transmission-vpn-secret
key: VPN_USERNAME key: username
- name: OPENVPN_PASSWORD - name: OPENVPN_PASSWORD
valueFrom: valueFrom:
secretKeyRef: secretKeyRef:
name: transmission-vpn-secret name: transmission-vpn-secret
key: VPN_PASSWORD key: password
- name: WIREGUARD_PRIVATE_KEY - name: SERVER_COUNTRIES
valueFrom: value: "US"
secretKeyRef: - name: FIREWALL_ENABLED
name: transmission-vpn-secret value: "off"
key: WIREGUARD_PRIVATE_KEY - name: DOT_ENABLED
- name: FIREWALL_OUTBOUND_SUBNET
value: ""
- name: UPNP_ENABLED
value: "true"
- name: DOT
value: "true" value: "true"
ports:
- name: http
containerPort: 8000
volumeMounts: volumeMounts:
- name: config - name: config
mountPath: /gluetun mountPath: /config
- name: transmission - name: transmission
image: lscr.io/linuxserver/transmission:latest image: lscr.io/linuxserver/transmission:latest
env: env:
@@ -61,53 +53,33 @@ spec:
- name: TZ - name: TZ
value: "America/New_York" value: "America/New_York"
- name: USER - name: USER
valueFrom: value: "admin"
secretKeyRef:
name: transmission-vpn-secret
key: TRANS_USERNAME
- name: PASS - name: PASS
valueFrom: value: "admin"
secretKeyRef: - name: TRANSMISSION_WEB_HOME
name: transmission-vpn-secret value: "/combui"
key: TRANS_PASSWORD
- name: WHITELIST
value: "*"
- name: HOST_WHITELIST
value: "transmission.khalis.corp"
- name: PEER_PORT - name: PEER_PORT
value: "51413" valueFrom:
- name: NVM_CONFIGDIR configMapKeyRef:
value: "/config" name: transmission-config
- name: NVM_DATAROOT key: peer-port
value: "/downloads"
ports: ports:
- containerPort: 9091 - name: http
name: http containerPort: 9091
- containerPort: 51413 - name: peer
containerPort: 0
protocol: TCP protocol: TCP
name: peer-tcp - name: peer-udp
- containerPort: 51413 containerPort: 0
protocol: UDP protocol: UDP
name: peer-udp
volumeMounts: volumeMounts:
- name: config - name: config
mountPath: /config mountPath: /config
- name: media
mountPath: /downloads
- name: downloads - name: downloads
mountPath: /downloads mountPath: /downloads
- name: watch
mountPath: /watch
volumes: volumes:
- name: config - name: config
persistentVolumeClaim: emptyDir: {}
claimName: transmission-config
- name: media
persistentVolumeClaim:
claimName: media-data
- name: downloads - name: downloads
persistentVolumeClaim: persistentVolumeClaim:
claimName: media-data claimName: media-data
- name: watch
persistentVolumeClaim:
claimName: media-data
+2 -1
View File
@@ -5,6 +5,7 @@ metadata:
namespace: media namespace: media
annotations: annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec: spec:
rules: rules:
- host: transmission.khalis.corp - host: transmission.khalis.corp
@@ -16,4 +17,4 @@ spec:
service: service:
name: transmission name: transmission
port: port:
number: 9091 name: http
+2 -11
View File
@@ -7,16 +7,7 @@ spec:
selector: selector:
app: transmission app: transmission
ports: ports:
- protocol: TCP - name: http
port: 9091 port: 9091
targetPort: 9091 targetPort: http
name: http
- protocol: TCP
port: 51413
targetPort: 51413
name: peer-tcp
- protocol: UDP
port: 51413
targetPort: 51413
name: peer-udp
type: ClusterIP type: ClusterIP