Files
easyai-deploy/k8s/base/sandbox.yaml
T
2026-07-09 19:29:46 +08:00

140 lines
3.9 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: sandbox
labels:
app.kubernetes.io/name: sandbox
spec:
replicas: 1
revisionHistoryLimit: 3
selector:
matchLabels:
app.kubernetes.io/name: sandbox
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
template:
metadata:
labels:
app.kubernetes.io/name: sandbox
spec:
serviceAccountName: easyai-workload
terminationGracePeriodSeconds: 30
containers:
- name: sandbox
image: registry.cn-shanghai.aliyuncs.com/easyaigc/sandbox:latest
imagePullPolicy: Always
ports:
- name: http
containerPort: 8000
- name: jupyter
containerPort: 8888
envFrom:
- configMapRef:
name: easyai-app-config
- secretRef:
name: easyai-app-secret
env:
- name: NODE_PATH
value: /app/node_modules:/app/node_modules_extra/node_modules
- name: NODE_MODULES_EXTRA
value: /app/node_modules_extra
- name: NODE_MODULES_EXTRA_PATH
value: /app/node_modules_extra/node_modules
- name: SANDBOX_TMPDIR
value: /app/tmp
- name: PIP_CACHE_DIR
value: /app/tmp/.pip
- name: TMPDIR
value: /app/tmp
- name: NPM_CONFIG_CACHE
value: /app/tmp/.npm
- name: PYTHON_EXTRA_DIR
value: /root/.local/lib/python3.12/site-packages
- name: PYTHON_EXTRA_PATH
value: /root/.local/lib/python3.12/site-packages
- name: JUPYTER_DATA_DIR
value: /app/tmp/jupyter_data
- name: JUPYTER_RUNTIME_DIR
value: /app/tmp/jupyter_runtime
- name: JUPYTER_CONFIG_DIR
value: /app/tmp/jupyter_config
- name: JUPYTER_TOKEN
valueFrom:
secretKeyRef:
name: easyai-app-secret
key: SANDBOX_JUPYTER_TOKEN
volumeMounts:
- name: data
mountPath: /app/data
- name: local-packages
mountPath: /app/local_packages
- name: python-packages
mountPath: /root/.local
- name: node-modules-extra
mountPath: /app/node_modules_extra
- name: app-tmp
mountPath: /app/tmp
- name: tmp
mountPath: /tmp
readinessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 6
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 45
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 3
resources:
requests:
cpu: 500m
memory: 512Mi
limits:
cpu: "1"
memory: 1Gi
securityContext:
allowPrivilegeEscalation: false
seccompProfile:
type: RuntimeDefault
volumes:
- name: data
emptyDir: {}
- name: local-packages
emptyDir: {}
- name: python-packages
emptyDir: {}
- name: node-modules-extra
emptyDir: {}
- name: app-tmp
emptyDir: {}
- name: tmp
emptyDir: {}
---
apiVersion: v1
kind: Service
metadata:
name: sandbox
labels:
app.kubernetes.io/name: sandbox
spec:
type: ClusterIP
selector:
app.kubernetes.io/name: sandbox
ports:
- name: http
port: 8000
targetPort: http
- name: jupyter
port: 8888
targetPort: jupyter