Compare commits

...

65 Commits

Author SHA1 Message Date
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
gitea-admin 9e2562897c fix(khalisio): pin to amd64 nodes (image is amd64-only for now) 2026-05-20 09:24:18 +00:00
gitea-admin 277e834d5c fix(khalisio): add ghcr-pull-secret imagePullSecret 2026-05-20 09:20:48 +00:00
gitea-admin c4e088cc49 Merge pull request 'feat(khalisio): deploy khalisio.com to apps namespace' (#103) from add-khalisio into main
Reviewed-on: #103
2026-05-20 09:13:18 +00:00
gitea-admin 5d5e004e71 feat(khalisio): add khalisio.com deployment, service, ingress
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-20 09:11:45 +00:00
gitea-admin 2124c128d9 feat: add postgres deployment and service for pelican panel 2026-05-20 00:17:35 +00:00
gitea-admin b26ef35c7e fix: mount pelican-data PVC at /pelican-data with init container for permissions 2026-05-20 00:09:53 +00:00
gitea-admin 059d189677 fix: remove volume mounts to restore app startup — keep DB_CONNECTION=pgsql 2026-05-20 00:06:46 +00:00
gitea-admin 472783d3d9 fix: revert volume mounts — keep DB_CONNECTION=pgsql only 2026-05-20 00:05:55 +00:00
gitea-admin 044c123dfa fix: add DB_CONNECTION=pgsql, fix containerPort and volumeMount paths 2026-05-20 00:04:09 +00:00
gitea-admin fe012ea282 fix: correct pelican service targetPort to 80 (Caddy binds :80 not :8080) 2026-05-20 00:00:28 +00:00
gitea-admin bbbfeaf155 fix: add Certificate CR for pelican-panel-tls — IngressRoute requires explicit cert, not annotation 2026-05-19 23:52:27 +00:00
gitea-admin e17934a749 fix: replicas 1 + Recreate strategy (RWO PVCs), fix SESSION_SECURE key 2026-05-19 23:44:49 +00:00
gitea-admin a98c45decd fix: config.yml volume mount, correct UUID (8f81 segment), remove envFrom 2026-05-19 23:39:09 +00:00
gitea-admin c71b31fab2 fix: add PVC for wings-valheim game data 2026-05-19 23:39:09 +00:00
gitea-admin d961fcde77 fix: add ExternalSecret for wings-valheim config from Vault 2026-05-19 23:39:09 +00:00
gitea-admin 074c2e764e fix: correct image from bitwarden/server to vaultwarden/server 2026-05-19 23:39:08 +00:00
gitea-admin 27cf0e28c3 fix: add privileged PodSecurity label — Wings dind requires privileged containers 2026-05-19 23:39:08 +00:00
gitea-admin 63d453ef07 fix: remove envFrom — Wings reads config.yml from mounted volume, not env vars 2026-05-19 23:30:44 +00:00
gitea-admin 22efb57ced fix: secretStoreRef orion-vault, correct Vault key path, map config→config.yml 2026-05-19 23:30:44 +00:00
gitea-admin 1b71d5e100 fix: add BEHIND_PROXY=true — panel runs behind Traefik, Caddy must not handle SSL 2026-05-19 23:30:43 +00:00
gitea-admin 196ee24009 fix: add secretStoreRef orion-vault and fix Vault key paths 2026-05-19 23:24:43 +00:00
gitea-admin 301cfc25bc fix: add secretStoreRef orion-vault and fix Vault key paths 2026-05-19 23:24:42 +00:00
gitea-admin 667bdf52c4 fix: add secretStoreRef orion-vault and fix Vault key paths 2026-05-19 23:24:42 +00:00
gitea-admin 7dc5bfab48 fix: revert accessMode to ReadWriteOnce (immutable on bound PVC), keep 3Ti resize 2026-05-19 23:10:29 +00:00
gitea-admin 6cf0a26c9b fix: update ExternalSecret apiVersion to external-secrets.io/v1 2026-05-19 23:10:29 +00:00
gitea-admin afe794aea3 fix: update ExternalSecret apiVersion to external-secrets.io/v1 2026-05-19 23:10:28 +00:00
gitea-admin e23c5f5b7f fix: update ExternalSecret apiVersion to external-secrets.io/v1 2026-05-19 23:10:28 +00:00
gitea-admin 61bbe21b90 fix: update ExternalSecret apiVersion to external-secrets.io/v1 2026-05-19 23:10:28 +00:00
gitea-admin 5aa5eefdf2 fix: update IngressRoute apiVersion to traefik.io/v1alpha1 2026-05-19 23:10:27 +00:00
gitea-admin d822cbe546 Update deployments/media/pvc.yaml 2026-05-19 22:25:57 +00:00
gitea-admin 9386134fc7 Update deployments/media/lidarr/pvc.yaml 2026-05-19 22:22:55 +00:00
gitea-admin 1286ebae4a Update deployments/media/emby/pvc.yaml 2026-05-19 22:22:43 +00:00
gitea-admin 6b434e5230 Update deployments/media/bazarr/pvc.yaml 2026-05-19 22:22:22 +00:00
gitea-admin 3676a5de46 Update deployments/media/pvc.yaml 2026-05-19 22:22:05 +00:00
gitea-admin f4a9de8b82 Delete deployments/media/media-pvc.yaml 2026-05-19 22:21:53 +00:00
gitea-admin 37cb3bbeb6 Update deployments/media/sonarr/pvc.yaml 2026-05-19 22:21:37 +00:00
gitea-admin 56320aa920 Update deployments/media/sonarrpvc.yaml 2026-05-19 22:21:30 +00:00
gitea-admin 86e817e3c3 Update deployments/media/radarr/pvc.yaml 2026-05-19 22:21:20 +00:00
gitea-admin 91f0184941 Update deployments/media/prowlarr/pvc.yaml 2026-05-19 22:21:13 +00:00
gitea-admin 644f777b7c Update deployments/media/lidarr/lidarr-pvc.yaml 2026-05-19 22:21:00 +00:00
gitea-admin f2b20d549a Update deployments/media/emby/emby-pvc.yaml 2026-05-19 22:20:37 +00:00
gitea-admin 70a9f23b7f Update deployments/media/bazarr/bazarr-pvc.yaml 2026-05-19 22:20:26 +00:00
gitea-admin 36d3a45e02 Delete directory 'deployments/bitwarden' 2026-05-19 22:19:40 +00:00
gitea-admin 71348a5a65 Merge pull request 'fix: move Bitwarden to security/bitwarden/ (correct namespace structure)' (#101) from orion/auto/fix-move-bitwarden-to-security-bitwarden-1779229047173 into main
Reviewed-on: #101
2026-05-19 22:19:00 +00:00
gitea-admin 2d1b6cf487 fix: move Bitwarden to security/bitwarden/ (correct namespace structure)
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-19 22:17:30 +00:00
gitea-admin 1436def461 fix: move Bitwarden to security/bitwarden/ (correct namespace structure) 2026-05-19 22:17:30 +00:00
gitea-admin 309c291917 fix: move Bitwarden to security/bitwarden/ (correct namespace structure) 2026-05-19 22:17:29 +00:00
gitea-admin 0b35e7500a fix: move Bitwarden to security/bitwarden/ (correct namespace structure) 2026-05-19 22:17:29 +00:00
gitea-admin 96e4179de5 fix: move Bitwarden to security/bitwarden/ (correct namespace structure) 2026-05-19 22:17:29 +00:00
gitea-admin 18c7a798d4 fix: move Bitwarden to security/bitwarden/ (correct namespace structure) 2026-05-19 22:17:28 +00:00
gitea-admin 4a170e2a7b fix: move Bitwarden to security/bitwarden/ (correct namespace structure) 2026-05-19 22:17:28 +00:00
gitea-admin 61faadcea3 fix: move Bitwarden to security/bitwarden/ (correct namespace structure) 2026-05-19 22:17:28 +00:00
gitea-admin 6619978c47 fix: move Bitwarden to security/bitwarden/ (correct namespace structure) 2026-05-19 22:17:27 +00:00
gitea-admin ce7384d92e fix: move Bitwarden to security/bitwarden/ (correct namespace structure) 2026-05-19 22:17:27 +00:00
gitea-admin 082a79b613 Merge pull request 'feat: deploy Bitwarden vault to security namespace' (#99) from orion/auto/feat-deploy-bitwarden-vault-to-security--1779180493216 into main
Reviewed-on: #99
2026-05-19 08:48:38 +00:00
gitea-admin e44858053c feat: deploy Bitwarden vault to security namespace
Validate Manifests / validate (pull_request) Has been cancelled
2026-05-19 08:48:14 +00:00
gitea-admin 56141866cb feat: deploy Bitwarden vault to security namespace 2026-05-19 08:48:14 +00:00
gitea-admin 808f2aff06 feat: deploy Bitwarden vault to security namespace 2026-05-19 08:48:13 +00:00
gitea-admin b03242120e feat: deploy Bitwarden vault to security namespace 2026-05-19 08:48:13 +00:00
gitea-admin 96cf67dfa0 Merge pull request 'feat: deploy Bitwarden self-hosted in security namespace' (#97) from orion/auto/feat-deploy-bitwarden-self-hosted-in-sec-1779180155812 into main
Reviewed-on: #97
2026-05-19 08:43:33 +00:00
33 changed files with 466 additions and 155 deletions
+54
View File
@@ -0,0 +1,54 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: khalisio
namespace: apps
labels:
app: khalisio
spec:
replicas: 2
selector:
matchLabels:
app: khalisio
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
template:
metadata:
labels:
app: khalisio
spec:
imagePullSecrets:
- name: ghcr-pull-secret
nodeSelector:
kubernetes.io/arch: amd64
containers:
- name: web
image: ghcr.io/richard-callis/portfolio:latest
imagePullPolicy: Always
ports:
- name: http
containerPort: 8080
resources:
requests:
cpu: 10m
memory: 16Mi
limits:
cpu: 100m
memory: 64Mi
readinessProbe:
httpGet: { path: /, port: http }
initialDelaySeconds: 2
periodSeconds: 5
livenessProbe:
httpGet: { path: /, port: http }
initialDelaySeconds: 5
periodSeconds: 30
securityContext:
allowPrivilegeEscalation: false
runAsNonRoot: true
runAsUser: 101
capabilities:
drop: ["ALL"]
+35
View File
@@ -0,0 +1,35 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: khalisio
namespace: apps
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
nginx.ingress.kubernetes.io/ssl-redirect: "true"
spec:
tls:
- hosts:
- khalisio.com
- www.khalisio.com
secretName: khalisio-tls
rules:
- host: khalisio.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: khalisio
port:
number: 80
- host: www.khalisio.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: khalisio
port:
number: 80
+13
View File
@@ -0,0 +1,13 @@
apiVersion: v1
kind: Service
metadata:
name: khalisio
namespace: apps
spec:
selector:
app: khalisio
ports:
- protocol: TCP
port: 80
targetPort: 8080
type: ClusterIP
+1
View File
@@ -5,3 +5,4 @@ metadata:
labels: labels:
app.kubernetes.io/name: game-servers app.kubernetes.io/name: game-servers
app.kubernetes.io/managed-by: orion app.kubernetes.io/managed-by: orion
pod-security.kubernetes.io/enforce: privileged
@@ -71,9 +71,6 @@ spec:
- | - |
export DOCKER_HOST=tcp://localhost:2375 export DOCKER_HOST=tcp://localhost:2375
exec wings exec wings
envFrom:
- secretRef:
name: wings-ark-sa-config
env: env:
- name: DOCKER_HOST - name: DOCKER_HOST
value: tcp://localhost:2375 value: tcp://localhost:2375
@@ -1,4 +1,4 @@
apiVersion: external-secrets.io/v1beta1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret
metadata: metadata:
name: wings-ark-sa-config name: wings-ark-sa-config
@@ -6,21 +6,13 @@ metadata:
spec: spec:
refreshInterval: 1h refreshInterval: 1h
secretStoreRef: secretStoreRef:
name: vault name: orion-vault
kind: ClusterSecretStore kind: ClusterSecretStore
target: target:
name: wings-ark-sa-config name: wings-ark-sa-config
creationPolicy: Owner creationPolicy: Owner
data: data:
- secretKey: WINGS_UUID - secretKey: config.yml
remoteRef: remoteRef:
key: wings/ark-sa key: Talos Cluster/wings/ark-sa
property: uuid property: config
- secretKey: WINGS_TOKEN
remoteRef:
key: wings/ark-sa
property: token
- secretKey: LOCALE
remoteRef:
key: wings/ark-sa
property: locale
@@ -9,6 +9,7 @@ metadata:
app.kubernetes.io/part-of: pelican app.kubernetes.io/part-of: pelican
game: valheim game: valheim
spec: spec:
replicas: 1
strategy: strategy:
type: Recreate type: Recreate
selector: selector:
@@ -22,44 +23,21 @@ spec:
spec: spec:
nodeSelector: nodeSelector:
kubernetes.io/arch: amd64 kubernetes.io/arch: amd64
containers: volumes:
- name: wings - name: wings-config
image: ghcr.io/pelican-dev/wings:latest secret:
env: secretName: wings-valheim-config
- name: DOCKER_HOST
value: tcp://localhost:2375
- name: WINGS_UID
value: "1000"
- name: WINGS_GID
value: "1000"
- name: WINGS_PORT
value: "8081"
- name: WINGS_API_SFTP_PORT
value: "2023"
- name: WINGS_SERVER_UUID
value: "9d09e83d-00c3-4404-07c0522a6c25"
envFrom:
- secretRef:
name: wings-valheim-config
volumeMounts:
- name: docker-socket - name: docker-socket
mountPath: /var/run/docker.sock emptyDir: {}
- name: wings-data - name: dind-storage
mountPath: /var/lib/wings emptyDir: {}
- name: server-data - name: server-data
mountPath: /mnt/server persistentVolumeClaim:
readinessProbe: claimName: wings-valheim-data
httpGet: - name: autostart-token
path: /ready secret:
port: 8081 secretName: pelican-autostart-key
initialDelaySeconds: 10 containers:
periodSeconds: 10
livenessProbe:
httpGet:
path: /health
port: 8081
initialDelaySeconds: 15
periodSeconds: 30
- name: dind - name: dind
image: docker:24-dind image: docker:24-dind
securityContext: securityContext:
@@ -72,47 +50,62 @@ spec:
mountPath: /var/run mountPath: /var/run
- name: dind-storage - name: dind-storage
mountPath: /var/lib/docker mountPath: /var/lib/docker
readinessProbe: resources:
exec: requests:
command: cpu: "500m"
- sh memory: "512Mi"
- -c limits:
- '[ -S /var/run/docker.sock ]' cpu: "1"
initialDelaySeconds: 5 memory: "1Gi"
periodSeconds: 5 - name: wings
- name: game-autostart image: ghcr.io/pelican-dev/wings:latest
image: curlimages/curl:latest
env:
- name: PELICAN_API_KEY
valueFrom:
secretKeyRef:
name: pelican-autostart-key
key: api_key
- name: SERVER_UUID
value: "9d09e83d-00c3-4404-07c0522a6c25"
command: command:
- /bin/sh - /bin/sh
- -c - -c
- | - |
echo "Waiting for Wings API to be ready..." export DOCKER_HOST=tcp://localhost:2375
while ! curl -sf http://localhost:8081/ready; do exec wings
sleep 2 env:
done - name: DOCKER_HOST
echo "Wings ready. Starting game server..." value: tcp://localhost:2375
while true; do - name: WATCHDOG_ENABLED
sleep 60 value: "true"
echo "Checking game server status..."
done
volumeMounts: volumeMounts:
- name: wings-config
mountPath: /etc/pterodactyl
readOnly: true
- name: docker-socket
mountPath: /var/run/docker.sock
- name: server-data - name: server-data
mountPath: /mnt/server mountPath: /mnt/server
volumes: resources:
- name: docker-socket requests:
emptyDir: {} cpu: "1"
- name: dind-storage memory: "2Gi"
emptyDir: {} limits:
- name: wings-data cpu: "4"
emptyDir: {} memory: "8Gi"
- name: server-data - name: game-autostart
persistentVolumeClaim: image: curlimages/curl:latest
claimName: wings-valheim-data command:
- /bin/sh
- -c
- |
while true; do
sleep 60
curl -sf -X POST "https://pelican.khalisio.com/api/client/servers/9d09e83d-00c3-4404-8f81-07c0522a6c25/power" \
-H "Authorization: Bearer $(cat /etc/secrets/autostart/api_key)" \
-H "Content-Type: application/json" \
-d '{"signal":"start"}' > /dev/null 2>&1 || true
done
volumeMounts:
- name: autostart-token
mountPath: /etc/secrets/autostart
readOnly: true
resources:
requests:
cpu: "50m"
memory: "64Mi"
limits:
cpu: "100m"
memory: "128Mi"
@@ -0,0 +1,18 @@
apiVersion: external-secrets.io/v1
kind: ExternalSecret
metadata:
name: wings-valheim-config
namespace: game-servers
spec:
refreshInterval: 1h
secretStoreRef:
name: orion-vault
kind: ClusterSecretStore
target:
name: wings-valheim-config
creationPolicy: Owner
data:
- secretKey: config.yml
remoteRef:
key: Talos Cluster/wings/valheim
property: config
@@ -1,12 +1,12 @@
apiVersion: v1 apiVersion: v1
kind: PersistentVolumeClaim kind: PersistentVolumeClaim
metadata: metadata:
name: media-data name: wings-valheim-data
namespace: media namespace: game-servers
spec: spec:
accessModes: accessModes:
- ReadWriteMany - ReadWriteOnce
storageClassName: longhorn storageClassName: longhorn
resources: resources:
requests: requests:
storage: 500Gi storage: 100Gi
@@ -9,4 +9,5 @@ spec:
storageClassName: longhorn storageClassName: longhorn
resources: resources:
requests: requests:
storage: 500Gi storage: 3Ti
@@ -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
+12
View File
@@ -0,0 +1,12 @@
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: pelican-panel-tls
namespace: pelican
spec:
secretName: pelican-panel-tls
issuerRef:
name: letsencrypt-prod
kind: ClusterIssuer
dnsNames:
- pelican.khalisio.com
+15 -22
View File
@@ -8,12 +8,9 @@ metadata:
app.kubernetes.io/component: panel app.kubernetes.io/component: panel
app.kubernetes.io/managed-by: orion app.kubernetes.io/managed-by: orion
spec: spec:
replicas: 2 replicas: 1
strategy: strategy:
type: RollingUpdate type: Recreate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
selector: selector:
matchLabels: matchLabels:
app.kubernetes.io/name: pelican app.kubernetes.io/name: pelican
@@ -24,12 +21,19 @@ spec:
app.kubernetes.io/name: pelican app.kubernetes.io/name: pelican
app.kubernetes.io/component: panel app.kubernetes.io/component: panel
spec: spec:
initContainers:
- name: fix-perms
image: busybox
command: ["sh", "-c", "chown -R 82:82 /pelican-data && chmod -R 770 /pelican-data"]
volumeMounts:
- name: data
mountPath: /pelican-data
containers: containers:
- name: panel - name: panel
image: ghcr.io/pelican-dev/panel:latest image: ghcr.io/pelican-dev/panel:latest
ports: ports:
- name: http - name: http
containerPort: 8080 containerPort: 80
protocol: TCP protocol: TCP
env: env:
- name: APP_ENV - name: APP_ENV
@@ -38,6 +42,10 @@ spec:
value: "Pelican" value: "Pelican"
- name: APP_URL - name: APP_URL
value: "https://pelican.khalisio.com" value: "https://pelican.khalisio.com"
- name: BEHIND_PROXY
value: "true"
- name: DB_CONNECTION
value: pgsql
- name: DB_HOST - name: DB_HOST
value: postgres.pelican.svc.cluster.local value: postgres.pelican.svc.cluster.local
- name: DB_PORT - name: DB_PORT
@@ -85,23 +93,8 @@ spec:
value: file value: file
volumeMounts: volumeMounts:
- name: data - name: data
mountPath: /var/www/app/storage mountPath: /pelican-data
- name: logs
mountPath: /var/www/app/storage/logs
- name: uploads
mountPath: /var/www/app/public/uploads
- name: pufferpanel
mountPath: /var/www/app/storage/pufferpanel
volumes: volumes:
- name: data - name: data
persistentVolumeClaim: persistentVolumeClaim:
claimName: pelican-data claimName: pelican-data
- name: logs
persistentVolumeClaim:
claimName: pelican-logs
- name: uploads
persistentVolumeClaim:
claimName: pelican-data
- name: pufferpanel
persistentVolumeClaim:
claimName: pelican-data
+7 -4
View File
@@ -1,23 +1,26 @@
apiVersion: external-secrets.io/v1beta1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret
metadata: metadata:
name: pelican-panel-app name: pelican-panel-app
namespace: pelican namespace: pelican
spec: spec:
refreshInterval: 1h refreshInterval: 1h
secretStoreRef:
name: orion-vault
kind: ClusterSecretStore
target: target:
name: pelican-panel-app name: pelican-panel-app
creationPolicy: Owner creationPolicy: Owner
data: data:
- secretKey: APP_KEY - secretKey: APP_KEY
remoteRef: remoteRef:
key: secret/data/Talos Cluster/pelican/panel/app key: Talos Cluster/pelican/panel/app
property: APP_KEY property: APP_KEY
- secretKey: SESSION_SECURE - secretKey: SESSION_SECURE
remoteRef: remoteRef:
key: secret/data/Talos Cluster/pelican/panel/app key: Talos Cluster/pelican/panel/app
property: SESSION_SECURE property: SESSION_SECURE
- secretKey: OAUTH_CLIENT_SECRET - secretKey: OAUTH_CLIENT_SECRET
remoteRef: remoteRef:
key: secret/data/Talos Cluster/pelican/panel/app key: Talos Cluster/pelican/panel/app
property: OAUTH_CLIENT_SECRET property: OAUTH_CLIENT_SECRET
@@ -1,15 +1,18 @@
apiVersion: external-secrets.io/v1beta1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret
metadata: metadata:
name: pelican-autostart-key name: pelican-autostart-key
namespace: pelican namespace: pelican
spec: spec:
refreshInterval: 1h refreshInterval: 1h
secretStoreRef:
name: orion-vault
kind: ClusterSecretStore
target: target:
name: pelican-autostart-key name: pelican-autostart-key
creationPolicy: Owner creationPolicy: Owner
data: data:
- secretKey: api_key - secretKey: api_key
remoteRef: remoteRef:
key: secret/data/Talos Cluster/pelican/panel/autostart key: Talos Cluster/pelican/panel/autostart
property: api_key property: api_key
+6 -3
View File
@@ -1,19 +1,22 @@
apiVersion: external-secrets.io/v1beta1 apiVersion: external-secrets.io/v1
kind: ExternalSecret kind: ExternalSecret
metadata: metadata:
name: pelican-panel-db name: pelican-panel-db
namespace: pelican namespace: pelican
spec: spec:
refreshInterval: 1h refreshInterval: 1h
secretStoreRef:
name: orion-vault
kind: ClusterSecretStore
target: target:
name: pelican-panel-db name: pelican-panel-db
creationPolicy: Owner creationPolicy: Owner
data: data:
- secretKey: DB_PASSWORD - secretKey: DB_PASSWORD
remoteRef: remoteRef:
key: secret/data/Talos Cluster/pelican/panel/db key: Talos Cluster/pelican/panel/db
property: DB_PASSWORD property: DB_PASSWORD
- secretKey: DB_USER - secretKey: DB_USER
remoteRef: remoteRef:
key: secret/data/Talos Cluster/pelican/panel/db key: Talos Cluster/pelican/panel/db
property: DB_USER property: DB_USER
+2 -1
View File
@@ -1,4 +1,4 @@
apiVersion: traefik.containo.us/v1alpha1 apiVersion: traefik.io/v1alpha1
kind: IngressRoute kind: IngressRoute
metadata: metadata:
name: pelican-panel name: pelican-panel
@@ -17,3 +17,4 @@ spec:
- name: pelican-panel - name: pelican-panel
port: 80 port: 80
scheme: http scheme: http
+82
View File
@@ -0,0 +1,82 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postgres-data
namespace: pelican
spec:
accessModes:
- ReadWriteOnce
storageClassName: longhorn
resources:
requests:
storage: 10Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: postgres
namespace: pelican
labels:
app.kubernetes.io/name: postgres
app.kubernetes.io/component: database
app.kubernetes.io/managed-by: orion
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app.kubernetes.io/name: postgres
app.kubernetes.io/component: database
template:
metadata:
labels:
app.kubernetes.io/name: postgres
app.kubernetes.io/component: database
spec:
containers:
- name: postgres
image: postgres:16
ports:
- containerPort: 5432
protocol: TCP
env:
- name: POSTGRES_DB
value: pelican
- name: POSTGRES_USER
valueFrom:
secretKeyRef:
name: pelican-panel-db
key: DB_USER
- name: POSTGRES_PASSWORD
valueFrom:
secretKeyRef:
name: pelican-panel-db
key: DB_PASSWORD
- name: PGDATA
value: /var/lib/postgresql/data/pgdata
volumeMounts:
- name: data
mountPath: /var/lib/postgresql/data
volumes:
- name: data
persistentVolumeClaim:
claimName: postgres-data
---
apiVersion: v1
kind: Service
metadata:
name: postgres
namespace: pelican
labels:
app.kubernetes.io/name: postgres
app.kubernetes.io/component: database
spec:
type: ClusterIP
selector:
app.kubernetes.io/name: postgres
app.kubernetes.io/component: database
ports:
- port: 5432
targetPort: 5432
protocol: TCP
+1 -1
View File
@@ -14,5 +14,5 @@ spec:
ports: ports:
- name: http - name: http
port: 80 port: 80
targetPort: 8080 targetPort: 80
protocol: TCP protocol: TCP
@@ -17,42 +17,28 @@ spec:
spec: spec:
containers: containers:
- name: bitwarden - name: bitwarden
image: bitwarden/server:latest image: vaultwarden/server:latest
ports: ports:
- containerPort: 80 - containerPort: 80
env: env:
- name: BW_ADMIN_DOMAIN
value: bitwarden.khalisio.com
- name: WEBSOCKETS_ENABLED
value: "true"
- name: SIGNUPS_ALLOWED - name: SIGNUPS_ALLOWED
value: "true" value: "true"
- name: WEBVAULT_ENABLED - name: DOMAIN
value: "true" value: https://bitwarden.khalisio.com
- name: IDENTITY_URL volumeMounts:
value: "https://bitwarden.khalisio.com" - name: bitwarden-data
- name: API_URL mountPath: /data
value: "https://bitwarden.khalisio.com"
- name: DATABASE_URL
value: "/bitwarden/data/bitwarden.db"
resources: resources:
requests: requests:
cpu: 100m cpu: 100m
memory: 256Mi memory: 128Mi
limits: limits:
cpu: 500m cpu: 500m
memory: 512Mi memory: 512Mi
volumeMounts:
- name: bitwarden-data
mountPath: /bitwarden
readinessProbe:
httpGet:
path: /healthz
port: 80
initialDelaySeconds: 15
periodSeconds: 10
livenessProbe:
httpGet:
path: /healthz
port: 80
initialDelaySeconds: 30
periodSeconds: 30
volumes: volumes:
- name: bitwarden-data - name: bitwarden-data
persistentVolumeClaim: persistentVolumeClaim:
@@ -6,7 +6,6 @@ metadata:
annotations: annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod cert-manager.io/cluster-issuer: letsencrypt-prod
traefik.ingress.kubernetes.io/router.entrypoints: websecure traefik.ingress.kubernetes.io/router.entrypoints: websecure
traefik.ingress.kubernetes.io/router.tls: "true"
spec: spec:
ingressClassName: traefik ingressClassName: traefik
tls: tls:
@@ -3,5 +3,5 @@ kind: Namespace
metadata: metadata:
name: security name: security
labels: labels:
app.kubernetes.io/name: bitwarden app.kubernetes.io/name: security
app.kubernetes.io/managed-by: orion app.kubernetes.io/managed-by: orion