Merge pull request #72 from MealCraft/feature/attempt_2_on_stripe_to_invoice

Feature/attempt 2 on stripe to invoice
This commit is contained in:
Jun-te Kim 2026-02-17 18:42:03 +00:00 committed by GitHub
commit 15d4d2c082
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 425 additions and 1 deletions

180
crm/crm.yaml Normal file
View file

@ -0,0 +1,180 @@
# ==========================================
# MONICA CRM (OFFICIAL DOCKER STRUCTURE)
# ==========================================
# ------------------------
# DATABASE STORAGE
# ------------------------
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: monica-db-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: microk8s-hostpath
resources:
requests:
storage: 2Gi
# ------------------------
# MONICA STORAGE
# ------------------------
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: monica-storage-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: microk8s-hostpath
resources:
requests:
storage: 1Gi
# ------------------------
# MARIADB
# ------------------------
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: monica-db
spec:
replicas: 1
selector:
matchLabels:
app: monica-db
template:
metadata:
labels:
app: monica-db
spec:
nodeSelector:
kubernetes.io/hostname: mist
containers:
- name: mariadb
image: mariadb:10.11
env:
- name: MYSQL_ROOT_PASSWORD
value: rootpassword
- name: MYSQL_DATABASE
value: monica
- name: MYSQL_USER
value: monica
- name: MYSQL_PASSWORD
value: monica_password
volumeMounts:
- mountPath: /var/lib/mysql
name: db-storage
volumes:
- name: db-storage
persistentVolumeClaim:
claimName: monica-db-pvc
---
apiVersion: v1
kind: Service
metadata:
name: monica-db
spec:
selector:
app: monica-db
ports:
- port: 3306
# ------------------------
# 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:apache
env:
- name: APP_ENV
value: production
- name: APP_DEBUG
value: "false"
- name: APP_URL
value: https://crm.juntekim.com
- name: APP_KEY
value: base64:EKAoON4NgmB9cOZCLSG0z+fy5KYtMKXL6m1AKBBdeOU=
- name: DB_CONNECTION
value: mysql
- name: DB_HOST
value: monica-db
- name: DB_PORT
value: "3306"
- name: DB_DATABASE
value: monica
- name: DB_USERNAME
value: monica
- name: DB_PASSWORD
value: monica_password
- name: CACHE_DRIVER
value: database
- name: SESSION_DRIVER
value: database
- name: QUEUE_CONNECTION
value: database
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
targetPort: 80
# ------------------------
# TRAEFIK INGRESS
# ------------------------
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: monica-ingress
spec:
entryPoints:
- websecure
routes:
- match: Host(`crm.juntekim.com`)
kind: Rule
services:
- name: monica
port: 80
tls:
certResolver: myresolver
domains:
- main: crm.juntekim.com

65
draw/draw.yaml Normal file
View file

@ -0,0 +1,65 @@
# ================================
# EXCALIDRAW - STATELESS
# https://excalidraw.com
# ================================
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: excalidraw
labels:
app: excalidraw
spec:
replicas: 1
selector:
matchLabels:
app: excalidraw
template:
metadata:
labels:
app: excalidraw
spec:
containers:
- name: excalidraw
image: excalidraw/excalidraw:latest
ports:
- containerPort: 80
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "300m"
memory: "256Mi"
---
apiVersion: v1
kind: Service
metadata:
name: excalidraw
spec:
selector:
app: excalidraw
ports:
- port: 80
targetPort: 80
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: excalidraw-ingressroute
spec:
entryPoints:
- websecure
routes:
- match: Host(`draw.juntekim.com`)
kind: Rule
services:
- name: excalidraw
port: 80
tls:
certResolver: myresolver
domains:
- main: draw.juntekim.com

View file

@ -16,4 +16,6 @@ spec:
tls:
certResolver: myresolver
domains:
- main: ${HOSTNAME}
- main: ${HOSTNAME}
sans:
- www.${HOSTNAME}

68
pdf/pdf.yaml Normal file
View file

@ -0,0 +1,68 @@
# ================================
# STIRLING PDF - STATELESS
# https://github.com/Stirling-Tools/Stirling-PDF
# ================================
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: stirling-pdf
labels:
app: stirling-pdf
spec:
replicas: 1
selector:
matchLabels:
app: stirling-pdf
template:
metadata:
labels:
app: stirling-pdf
spec:
containers:
- name: stirling-pdf
image: frooodle/s-pdf:latest
ports:
- containerPort: 8080
env:
- name: DOCKER_ENABLE_SECURITY
value: "false"
resources:
requests:
cpu: "200m"
memory: "512Mi"
limits:
cpu: "1"
memory: "1Gi"
---
apiVersion: v1
kind: Service
metadata:
name: stirling-pdf
spec:
selector:
app: stirling-pdf
ports:
- port: 8080
targetPort: 8080
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: stirling-pdf-ingressroute
spec:
entryPoints:
- websecure
routes:
- match: Host(`pdf.juntekim.com`)
kind: Rule
services:
- name: stirling-pdf
port: 8080
tls:
certResolver: myresolver
domains:
- main: pdf.juntekim.com

View file

@ -0,0 +1,109 @@
# ================================
# UPTIME KUMA - SIMPLE DEPLOYMENT
# https://uptime.kuma.pet/?ref=selfh.st
# ================================
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: uptime-kuma-pv
spec:
capacity:
storage: 500Mi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: uptime-kuma-local
local:
path: /home/kimjunte/k8s_storage/uptime-kuma
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- mist
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: uptime-kuma-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: uptime-kuma-local
resources:
requests:
storage: 500Mi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: uptime-kuma
labels:
app: uptime-kuma
spec:
replicas: 1
selector:
matchLabels:
app: uptime-kuma
template:
metadata:
labels:
app: uptime-kuma
spec:
nodeSelector:
kubernetes.io/hostname: mist
containers:
- name: uptime-kuma
image: louislam/uptime-kuma:latest
ports:
- containerPort: 3001
env:
- name: PUID
value: "1000"
- name: PGID
value: "1000"
volumeMounts:
- name: uptime-kuma-data
mountPath: /app/data
volumes:
- name: uptime-kuma-data
persistentVolumeClaim:
claimName: uptime-kuma-pvc
---
apiVersion: v1
kind: Service
metadata:
name: uptime-kuma
spec:
selector:
app: uptime-kuma
ports:
- port: 3001
targetPort: 3001
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: uptime-kuma-ingressroute
spec:
entryPoints:
- websecure
routes:
- match: Host(`uptime.kuma.juntekim.com`)
kind: Rule
services:
- name: uptime-kuma
port: 3001
tls:
certResolver: myresolver
domains:
- main: uptime.kuma.juntekim.com