diff --git a/crm/crm.yaml b/crm/crm.yaml index 1a18402..52ba14e 100644 --- a/crm/crm.yaml +++ b/crm/crm.yaml @@ -1,2 +1,180 @@ -# foo, monica crm -# https://www.monicahq.com/ \ No newline at end of file +# ========================================== +# 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