714a7c7a8d
- Add neuron-daemon Argo CD Application (apps/neuron-daemon.yaml) pointing to k8s/neuron-technologies/daemon/ on main — daemon will deploy once image is built - Add daemon k8s manifests: StatefulSet (2 replicas, imagePullPolicy: Always), Service (ClusterIP :7749, session affinity), ExternalSecret (Anthropic API key from Vault) - Fix neuron-rest runAsNonRoot: remove constraint since v0.15.3 image runs as root, clears the CreateContainerConfigError on the 11h-old stale pod - Add NEURON_DAEMON_WS_URL env var to marketing deployment for chat UI connectivity - Add neuron.neurontechnologies.ai Cloudflare DNS record and tunnel ingress rule (Terraform)
69 lines
1.8 KiB
YAML
69 lines
1.8 KiB
YAML
apiVersion: apps/v1
|
|
kind: Deployment
|
|
metadata:
|
|
name: neuron-marketing
|
|
namespace: neuron-prod
|
|
labels:
|
|
app: neuron-marketing
|
|
env: prod
|
|
spec:
|
|
replicas: 2
|
|
selector:
|
|
matchLabels:
|
|
app: neuron-marketing
|
|
template:
|
|
metadata:
|
|
labels:
|
|
app: neuron-marketing
|
|
env: prod
|
|
spec:
|
|
securityContext:
|
|
runAsNonRoot: true
|
|
runAsUser: 1001
|
|
seccompProfile:
|
|
type: RuntimeDefault
|
|
containers:
|
|
- name: neuron-marketing
|
|
image: registry.neuralplatform.ai/neuron-technologies/marketing:1e94e8ae
|
|
imagePullPolicy: Always
|
|
ports:
|
|
- name: http
|
|
containerPort: 3000
|
|
securityContext:
|
|
allowPrivilegeEscalation: false
|
|
readOnlyRootFilesystem: false # Next.js writes .next/cache at runtime
|
|
runAsNonRoot: true
|
|
capabilities:
|
|
drop: ["ALL"]
|
|
env:
|
|
- name: NODE_ENV
|
|
value: production
|
|
- name: NEURON_LICENSE_API_URL
|
|
value: http://neuron-license.neuron-prod.svc.cluster.local:8082
|
|
- name: NEURON_DAEMON_WS_URL
|
|
value: ws://neuron-daemon.neuron-prod.svc.cluster.local:7749/ws
|
|
envFrom:
|
|
- secretRef:
|
|
name: neuron-marketing-secrets
|
|
resources:
|
|
requests:
|
|
cpu: 200m
|
|
memory: 256Mi
|
|
limits:
|
|
cpu: 500m
|
|
memory: 512Mi
|
|
livenessProbe:
|
|
httpGet:
|
|
path: /
|
|
port: http
|
|
initialDelaySeconds: 15
|
|
periodSeconds: 30
|
|
failureThreshold: 3
|
|
readinessProbe:
|
|
httpGet:
|
|
path: /
|
|
port: http
|
|
initialDelaySeconds: 10
|
|
periodSeconds: 10
|
|
failureThreshold: 3
|