juntekim.com/crm/crm.yaml
Jun-te Kim e8b97d46a3 crm
2026-02-16 19:07:32 +00:00

170 lines
3.4 KiB
YAML

# ================================
# MONICA CRM - SIMPLE SETUP
# https://docs.monicahq.com/
# ================================
# ------------------
# POSTGRES STORAGE
# ------------------
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: monica-postgres-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: microk8s-hostpath
resources:
requests:
storage: 1Gi
# ------------------
# MONICA STORAGE
# ------------------
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: monica-storage-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: microk8s-hostpath
resources:
requests:
storage: 500Mi
# ------------------
# POSTGRES
# ------------------
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: monica-postgres
spec:
replicas: 1
selector:
matchLabels:
app: monica-postgres
template:
metadata:
labels:
app: monica-postgres
spec:
nodeSelector:
kubernetes.io/hostname: mist
containers:
- name: postgres
image: postgres:15
env:
- name: POSTGRES_DB
value: monica
- name: POSTGRES_USER
value: monica
- name: POSTGRES_PASSWORD
value: monica_password
volumeMounts:
- mountPath: /var/lib/postgresql/data
name: postgres-storage
volumes:
- name: postgres-storage
persistentVolumeClaim:
claimName: monica-postgres-pvc
---
apiVersion: v1
kind: Service
metadata:
name: monica-postgres
spec:
selector:
app: monica-postgres
ports:
- port: 5432
# ------------------
# MONICA APP
# ------------------
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: monica
spec:
replicas: 1
selector:
matchLabels:
app: monica
template:
metadata:
labels:
app: monica
spec:
nodeSelector:
kubernetes.io/hostname: mist
containers:
- name: monica
image: monica:latest
env:
- name: DB_CONNECTION
value: pgsql
- name: DB_HOST
value: monica-postgres
- name: DB_PORT
value: "5432"
- name: DB_DATABASE
value: monica
- name: DB_USERNAME
value: monica
- name: DB_PASSWORD
value: monica_password
- name: APP_ENV
value: production
- name: APP_KEY
value: base64:SomeRandomGeneratedKeyHere
- name: APP_URL
value: https://crm.juntekim.com
ports:
- containerPort: 80
volumeMounts:
- mountPath: /var/www/html/storage
name: monica-storage
volumes:
- name: monica-storage
persistentVolumeClaim:
claimName: monica-storage-pvc
---
apiVersion: v1
kind: Service
metadata:
name: monica
spec:
selector:
app: monica
ports:
- port: 80
# ------------------
# TRAEFIK INGRESS
# ------------------
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: monica-ingressroute
spec:
entryPoints:
- websecure
routes:
- match: Host(`crm.juntekim.com`)
kind: Rule
services:
- name: monica
port: 80
tls:
certResolver: myresolver
domains:
- main: crm.juntekim.com