feat(neuron-dev): add k8s manifests and Argo CD app for neuron-technologies dev environment

This commit is contained in:
Will Anderson
2026-04-17 08:46:47 -05:00
parent 6046b6ca3e
commit 912e129e0d
9 changed files with 253 additions and 0 deletions
+20
View File
@@ -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
@@ -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"
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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