diff --git a/k8s/localagi-deployment.yaml b/k8s/localagi-deployment.yaml new file mode 100644 index 00000000..de555217 --- /dev/null +++ b/k8s/localagi-deployment.yaml @@ -0,0 +1,84 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: localagi +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: localagi + namespace: localagi +spec: + replicas: 1 + selector: + matchLabels: + app: localagi + template: + metadata: + labels: + app: localagi + spec: + containers: + - name: localagi + image: mudler/localagi:latest + ports: + - containerPort: 3000 + env: + - name: LOCALAGI_MODEL + value: "gemma-3-12b-it-qat" + - name: LOCALAGI_MULTIMODAL_MODEL + value: "minicpm-v-2_6" + - name: LOCALAGI_IMAGE_MODEL + value: "sd-1.5-ggml" + - name: LOCALAGI_TIMEOUT + value: "60s" + - name: LOCALAGI_STATE_DIR + value: "/var/lib/localagi" + - name: LOCALAGI_LOCALRAG_URL + value: "http://localrecall.local:8080" + volumeMounts: + - name: localagi-data + mountPath: "/var/lib/localagi" + volumes: + - name: localagi-data + persistentVolumeClaim: + claimName: localagi-data +--- +apiVersion: v1 +kind: Service +metadata: + name: localagi + namespace: localagi +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: 3000 + selector: + app: localagi +--- +apiVersion: autoscaling/v1 +kind: HorizontalPodAutoscaler +metadata: + name: localagi + namespace: localagi +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: localagi + minReplicas: 1 + maxReplicas: 5 + targetCPUUtilizationPercentage: 80 +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: localagi-data + namespace: localagi +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 20Gi \ No newline at end of file diff --git a/k8s/localagi-ingress.yaml b/k8s/localagi-ingress.yaml new file mode 100644 index 00000000..90fea53d --- /dev/null +++ b/k8s/localagi-ingress.yaml @@ -0,0 +1,28 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: localagi-ingress + namespace: localagi + annotations: + nginx.ingress.kubernetes.io/rewrite-target: / + nginx.ingress.kubernetes.io/use-regex: "true" + kubernetes.io/ingress.class: "nginx" + +spec: + rules: + - http: + paths: + - path: /api + pathType: Prefix + backend: + service: + name: localagi + port: + number: 80 + - path: / + pathType: Prefix + backend: + service: + name: localagi + port: + number: 80 \ No newline at end of file diff --git a/k8s/localrecall-deployment.yaml b/k8s/localrecall-deployment.yaml new file mode 100644 index 00000000..dba72ca9 --- /dev/null +++ b/k8s/localrecall-deployment.yaml @@ -0,0 +1,71 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: localrecall +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: localrecall + namespace: localrecall +spec: + replicas: 1 + selector: + matchLabels: + app: localrecall + template: + metadata: + labels: + app: localrecall + spec: + containers: + - name: localrecall + image: mudler/localrecall:latest + ports: + - containerPort: 8080 + volumeMounts: + - name: localrecall-data + mountPath: "/var/lib/localrecall" + volumes: + - name: localrecall-data + persistentVolumeClaim: + claimName: localrecall-data +--- +apiVersion: v1 +kind: Service +metadata: + name: localrecall + namespace: localrecall +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: 8080 + selector: + app: localrecall +--- +apiVersion: autoscaling/v1 +kind: HorizontalPodAutoscaler +metadata: + name: localrecall + namespace: localrecall +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: localrecall + minReplicas: 1 + maxReplicas: 3 + targetCPUUtilizationPercentage: 75 +--- +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: localrecall-data + namespace: localrecall +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi \ No newline at end of file