diff --git a/kube-deploy.yaml b/kube-deploy.yaml new file mode 100644 index 0000000..c358379 --- /dev/null +++ b/kube-deploy.yaml @@ -0,0 +1,235 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: nexo-cloud + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: postgres-data + namespace: nexo-cloud +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi + +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: nexo-cloud-storage + namespace: nexo-cloud +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 5Gi + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nexo-cloud + namespace: nexo-cloud +spec: + replicas: 2 + selector: + matchLabels: + app: nexo-cloud + template: + metadata: + labels: + app: nexo-cloud + spec: + containers: + - name: nexo-cloud + image: git.masscivicdynamic.com/masscivicdynamic/nexo-cloud:latest + ports: + - containerPort: 8000 + env: + - name: APP_ENV + value: production + - name: APP_KEY + valueFrom: + secretKeyRef: + name: nexo-cloud-secret + key: app-key + - name: DB_HOST + value: postgres + - name: DB_PORT + value: "5432" + - name: DB_DATABASE + value: laravel + - name: DB_USERNAME + valueFrom: + secretKeyRef: + name: nexo-cloud-db-secret + key: username + - name: DB_PASSWORD + valueFrom: + secretKeyRef: + name: nexo-cloud-db-secret + key: password + - name: REDIS_HOST + value: redis + - name: REDIS_PORT + value: "6379" + volumeMounts: + - name: storage + mountPath: /var/www/html/storage + volumes: + - name: storage + persistentVolumeClaim: + claimName: nexo-cloud-storage + +--- +apiVersion: v1 +kind: Service +metadata: + name: nexo-cloud-service + namespace: nexo-cloud +spec: + selector: + app: laravel + ports: + - protocol: TCP + port: 80 + targetPort: 8000 + type: LoadBalancer + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: postgres + namespace: nexo-cloud +spec: + replicas: 1 + selector: + matchLabels: + app: postgres + template: + metadata: + labels: + app: postgres + spec: + containers: + - name: postgres + image: postgres:16 + ports: + - containerPort: 5432 + env: + - name: POSTGRES_DB + value: laravel + - name: POSTGRES_USER + valueFrom: + secretKeyRef: + name: nexo-cloud-db-secret + key: username + - name: POSTGRES_PASSWORD + valueFrom: + secretKeyRef: + name: nexo-cloud-db-secret + key: password + volumeMounts: + - name: postgres-data + mountPath: /var/lib/postgresql/data + volumes: + - name: postgres-data + persistentVolumeClaim: + claimName: postgres-data + +--- +apiVersion: v1 +kind: Service +metadata: + name: postgres + namespace: nexo-cloud +spec: + selector: + app: postgres + ports: + - protocol: TCP + port: 5432 + targetPort: 5432 + type: ClusterIP + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: redis + namespace: nexo-cloud +spec: + replicas: 1 + selector: + matchLabels: + app: redis + template: + metadata: + labels: + app: redis + spec: + containers: + - name: redis + image: redis:7.2 + ports: + - containerPort: 6379 + +--- +apiVersion: v1 +kind: Service +metadata: + name: redis + namespace: nexo-cloud +spec: + selector: + app: redis + ports: + - protocol: TCP + port: 6379 + targetPort: 6379 + type: ClusterIP + +--- +apiVersion: batch/v1 +kind: CronJob +metadata: + name: nexo-cloud-scheduler + namespace: nexo-cloud +spec: + schedule: "*/5 * * * *" + jobTemplate: + spec: + template: + spec: + containers: + - name: scheduler + image: git.masscivicdynamic.com/masscivicdynamic/nexo-cloud:latest + command: ["php", "/var/www/html/artisan", "schedule:run"] + restartPolicy: OnFailure + +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: nexo-cloud-worker + namespace: nexo-cloud +spec: + replicas: 2 + selector: + matchLabels: + app: nexo-cloud-worker + template: + metadata: + labels: + app: nexo-cloud-worker + spec: + containers: + - name: worker + image: git.masscivicdynamic.com/masscivicdynamic/nexo-cloud:latest + command: ["php", "/var/www/html/artisan", "queue:work", "--tries=3"]