From 40f5fc1111a821a5d63a5fea122da10f26f32f2b Mon Sep 17 00:00:00 2001 From: Jeffrey Smeets Date: Sun, 7 Jun 2026 00:51:34 +0200 Subject: [PATCH] add Pelican panel manifests --- pelican/configmap.yaml | 20 ++++++++++++++ pelican/data-pvc.yaml | 12 +++++++++ pelican/deployment.yaml | 57 +++++++++++++++++++++++++++++++++++++++ pelican/postgres-pvc.yaml | 12 +++++++++ pelican/postgres-svc.yaml | 11 ++++++++ pelican/postgres.yaml | 55 +++++++++++++++++++++++++++++++++++++ pelican/redis-svc.yaml | 11 ++++++++ pelican/redis.yaml | 28 +++++++++++++++++++ 8 files changed, 206 insertions(+) create mode 100644 pelican/configmap.yaml create mode 100644 pelican/data-pvc.yaml create mode 100644 pelican/deployment.yaml create mode 100644 pelican/postgres-pvc.yaml create mode 100644 pelican/postgres-svc.yaml create mode 100644 pelican/postgres.yaml create mode 100644 pelican/redis-svc.yaml create mode 100644 pelican/redis.yaml diff --git a/pelican/configmap.yaml b/pelican/configmap.yaml new file mode 100644 index 0000000..ff8639e --- /dev/null +++ b/pelican/configmap.yaml @@ -0,0 +1,20 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: pelican-config + namespace: pelican +data: + APP_NAME: Pelican + APP_URL: https://pelican.jsme.be + BEHIND_PROXY: "true" + ADMIN_EMAIL: jeffreysmeets@jsme.be + DB_CONNECTION: pgsql + DB_HOST: pelican-postgres + DB_PORT: "5432" + CACHE_STORE: redis + QUEUE_CONNECTION: redis + SESSION_DRIVER: redis + REDIS_HOST: pelican-redis + REDIS_PORT: "6379" + XDG_DATA_HOME: /pelican-data + AWS_USE_PATH_STYLE_ENDPOINT: "true" diff --git a/pelican/data-pvc.yaml b/pelican/data-pvc.yaml new file mode 100644 index 0000000..c5ddc16 --- /dev/null +++ b/pelican/data-pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: pelican-data-pvc + namespace: pelican +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 2Gi diff --git a/pelican/deployment.yaml b/pelican/deployment.yaml new file mode 100644 index 0000000..255714c --- /dev/null +++ b/pelican/deployment.yaml @@ -0,0 +1,57 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: pelican + namespace: pelican +spec: + replicas: 1 + selector: + matchLabels: + app: pelican + template: + metadata: + labels: + app: pelican + spec: + restartPolicy: Always + terminationGracePeriodSeconds: 30 + securityContext: + fsGroup: 82 + containers: + - name: pelican + image: ghcr.io/pelican-dev/panel:latest + ports: + - containerPort: 80 + resources: + requests: + cpu: 100m + memory: 256Mi + limits: + cpu: 1000m + memory: 1Gi + envFrom: + - configMapRef: + name: pelican-config + env: + - name: DB_USERNAME + valueFrom: + secretKeyRef: + name: pelican-secrets + key: DB_USERNAME + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: pelican-secrets + key: DB_PASSWORD + - name: DB_DATABASE + valueFrom: + secretKeyRef: + name: pelican-secrets + key: DB_DATABASE + volumeMounts: + - name: pelican-data + mountPath: /pelican-data + volumes: + - name: pelican-data + persistentVolumeClaim: + claimName: pelican-data-pvc diff --git a/pelican/postgres-pvc.yaml b/pelican/postgres-pvc.yaml new file mode 100644 index 0000000..ef0c705 --- /dev/null +++ b/pelican/postgres-pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: pelican-postgres-pvc + namespace: pelican +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 5Gi diff --git a/pelican/postgres-svc.yaml b/pelican/postgres-svc.yaml new file mode 100644 index 0000000..7db6ba7 --- /dev/null +++ b/pelican/postgres-svc.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: pelican-postgres + namespace: pelican +spec: + selector: + app: pelican-postgres + ports: + - port: 5432 + targetPort: 5432 diff --git a/pelican/postgres.yaml b/pelican/postgres.yaml new file mode 100644 index 0000000..8f77e0f --- /dev/null +++ b/pelican/postgres.yaml @@ -0,0 +1,55 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: pelican-postgres + namespace: pelican +spec: + replicas: 1 + selector: + matchLabels: + app: pelican-postgres + serviceName: pelican-postgres + template: + metadata: + labels: + app: pelican-postgres + spec: + restartPolicy: Always + terminationGracePeriodSeconds: 60 + containers: + - name: postgres + image: postgres:17-alpine + resources: + requests: + cpu: 100m + memory: 256Mi + limits: + cpu: 500m + memory: 512Mi + ports: + - containerPort: 5432 + volumeMounts: + - name: pelican-postgres-data + mountPath: /var/lib/postgresql/data + env: + - name: PGDATA + value: /var/lib/postgresql/data/pgdata + - name: POSTGRES_USER + valueFrom: + secretKeyRef: + name: pelican-secrets + key: DB_USERNAME + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: pelican-secrets + key: DB_PASSWORD + - name: POSTGRES_DB + valueFrom: + secretKeyRef: + name: pelican-secrets + key: DB_DATABASE + volumes: + - name: pelican-postgres-data + persistentVolumeClaim: + claimName: pelican-postgres-pvc diff --git a/pelican/redis-svc.yaml b/pelican/redis-svc.yaml new file mode 100644 index 0000000..310f4a2 --- /dev/null +++ b/pelican/redis-svc.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: Service +metadata: + name: pelican-redis + namespace: pelican +spec: + selector: + app: pelican-redis + ports: + - port: 6379 + targetPort: 6379 diff --git a/pelican/redis.yaml b/pelican/redis.yaml new file mode 100644 index 0000000..9fcb95b --- /dev/null +++ b/pelican/redis.yaml @@ -0,0 +1,28 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: pelican-redis + namespace: pelican +spec: + replicas: 1 + selector: + matchLabels: + app: pelican-redis + template: + metadata: + labels: + app: pelican-redis + spec: + restartPolicy: Always + containers: + - name: valkey + image: valkey/valkey:8-alpine + resources: + requests: + cpu: 50m + memory: 64Mi + limits: + cpu: 200m + memory: 256Mi + ports: + - containerPort: 6379