diff --git a/servers/legion/apps/neuron-dev.yaml b/servers/legion/apps/neuron-dev.yaml new file mode 100644 index 0000000..4b6f32b --- /dev/null +++ b/servers/legion/apps/neuron-dev.yaml @@ -0,0 +1,20 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: neuron-dev + namespace: argocd +spec: + project: default + source: + repoURL: http://10.43.1.53:3000/will/infrastructure.git + targetRevision: main + path: servers/legion/k8s/neuron-technologies/dev + destination: + server: https://kubernetes.default.svc + namespace: neuron-dev + syncPolicy: + automated: + prune: true + selfHeal: true + syncOptions: + - CreateNamespace=false diff --git a/servers/legion/k8s/neuron-technologies/dev/configmap.yaml b/servers/legion/k8s/neuron-technologies/dev/configmap.yaml new file mode 100644 index 0000000..f31b6a9 --- /dev/null +++ b/servers/legion/k8s/neuron-technologies/dev/configmap.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: neuron-dev-config + namespace: neuron-dev +data: + SPRING_PROFILES_ACTIVE: "dev" + NEURON_DB_PATH: "/data/neuron-dev.db" + NEURON_STORAGE_PATH: "/data" + SERVER_TOMCAT_ACCESSLOG_ENABLED: "true" + MANAGEMENT_ENDPOINTS_WEB_EXPOSURE_INCLUDE: "health,info,metrics" + MANAGEMENT_ENDPOINT_HEALTH_SHOW_DETAILS: "always" diff --git a/servers/legion/k8s/neuron-technologies/dev/externalsecret.yaml b/servers/legion/k8s/neuron-technologies/dev/externalsecret.yaml new file mode 100644 index 0000000..6dc5fa7 --- /dev/null +++ b/servers/legion/k8s/neuron-technologies/dev/externalsecret.yaml @@ -0,0 +1,18 @@ +apiVersion: external-secrets.io/v1beta1 +kind: ExternalSecret +metadata: + name: neuron-dev-secrets + namespace: neuron-dev +spec: + refreshInterval: 1h + secretStoreRef: + name: vault + kind: ClusterSecretStore + target: + name: neuron-dev-secrets + creationPolicy: Owner + data: + - secretKey: NEURON_WEBHOOK_SECRET + remoteRef: + key: secret/data/neuron-technologies/dev + property: gitea_webhook_secret diff --git a/servers/legion/k8s/neuron-technologies/dev/ingress.yaml b/servers/legion/k8s/neuron-technologies/dev/ingress.yaml new file mode 100644 index 0000000..71e9d63 --- /dev/null +++ b/servers/legion/k8s/neuron-technologies/dev/ingress.yaml @@ -0,0 +1,32 @@ +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: neuron-dev + namespace: neuron-dev + annotations: + traefik.ingress.kubernetes.io/router.entrypoints: websecure + cert-manager.io/cluster-issuer: letsencrypt-prod +spec: + ingressClassName: traefik + tls: + - secretName: neuron-dev-tls + hosts: + - dev.neurontechnologies.ai + rules: + - host: dev.neurontechnologies.ai + http: + paths: + - path: /mcp + pathType: Prefix + backend: + service: + name: neuron-mcp + port: + number: 8080 + - path: / + pathType: Prefix + backend: + service: + name: neuron-rest + port: + number: 8081 diff --git a/servers/legion/k8s/neuron-technologies/dev/kustomization.yaml b/servers/legion/k8s/neuron-technologies/dev/kustomization.yaml new file mode 100644 index 0000000..4ea8ac1 --- /dev/null +++ b/servers/legion/k8s/neuron-technologies/dev/kustomization.yaml @@ -0,0 +1,10 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +resources: + - configmap.yaml + - pvc.yaml + - externalsecret.yaml + - mcp-deployment.yaml + - rest-deployment.yaml + - services.yaml + - ingress.yaml diff --git a/servers/legion/k8s/neuron-technologies/dev/mcp-deployment.yaml b/servers/legion/k8s/neuron-technologies/dev/mcp-deployment.yaml new file mode 100644 index 0000000..b41a35b --- /dev/null +++ b/servers/legion/k8s/neuron-technologies/dev/mcp-deployment.yaml @@ -0,0 +1,59 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: neuron-mcp + namespace: neuron-dev + labels: + app: neuron-mcp + env: dev +spec: + replicas: 1 + selector: + matchLabels: + app: neuron-mcp + template: + metadata: + labels: + app: neuron-mcp + env: dev + spec: + containers: + - name: neuron-mcp + image: registry.neuralplatform.ai/neuron-technologies/neuron-mcp:dev-latest + imagePullPolicy: Always + ports: + - name: http + containerPort: 8080 + envFrom: + - configMapRef: + name: neuron-dev-config + - secretRef: + name: neuron-dev-secrets + volumeMounts: + - name: data + mountPath: /data + resources: + requests: + cpu: 100m + memory: 384Mi + limits: + cpu: 500m + memory: 768Mi + livenessProbe: + httpGet: + path: /actuator/health/liveness + port: http + initialDelaySeconds: 30 + periodSeconds: 30 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /actuator/health/readiness + port: http + initialDelaySeconds: 15 + periodSeconds: 10 + failureThreshold: 3 + volumes: + - name: data + persistentVolumeClaim: + claimName: neuron-dev-data diff --git a/servers/legion/k8s/neuron-technologies/dev/pvc.yaml b/servers/legion/k8s/neuron-technologies/dev/pvc.yaml new file mode 100644 index 0000000..ee13ed7 --- /dev/null +++ b/servers/legion/k8s/neuron-technologies/dev/pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: neuron-dev-data + namespace: neuron-dev +spec: + storageClassName: local-path + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 5Gi diff --git a/servers/legion/k8s/neuron-technologies/dev/rest-deployment.yaml b/servers/legion/k8s/neuron-technologies/dev/rest-deployment.yaml new file mode 100644 index 0000000..3fa7f08 --- /dev/null +++ b/servers/legion/k8s/neuron-technologies/dev/rest-deployment.yaml @@ -0,0 +1,59 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: neuron-rest + namespace: neuron-dev + labels: + app: neuron-rest + env: dev +spec: + replicas: 1 + selector: + matchLabels: + app: neuron-rest + template: + metadata: + labels: + app: neuron-rest + env: dev + spec: + containers: + - name: neuron-rest + image: registry.neuralplatform.ai/neuron-technologies/neuron-rest:dev-latest + imagePullPolicy: Always + ports: + - name: http + containerPort: 8081 + envFrom: + - configMapRef: + name: neuron-dev-config + - secretRef: + name: neuron-dev-secrets + volumeMounts: + - name: data + mountPath: /data + resources: + requests: + cpu: 100m + memory: 384Mi + limits: + cpu: 500m + memory: 768Mi + livenessProbe: + httpGet: + path: /actuator/health/liveness + port: http + initialDelaySeconds: 30 + periodSeconds: 30 + failureThreshold: 3 + readinessProbe: + httpGet: + path: /actuator/health/readiness + port: http + initialDelaySeconds: 15 + periodSeconds: 10 + failureThreshold: 3 + volumes: + - name: data + persistentVolumeClaim: + claimName: neuron-dev-data diff --git a/servers/legion/k8s/neuron-technologies/dev/services.yaml b/servers/legion/k8s/neuron-technologies/dev/services.yaml new file mode 100644 index 0000000..430a1a4 --- /dev/null +++ b/servers/legion/k8s/neuron-technologies/dev/services.yaml @@ -0,0 +1,31 @@ +apiVersion: v1 +kind: Service +metadata: + name: neuron-mcp + namespace: neuron-dev + labels: + app: neuron-mcp +spec: + selector: + app: neuron-mcp + ports: + - name: http + port: 8080 + targetPort: 8080 + type: ClusterIP +--- +apiVersion: v1 +kind: Service +metadata: + name: neuron-rest + namespace: neuron-dev + labels: + app: neuron-rest +spec: + selector: + app: neuron-rest + ports: + - name: http + port: 8081 + targetPort: 8081 + type: ClusterIP