skillhub/deploy/k8s/base/backend-deployment.yaml
XiaoSeS fc7c59534a
fix(platform): harden sessions, scanner recovery, and CLI guidance (#801)
* fix(auth): recover from unreadable sessions

Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>

* fix(scanner): defer unavailable scan tasks safely

Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>

* fix(web): prefer the SkillHub CLI install command

Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>

* fix(auth): decode session cookies during recovery

Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>

* fix(runtime): address scanner and session review findings

Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>

* fix(scanner): defer all server-side outages

Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>

* docs(scanner): clarify deferred failure semantics

Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>

* test(scanner): cover recovery boundaries

Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>

* fix(scanner): register startup hook on router

Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>

* test(e2e): align install defaults and reuse auth session

Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>

---------

Signed-off-by: XiaoSeS <87064762+XiaoSeS@users.noreply.github.com>
2026-09-02 20:15:42 +08:00

248 lines
8.3 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: skillhub-server
labels:
app.kubernetes.io/name: skillhub-server
spec:
replicas: 1
selector:
matchLabels:
app.kubernetes.io/name: skillhub-server
template:
metadata:
labels:
app.kubernetes.io/name: skillhub-server
spec:
containers:
- name: server
image: ghcr.io/iflytek/skillhub-server:edge
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
name: http
env:
- name: SPRING_PROFILES_ACTIVE
value: docker
# Database
- name: SPRING_DATASOURCE_URL
valueFrom:
secretKeyRef:
name: skillhub-secret
key: spring-datasource-url
- name: SPRING_DATASOURCE_USERNAME
valueFrom:
secretKeyRef:
name: skillhub-secret
key: spring-datasource-username
- name: SPRING_DATASOURCE_PASSWORD
valueFrom:
secretKeyRef:
name: skillhub-secret
key: spring-datasource-password
# Redis
- name: SPRING_DATA_REDIS_HOST
valueFrom:
configMapKeyRef:
name: skillhub-config
key: redis-host
- name: SPRING_DATA_REDIS_PORT
valueFrom:
configMapKeyRef:
name: skillhub-config
key: redis-port
- name: SPRING_DATA_REDIS_CLUSTER_NODES
valueFrom:
configMapKeyRef:
name: skillhub-config
key: redis-cluster-nodes
optional: true
- name: SPRING_DATA_REDIS_CLUSTER_MAX_REDIRECTS
valueFrom:
configMapKeyRef:
name: skillhub-config
key: redis-cluster-max-redirects
optional: true
- name: SPRING_DATA_REDIS_SENTINEL_MASTER
valueFrom:
configMapKeyRef:
name: skillhub-config
key: redis-sentinel-master
optional: true
- name: SPRING_DATA_REDIS_SENTINEL_NODES
valueFrom:
configMapKeyRef:
name: skillhub-config
key: redis-sentinel-nodes
optional: true
- name: SPRING_DATA_REDIS_SENTINEL_USERNAME
valueFrom:
configMapKeyRef:
name: skillhub-config
key: redis-sentinel-username
optional: true
- name: SKILLHUB_REDIS_SENTINEL_CHECK_SENTINELS_LIST
valueFrom:
configMapKeyRef:
name: skillhub-config
key: redis-sentinel-check-list
optional: true
- name: SPRING_DATA_REDIS_USERNAME
valueFrom:
configMapKeyRef:
name: skillhub-config
key: redis-username
optional: true
- name: SPRING_DATA_REDIS_SSL_ENABLED
valueFrom:
configMapKeyRef:
name: skillhub-config
key: redis-ssl-enabled
optional: true
- name: SPRING_DATA_REDIS_CONNECT_TIMEOUT
valueFrom:
configMapKeyRef:
name: skillhub-config
key: redis-connect-timeout
optional: true
- name: SPRING_DATA_REDIS_TIMEOUT
valueFrom:
configMapKeyRef:
name: skillhub-config
key: redis-timeout
optional: true
- name: SPRING_DATA_REDIS_CLIENT_NAME
valueFrom:
configMapKeyRef:
name: skillhub-config
key: redis-client-name
optional: true
- name: SPRING_DATA_REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: skillhub-secret
key: redis-password
optional: true
- name: SPRING_DATA_REDIS_SENTINEL_PASSWORD
valueFrom:
secretKeyRef:
name: skillhub-secret
key: redis-sentinel-password
optional: true
# Storage
- name: STORAGE_BASE_PATH
valueFrom:
configMapKeyRef:
name: skillhub-config
key: storage-base-path
- name: SKILLHUB_STORAGE_PROVIDER
valueFrom:
configMapKeyRef:
name: skillhub-config
key: skillhub-storage-provider
# Scanner
- name: SKILLHUB_SECURITY_SCANNER_ENABLED
valueFrom:
configMapKeyRef:
name: skillhub-config
key: skill-scanner-enabled
- name: SKILLHUB_SECURITY_SCANNER_URL
valueFrom:
configMapKeyRef:
name: skillhub-config
key: skill-scanner-url
- name: SKILLHUB_SECURITY_SCANNER_MODE
valueFrom:
configMapKeyRef:
name: skillhub-config
key: skill-scanner-mode
- name: SKILLHUB_SECURITY_SCANNER_READ_TIMEOUT
valueFrom:
configMapKeyRef:
name: skillhub-config
key: skill-scanner-read-timeout
- name: SKILLHUB_SCAN_STREAM_RECLAIM_MIN_IDLE
valueFrom:
configMapKeyRef:
name: skillhub-config
key: skill-scan-reclaim-min-idle
# Session
- name: SESSION_COOKIE_SECURE
valueFrom:
configMapKeyRef:
name: skillhub-config
key: session-cookie-secure
# Bootstrap Admin (non-sensitive from ConfigMap)
- name: BOOTSTRAP_ADMIN_ENABLED
valueFrom:
configMapKeyRef:
name: skillhub-config
key: bootstrap-admin-enabled
- name: BOOTSTRAP_ADMIN_USER_ID
valueFrom:
configMapKeyRef:
name: skillhub-config
key: bootstrap-admin-user-id
- name: BOOTSTRAP_ADMIN_USERNAME
valueFrom:
configMapKeyRef:
name: skillhub-config
key: bootstrap-admin-username
- name: BOOTSTRAP_ADMIN_DISPLAY_NAME
valueFrom:
configMapKeyRef:
name: skillhub-config
key: bootstrap-admin-display-name
- name: BOOTSTRAP_ADMIN_EMAIL
valueFrom:
configMapKeyRef:
name: skillhub-config
key: bootstrap-admin-email
# Bootstrap Admin Password (sensitive from Secret)
- name: BOOTSTRAP_ADMIN_PASSWORD
valueFrom:
secretKeyRef:
name: skillhub-secret
key: bootstrap-admin-password
optional: true
# OAuth2 GitHub (optional)
- name: OAUTH2_GITHUB_CLIENT_ID
valueFrom:
secretKeyRef:
name: skillhub-secret
key: oauth2-github-client-id
optional: true
- name: OAUTH2_GITHUB_CLIENT_SECRET
valueFrom:
secretKeyRef:
name: skillhub-secret
key: oauth2-github-client-secret
optional: true
volumeMounts:
- name: skillhub-storage
mountPath: /var/lib/skillhub/storage
readinessProbe:
httpGet:
path: /actuator/health
port: http
initialDelaySeconds: 20
periodSeconds: 10
livenessProbe:
httpGet:
path: /actuator/health
port: http
initialDelaySeconds: 30
periodSeconds: 15
volumes:
- name: skillhub-storage
persistentVolumeClaim:
claimName: skillhub-storage-pvc