304 lines
5.9 KiB
YAML
304 lines
5.9 KiB
YAML
# ======================================================
|
|
# 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
|
|
|