save to main

This commit is contained in:
Jun-te Kim 2026-02-18 00:22:20 +00:00
parent e2b2a99155
commit 138ff30dd5

304
postiz/postiz.yaml Normal file
View file

@ -0,0 +1,304 @@
# ======================================================
# POSTIZ FULL STACK (KUBERNETES - SINGLE FILE)
# ======================================================
# -------------------------
# POSTGRES (APP DB)
# -------------------------
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: postiz-db-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: microk8s-hostpath
resources:
requests:
storage: 2Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: postiz-postgres
spec:
replicas: 1
selector:
matchLabels:
app: postiz-postgres
template:
metadata:
labels:
app: postiz-postgres
spec:
containers:
- name: postgres
image: postgres:17-alpine
env:
- name: POSTGRES_USER
value: postiz-user
- name: POSTGRES_PASSWORD
value: postiz-password
- name: POSTGRES_DB
value: postiz-db-local
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgres-storage
volumes:
- name: postgres-storage
persistentVolumeClaim:
claimName: postiz-db-pvc
---
apiVersion: v1
kind: Service
metadata:
name: postiz-postgres
spec:
selector:
app: postiz-postgres
ports:
- port: 5432
# -------------------------
# REDIS
# -------------------------
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: postiz-redis
spec:
replicas: 1
selector:
matchLabels:
app: postiz-redis
template:
metadata:
labels:
app: postiz-redis
spec:
containers:
- name: redis
image: redis:7.2
ports:
- containerPort: 6379
---
apiVersion: v1
kind: Service
metadata:
name: postiz-redis
spec:
selector:
app: postiz-redis
ports:
- port: 6379
# -------------------------
# TEMPORAL POSTGRES
# -------------------------
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: temporal-postgres
spec:
replicas: 1
selector:
matchLabels:
app: temporal-postgres
template:
metadata:
labels:
app: temporal-postgres
spec:
containers:
- name: postgres
image: postgres:16
env:
- name: POSTGRES_USER
value: temporal
- name: POSTGRES_PASSWORD
value: temporal
---
apiVersion: v1
kind: Service
metadata:
name: temporal-postgres
spec:
selector:
app: temporal-postgres
ports:
- port: 5432
# -------------------------
# ELASTICSEARCH
# -------------------------
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: temporal-elasticsearch
spec:
replicas: 1
selector:
matchLabels:
app: temporal-elasticsearch
template:
metadata:
labels:
app: temporal-elasticsearch
spec:
containers:
- name: elasticsearch
image: elasticsearch:7.17.27
env:
- name: discovery.type
value: single-node
- name: ES_JAVA_OPTS
value: "-Xms256m -Xmx256m"
ports:
- containerPort: 9200
---
apiVersion: v1
kind: Service
metadata:
name: temporal-elasticsearch
spec:
selector:
app: temporal-elasticsearch
ports:
- port: 9200
# -------------------------
# TEMPORAL
# -------------------------
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: temporal
spec:
replicas: 1
selector:
matchLabels:
app: temporal
template:
metadata:
labels:
app: temporal
spec:
containers:
- name: temporal
image: temporalio/auto-setup:1.28.1
env:
- name: DB
value: postgres12
- name: POSTGRES_USER
value: temporal
- name: POSTGRES_PWD
value: temporal
- name: POSTGRES_SEEDS
value: temporal-postgres
- name: ENABLE_ES
value: "true"
- name: ES_SEEDS
value: temporal-elasticsearch
ports:
- containerPort: 7233
---
apiVersion: v1
kind: Service
metadata:
name: temporal
spec:
selector:
app: temporal
ports:
- port: 7233
# -------------------------
# POSTIZ APP
# -------------------------
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: postiz
spec:
replicas: 1
selector:
matchLabels:
app: postiz
template:
metadata:
labels:
app: postiz
spec:
containers:
- name: postiz
image: ghcr.io/gitroomhq/postiz-app:latest
env:
- name: MAIN_URL
value: https://postiz.juntekim.com
- name: FRONTEND_URL
value: https://postiz.juntekim.com
- name: NEXT_PUBLIC_BACKEND_URL
value: https://postiz.juntekim.com/api
- name: JWT_SECRET
value: change-me
- name: DATABASE_URL
value: postgresql://postiz-user:postiz-password@postiz-postgres:5432/postiz-db-local
- name: REDIS_URL
value: redis://postiz-redis:6379
- name: TEMPORAL_ADDRESS
value: temporal:7233
- name: STORAGE_PROVIDER
value: local
- name: UPLOAD_DIRECTORY
value: /uploads
- name: NEXT_PUBLIC_UPLOAD_DIRECTORY
value: /uploads
ports:
- containerPort: 5000
---
apiVersion: v1
kind: Service
metadata:
name: postiz
spec:
selector:
app: postiz
ports:
- port: 5000
targetPort: 5000
# -------------------------
# TRAEFIK INGRESS
# -------------------------
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: postiz-ingress
spec:
entryPoints:
- websecure
routes:
- match: Host(`postiz.juntekim.com`)
kind: Rule
services:
- name: postiz
port: 5000
tls:
certResolver: myresolver
domains:
- main: postiz.juntekim.com