2026-04-04 12:53:27 +01:00
|
|
|
# Penpot — open-source design tool (frontend + backend + exporter).
|
|
|
|
|
# OIDC-only auth via Hydra; assets on SeaweedFS; DB on shared CNPG postgres.
|
|
|
|
|
---
|
|
|
|
|
apiVersion: v1
|
|
|
|
|
kind: ConfigMap
|
|
|
|
|
metadata:
|
|
|
|
|
name: penpot-config
|
|
|
|
|
namespace: devtools
|
|
|
|
|
data:
|
|
|
|
|
PENPOT_PUBLIC_URI: "https://designer.DOMAIN_SUFFIX"
|
|
|
|
|
PENPOT_DATABASE_URI: "postgresql://postgres-rw.data.svc.cluster.local:5432/penpot_db"
|
|
|
|
|
PENPOT_DATABASE_USERNAME: "penpot"
|
|
|
|
|
PENPOT_REDIS_URI: "redis://valkey.data.svc.cluster.local:6379/3"
|
|
|
|
|
PENPOT_ASSETS_STORAGE_BACKEND: "assets-s3"
|
|
|
|
|
PENPOT_STORAGE_ASSETS_S3_ENDPOINT: "http://seaweedfs-filer.storage.svc.cluster.local:8333"
|
|
|
|
|
PENPOT_STORAGE_ASSETS_S3_BUCKET: "penpot"
|
2026-04-04 15:37:45 +01:00
|
|
|
PENPOT_STORAGE_ASSETS_S3_REGION: "us-east-1"
|
|
|
|
|
AWS_REGION: "us-east-1"
|
2026-04-04 12:53:27 +01:00
|
|
|
PENPOT_OIDC_BASE_URI: "https://auth.DOMAIN_SUFFIX/"
|
|
|
|
|
PENPOT_TELEMETRY_ENABLED: "false"
|
2026-04-04 15:37:45 +01:00
|
|
|
PENPOT_FLAGS: "enable-login-with-oidc disable-login-with-password disable-email-verification enable-oidc-registration enable-backend-api-doc enable-auto-file-snapshot enable-tiered-file-data-storage enable-webhooks enable-access-tokens enable-cors"
|
2026-04-04 12:53:27 +01:00
|
|
|
---
|
|
|
|
|
# ── Frontend (nginx SPA) ─────────────────────────────────────────────────────
|
|
|
|
|
apiVersion: apps/v1
|
|
|
|
|
kind: Deployment
|
|
|
|
|
metadata:
|
|
|
|
|
name: penpot-frontend
|
|
|
|
|
namespace: devtools
|
|
|
|
|
spec:
|
|
|
|
|
replicas: 1
|
|
|
|
|
selector:
|
|
|
|
|
matchLabels:
|
|
|
|
|
app: penpot-frontend
|
|
|
|
|
template:
|
|
|
|
|
metadata:
|
|
|
|
|
labels:
|
|
|
|
|
app: penpot-frontend
|
|
|
|
|
spec:
|
|
|
|
|
containers:
|
|
|
|
|
- name: penpot-frontend
|
|
|
|
|
image: penpotapp/frontend:latest
|
|
|
|
|
ports:
|
|
|
|
|
- name: http
|
|
|
|
|
containerPort: 8080
|
|
|
|
|
env:
|
|
|
|
|
- name: PENPOT_FLAGS
|
|
|
|
|
valueFrom:
|
|
|
|
|
configMapKeyRef:
|
|
|
|
|
name: penpot-config
|
|
|
|
|
key: PENPOT_FLAGS
|
|
|
|
|
- name: PENPOT_BACKEND_URI
|
|
|
|
|
value: "http://penpot-backend:6060"
|
|
|
|
|
- name: PENPOT_EXPORTER_URI
|
|
|
|
|
value: "http://penpot-exporter:6061"
|
|
|
|
|
resources:
|
|
|
|
|
requests:
|
|
|
|
|
cpu: 50m
|
|
|
|
|
memory: 64Mi
|
|
|
|
|
limits:
|
|
|
|
|
memory: 256Mi
|
|
|
|
|
---
|
|
|
|
|
apiVersion: v1
|
|
|
|
|
kind: Service
|
|
|
|
|
metadata:
|
|
|
|
|
name: penpot-frontend
|
|
|
|
|
namespace: devtools
|
|
|
|
|
spec:
|
|
|
|
|
selector:
|
|
|
|
|
app: penpot-frontend
|
|
|
|
|
ports:
|
|
|
|
|
- name: http
|
|
|
|
|
port: 8080
|
|
|
|
|
targetPort: http
|
|
|
|
|
---
|
|
|
|
|
# ── Backend (JVM API + websockets) ───────────────────────────────────────────
|
|
|
|
|
apiVersion: apps/v1
|
|
|
|
|
kind: Deployment
|
|
|
|
|
metadata:
|
|
|
|
|
name: penpot-backend
|
|
|
|
|
namespace: devtools
|
|
|
|
|
spec:
|
|
|
|
|
replicas: 1
|
|
|
|
|
selector:
|
|
|
|
|
matchLabels:
|
|
|
|
|
app: penpot-backend
|
|
|
|
|
template:
|
|
|
|
|
metadata:
|
|
|
|
|
labels:
|
|
|
|
|
app: penpot-backend
|
|
|
|
|
spec:
|
|
|
|
|
containers:
|
|
|
|
|
- name: penpot-backend
|
|
|
|
|
image: penpotapp/backend:latest
|
|
|
|
|
ports:
|
|
|
|
|
- name: http
|
|
|
|
|
containerPort: 6060
|
|
|
|
|
envFrom:
|
|
|
|
|
- configMapRef:
|
|
|
|
|
name: penpot-config
|
|
|
|
|
env:
|
|
|
|
|
- name: PENPOT_SECRET_KEY
|
|
|
|
|
valueFrom:
|
|
|
|
|
secretKeyRef:
|
|
|
|
|
name: penpot-app-secrets
|
|
|
|
|
key: secret-key
|
|
|
|
|
- name: PENPOT_DATABASE_PASSWORD
|
|
|
|
|
valueFrom:
|
|
|
|
|
secretKeyRef:
|
|
|
|
|
name: penpot-db-credentials
|
|
|
|
|
key: password
|
|
|
|
|
- name: PENPOT_OIDC_CLIENT_ID
|
|
|
|
|
valueFrom:
|
|
|
|
|
secretKeyRef:
|
|
|
|
|
name: oidc-penpot
|
|
|
|
|
key: CLIENT_ID
|
|
|
|
|
- name: PENPOT_OIDC_CLIENT_SECRET
|
|
|
|
|
valueFrom:
|
|
|
|
|
secretKeyRef:
|
|
|
|
|
name: oidc-penpot
|
|
|
|
|
key: CLIENT_SECRET
|
|
|
|
|
- name: PENPOT_STORAGE_ASSETS_S3_ACCESS_KEY_ID
|
|
|
|
|
valueFrom:
|
|
|
|
|
secretKeyRef:
|
|
|
|
|
name: penpot-s3-credentials
|
|
|
|
|
key: access-key
|
|
|
|
|
- name: PENPOT_STORAGE_ASSETS_S3_SECRET_ACCESS_KEY
|
|
|
|
|
valueFrom:
|
|
|
|
|
secretKeyRef:
|
|
|
|
|
name: penpot-s3-credentials
|
|
|
|
|
key: secret-key
|
2026-04-04 15:37:45 +01:00
|
|
|
- name: AWS_ACCESS_KEY_ID
|
|
|
|
|
valueFrom:
|
|
|
|
|
secretKeyRef:
|
|
|
|
|
name: penpot-s3-credentials
|
|
|
|
|
key: access-key
|
|
|
|
|
- name: AWS_SECRET_ACCESS_KEY
|
|
|
|
|
valueFrom:
|
|
|
|
|
secretKeyRef:
|
|
|
|
|
name: penpot-s3-credentials
|
|
|
|
|
key: secret-key
|
2026-04-04 12:53:27 +01:00
|
|
|
resources:
|
|
|
|
|
requests:
|
|
|
|
|
cpu: 100m
|
|
|
|
|
memory: 512Mi
|
|
|
|
|
limits:
|
|
|
|
|
memory: 1Gi
|
|
|
|
|
---
|
|
|
|
|
apiVersion: v1
|
|
|
|
|
kind: Service
|
|
|
|
|
metadata:
|
|
|
|
|
name: penpot-backend
|
|
|
|
|
namespace: devtools
|
|
|
|
|
spec:
|
|
|
|
|
selector:
|
|
|
|
|
app: penpot-backend
|
|
|
|
|
ports:
|
|
|
|
|
- name: http
|
|
|
|
|
port: 6060
|
|
|
|
|
targetPort: http
|
|
|
|
|
---
|
|
|
|
|
# ── Exporter (headless Chromium for PDF/SVG) ─────────────────────────────────
|
|
|
|
|
apiVersion: apps/v1
|
|
|
|
|
kind: Deployment
|
|
|
|
|
metadata:
|
|
|
|
|
name: penpot-exporter
|
|
|
|
|
namespace: devtools
|
|
|
|
|
spec:
|
|
|
|
|
replicas: 1
|
|
|
|
|
selector:
|
|
|
|
|
matchLabels:
|
|
|
|
|
app: penpot-exporter
|
|
|
|
|
template:
|
|
|
|
|
metadata:
|
|
|
|
|
labels:
|
|
|
|
|
app: penpot-exporter
|
|
|
|
|
spec:
|
|
|
|
|
containers:
|
|
|
|
|
- name: penpot-exporter
|
|
|
|
|
image: penpotapp/exporter:latest
|
|
|
|
|
ports:
|
|
|
|
|
- name: http
|
|
|
|
|
containerPort: 6061
|
|
|
|
|
env:
|
|
|
|
|
- name: PENPOT_SECRET_KEY
|
|
|
|
|
valueFrom:
|
|
|
|
|
secretKeyRef:
|
|
|
|
|
name: penpot-app-secrets
|
|
|
|
|
key: secret-key
|
|
|
|
|
- name: PENPOT_PUBLIC_URI
|
|
|
|
|
valueFrom:
|
|
|
|
|
configMapKeyRef:
|
|
|
|
|
name: penpot-config
|
|
|
|
|
key: PENPOT_PUBLIC_URI
|
|
|
|
|
- name: PENPOT_REDIS_URI
|
|
|
|
|
valueFrom:
|
|
|
|
|
configMapKeyRef:
|
|
|
|
|
name: penpot-config
|
|
|
|
|
key: PENPOT_REDIS_URI
|
|
|
|
|
resources:
|
|
|
|
|
requests:
|
|
|
|
|
cpu: 50m
|
|
|
|
|
memory: 256Mi
|
|
|
|
|
limits:
|
|
|
|
|
memory: 512Mi
|
|
|
|
|
---
|
|
|
|
|
apiVersion: v1
|
|
|
|
|
kind: Service
|
|
|
|
|
metadata:
|
|
|
|
|
name: penpot-exporter
|
|
|
|
|
namespace: devtools
|
|
|
|
|
spec:
|
|
|
|
|
selector:
|
|
|
|
|
app: penpot-exporter
|
|
|
|
|
ports:
|
|
|
|
|
- name: http
|
|
|
|
|
port: 6061
|
|
|
|
|
targetPort: http
|