# ========================================== # MONICA CRM - APACHE + POSTGRESQL # ========================================== # ------------------------ # POSTGRES STORAGE # ------------------------ --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: monica-postgres-pvc spec: accessModes: - ReadWriteOnce storageClassName: microk8s-hostpath resources: requests: storage: 1Gi # ------------------------ # MONICA STORAGE (uploads) # ------------------------ --- 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 (Apache Image) # ------------------------ --- 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_URL value: https://crm.juntekim.com - name: APP_KEY value: base64:REPLACE_WITH_GENERATED_KEY - 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 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-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