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"]