- Definition of extra eveai_ops service to run (db) jobs

- Definition of manifests for all jobs
- Definition of manifests for all eveai services
This commit is contained in:
Josako
2025-09-03 15:20:54 +02:00
parent 898bb32318
commit 2a0c92b064
34 changed files with 1345 additions and 26 deletions

View File

@@ -0,0 +1,61 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: eveai-chat-workers
namespace: eveai-staging
labels:
app: eveai-chat-workers
component: backend
role: worker
spec:
replicas: 1
selector:
matchLabels:
app: eveai-chat-workers
template:
metadata:
labels:
app: eveai-chat-workers
component: backend
role: worker
spec:
containers:
- name: eveai-chat-workers
image: josakola/eveai_chat_workers:latest
envFrom:
- secretRef:
name: eveai-secrets
env:
- name: COMPONENT_NAME
value: "eveai_chat_workers"
- name: ROLE
value: "worker"
- name: CELERY_CONCURRENCY
value: "1"
- name: CELERY_LOGLEVEL
value: "DEBUG"
- name: CELERY_MAX_TASKS_PER_CHILD
value: "1000"
- name: CELERY_PREFETCH
value: "1"
- name: CELERY_QUEUE_NAME
value: "llm_interactions"
- name: PUSH_GATEWAY_HOST
valueFrom:
secretKeyRef:
name: eveai-secrets
key: PUSH_GATEWAY_HOST
optional: true
- name: PUSH_GATEWAY_PORT
valueFrom:
secretKeyRef:
name: eveai-secrets
key: PUSH_GATEWAY_PORT
optional: true
resources:
requests:
cpu: "500m"
memory: "1Gi"
limits:
cpu: "2"
memory: "3Gi"

View File

@@ -0,0 +1,61 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: eveai-entitlements
namespace: eveai-staging
labels:
app: eveai-entitlements
component: backend
role: worker
spec:
replicas: 1
selector:
matchLabels:
app: eveai-entitlements
template:
metadata:
labels:
app: eveai-entitlements
component: backend
role: worker
spec:
containers:
- name: eveai-entitlements
image: josakola/eveai_entitlements:latest
envFrom:
- secretRef:
name: eveai-secrets
env:
- name: COMPONENT_NAME
value: "eveai_entitlements"
- name: ROLE
value: "worker"
- name: CELERY_CONCURRENCY
value: "1"
- name: CELERY_LOGLEVEL
value: "DEBUG"
- name: CELERY_MAX_TASKS_PER_CHILD
value: "1000"
- name: CELERY_PREFETCH
value: "1"
- name: CELERY_QUEUE_NAME
value: "entitlements"
- name: PUSH_GATEWAY_HOST
valueFrom:
secretKeyRef:
name: eveai-secrets
key: PUSH_GATEWAY_HOST
optional: true
- name: PUSH_GATEWAY_PORT
valueFrom:
secretKeyRef:
name: eveai-secrets
key: PUSH_GATEWAY_PORT
optional: true
resources:
requests:
cpu: "100m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"

View File

@@ -0,0 +1,61 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: eveai-workers
namespace: eveai-staging
labels:
app: eveai-workers
component: backend
role: worker
spec:
replicas: 1
selector:
matchLabels:
app: eveai-workers
template:
metadata:
labels:
app: eveai-workers
component: backend
role: worker
spec:
containers:
- name: eveai-workers
image: josakola/eveai_workers:latest
envFrom:
- secretRef:
name: eveai-secrets
env:
- name: COMPONENT_NAME
value: "eveai_workers"
- name: ROLE
value: "worker"
- name: CELERY_CONCURRENCY
value: "1"
- name: CELERY_LOGLEVEL
value: "DEBUG"
- name: CELERY_MAX_TASKS_PER_CHILD
value: "1000"
- name: CELERY_PREFETCH
value: "1"
- name: CELERY_QUEUE_NAME
value: "embeddings"
- name: PUSH_GATEWAY_HOST
valueFrom:
secretKeyRef:
name: eveai-secrets
key: PUSH_GATEWAY_HOST
optional: true
- name: PUSH_GATEWAY_PORT
valueFrom:
secretKeyRef:
name: eveai-secrets
key: PUSH_GATEWAY_PORT
optional: true
resources:
requests:
cpu: "200m"
memory: "512Mi"
limits:
cpu: "1"
memory: "1Gi"

View File

@@ -0,0 +1,7 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: eveai-staging
resources:
- eveai-workers/deployment.yaml
- eveai-chat-workers/deployment.yaml
- eveai-entitlements/deployment.yaml

View File

@@ -0,0 +1,84 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: eveai-api
namespace: eveai-staging
labels:
app: eveai-api
component: frontend
role: web
spec:
replicas: 1
selector:
matchLabels:
app: eveai-api
template:
metadata:
labels:
app: eveai-api
component: frontend
role: web
spec:
containers:
- name: eveai-api
image: josakola/eveai_api:latest
ports:
- containerPort: 8080
name: http
envFrom:
- secretRef:
name: eveai-secrets
env:
- name: COMPONENT_NAME
value: "eveai_api"
- name: ROLE
value: "web"
- name: PORT
value: "8080"
- name: PUSH_GATEWAY_HOST
valueFrom:
secretKeyRef:
name: eveai-secrets
key: PUSH_GATEWAY_HOST
optional: true
- name: PUSH_GATEWAY_PORT
valueFrom:
secretKeyRef:
name: eveai-secrets
key: PUSH_GATEWAY_PORT
optional: true
resources:
requests:
cpu: "150m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"
readinessProbe:
httpGet:
path: /healthz/ready
port: http
initialDelaySeconds: 10
periodSeconds: 10
livenessProbe:
httpGet:
path: /healthz/ready
port: http
initialDelaySeconds: 20
periodSeconds: 20
---
apiVersion: v1
kind: Service
metadata:
name: eveai-api-service
namespace: eveai-staging
labels:
app: eveai-api
spec:
selector:
app: eveai-api
ports:
- name: http
port: 80
targetPort: 8080
type: ClusterIP

View File

@@ -0,0 +1,84 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: eveai-app
namespace: eveai-staging
labels:
app: eveai-app
component: frontend
role: web
spec:
replicas: 1
selector:
matchLabels:
app: eveai-app
template:
metadata:
labels:
app: eveai-app
component: frontend
role: web
spec:
containers:
- name: eveai-app
image: josakola/eveai_app:latest
ports:
- containerPort: 8080
name: http
envFrom:
- secretRef:
name: eveai-secrets
env:
- name: COMPONENT_NAME
value: "eveai_app"
- name: ROLE
value: "web"
- name: PORT
value: "8080"
- name: PUSH_GATEWAY_HOST
valueFrom:
secretKeyRef:
name: eveai-secrets
key: PUSH_GATEWAY_HOST
optional: true
- name: PUSH_GATEWAY_PORT
valueFrom:
secretKeyRef:
name: eveai-secrets
key: PUSH_GATEWAY_PORT
optional: true
resources:
requests:
cpu: "150m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"
readinessProbe:
httpGet:
path: /healthz/ready
port: http
initialDelaySeconds: 10
periodSeconds: 10
livenessProbe:
httpGet:
path: /healthz/ready
port: http
initialDelaySeconds: 20
periodSeconds: 20
---
apiVersion: v1
kind: Service
metadata:
name: eveai-app-service
namespace: eveai-staging
labels:
app: eveai-app
spec:
selector:
app: eveai-app
ports:
- name: http
port: 80
targetPort: 8080
type: ClusterIP

View File

@@ -0,0 +1,84 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: eveai-chat-client
namespace: eveai-staging
labels:
app: eveai-chat-client
component: frontend
role: web
spec:
replicas: 1
selector:
matchLabels:
app: eveai-chat-client
template:
metadata:
labels:
app: eveai-chat-client
component: frontend
role: web
spec:
containers:
- name: eveai-chat-client
image: josakola/eveai_chat_client:latest
ports:
- containerPort: 8080
name: http
envFrom:
- secretRef:
name: eveai-secrets
env:
- name: COMPONENT_NAME
value: "eveai_chat_client"
- name: ROLE
value: "web"
- name: PORT
value: "8080"
- name: PUSH_GATEWAY_HOST
valueFrom:
secretKeyRef:
name: eveai-secrets
key: PUSH_GATEWAY_HOST
optional: true
- name: PUSH_GATEWAY_PORT
valueFrom:
secretKeyRef:
name: eveai-secrets
key: PUSH_GATEWAY_PORT
optional: true
resources:
requests:
cpu: "150m"
memory: "256Mi"
limits:
cpu: "500m"
memory: "512Mi"
readinessProbe:
httpGet:
path: /healthz/ready
port: http
initialDelaySeconds: 10
periodSeconds: 10
livenessProbe:
httpGet:
path: /healthz/ready
port: http
initialDelaySeconds: 20
periodSeconds: 20
---
apiVersion: v1
kind: Service
metadata:
name: eveai-chat-client-service
namespace: eveai-staging
labels:
app: eveai-chat-client
spec:
selector:
app: eveai-chat-client
ports:
- name: http
port: 80
targetPort: 8080
type: ClusterIP

View File

@@ -0,0 +1,7 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: eveai-staging
resources:
- eveai-app/deployment.yaml
- eveai-api/deployment.yaml
- eveai-chat-client/deployment.yaml

View File

@@ -0,0 +1,8 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: eveai-staging
resources:
- verification/
- frontend/
- backend/
- ops/jobs/

View File

@@ -0,0 +1,34 @@
apiVersion: batch/v1
kind: Job
metadata:
generateName: dbops-env-check-
namespace: eveai-staging
labels:
app: eveai
component: ops
job-type: env-check
spec:
ttlSecondsAfterFinished: 1800
backoffLimit: 2
template:
metadata:
labels:
app: eveai
component: ops
job-type: env-check
spec:
restartPolicy: Never
containers:
- name: dbops
image: josakola/eveai_ops:latest
envFrom:
- secretRef:
name: eveai-secrets
command: ["/bin/bash","-lc","/app/scripts/dbops/00-env-check.sh"]
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "512Mi"

View File

@@ -0,0 +1,35 @@
apiVersion: batch/v1
kind: Job
metadata:
generateName: dbops-bootstrap-ext-
namespace: eveai-staging
labels:
app: eveai
component: ops
job-type: db-bootstrap-ext
spec:
ttlSecondsAfterFinished: 1800
backoffLimit: 2
activeDeadlineSeconds: 1800
template:
metadata:
labels:
app: eveai
component: ops
job-type: db-bootstrap-ext
spec:
restartPolicy: Never
containers:
- name: dbops
image: josakola/eveai_ops:latest
envFrom:
- secretRef:
name: eveai-secrets
command: ["/bin/bash","-lc","/app/scripts/dbops/02-db-bootstrap-ext.sh"]
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "512Mi"

View File

@@ -0,0 +1,35 @@
apiVersion: batch/v1
kind: Job
metadata:
generateName: dbops-migrate-public-
namespace: eveai-staging
labels:
app: eveai
component: ops
job-type: db-migrate-public
spec:
ttlSecondsAfterFinished: 1800
backoffLimit: 2
activeDeadlineSeconds: 1800
template:
metadata:
labels:
app: eveai
component: ops
job-type: db-migrate-public
spec:
restartPolicy: Never
containers:
- name: dbops
image: josakola/eveai_ops:latest
envFrom:
- secretRef:
name: eveai-secrets
command: ["/bin/bash","-lc","/app/scripts/dbops/03-db-migrate-public.sh"]
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "512Mi"

View File

@@ -0,0 +1,35 @@
apiVersion: batch/v1
kind: Job
metadata:
generateName: dbops-migrate-tenant-
namespace: eveai-staging
labels:
app: eveai
component: ops
job-type: db-migrate-tenant
spec:
ttlSecondsAfterFinished: 1800
backoffLimit: 2
activeDeadlineSeconds: 3600
template:
metadata:
labels:
app: eveai
component: ops
job-type: db-migrate-tenant
spec:
restartPolicy: Never
containers:
- name: dbops
image: josakola/eveai_ops:latest
envFrom:
- secretRef:
name: eveai-secrets
command: ["/bin/bash","-lc","/app/scripts/dbops/04-db-migrate-tenant.sh"]
resources:
requests:
cpu: "200m"
memory: "256Mi"
limits:
cpu: "1"
memory: "1Gi"

View File

@@ -0,0 +1,35 @@
apiVersion: batch/v1
kind: Job
metadata:
generateName: dbops-seed-or-init-
namespace: eveai-staging
labels:
app: eveai
component: ops
job-type: db-seed-or-init
spec:
ttlSecondsAfterFinished: 1800
backoffLimit: 2
activeDeadlineSeconds: 1800
template:
metadata:
labels:
app: eveai
component: ops
job-type: db-seed-or-init
spec:
restartPolicy: Never
containers:
- name: dbops
image: josakola/eveai_ops:latest
envFrom:
- secretRef:
name: eveai-secrets
command: ["/bin/bash","-lc","/app/scripts/dbops/05-seed-or-init-data.sh"]
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "512Mi"

View File

@@ -0,0 +1,35 @@
apiVersion: batch/v1
kind: Job
metadata:
generateName: dbops-verify-minimal-
namespace: eveai-staging
labels:
app: eveai
component: ops
job-type: db-verify-minimal
spec:
ttlSecondsAfterFinished: 1800
backoffLimit: 2
activeDeadlineSeconds: 900
template:
metadata:
labels:
app: eveai
component: ops
job-type: db-verify-minimal
spec:
restartPolicy: Never
containers:
- name: dbops
image: josakola/eveai_ops:latest
envFrom:
- secretRef:
name: eveai-secrets
command: ["/bin/bash","-lc","/app/scripts/dbops/06-verify-minimal.sh"]
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "512Mi"

View File

@@ -0,0 +1,10 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: eveai-staging
resources:
- 00-env-check-job.yaml
- 02-db-bootstrap-ext-job.yaml
- 03-db-migrate-public-job.yaml
- 04-db-migrate-tenant-job.yaml
- 05-seed-or-init-data-job.yaml
- 06-verify-minimal-job.yaml

View File

@@ -33,33 +33,30 @@ spec:
port:
number: 80
# Future services (ready for deployment)
# Admin service
# - path: /admin
# pathType: Prefix
# backend:
# service:
# name: eveai-app-service
# port:
# number: 80
# Application services
- path: /admin
pathType: Prefix
backend:
service:
name: eveai-app-service
port:
number: 80
# API service
# - path: /api
# pathType: Prefix
# backend:
# service:
# name: eveai-api-service
# port:
# number: 80
- path: /api
pathType: Prefix
backend:
service:
name: eveai-api-service
port:
number: 80
# Client/Frontend service
# - path: /client
# pathType: Prefix
# backend:
# service:
# name: eveai-chat-client-service
# port:
# number: 80
- path: /client
pathType: Prefix
backend:
service:
name: eveai-chat-client-service
port:
number: 80
# Monitoring (when deployed)
# - path: /monitoring