Files
kami_spider_monorepo/deployments/k8s/deployment.yaml
danial 0e41e7acce feat(core): 初始化核心配置和部署文件
- 添加 .env.example 环境变量配置示例
- 添加 .gitignore 忽略文件配置
- 添加 core/config.py 配置管理模块
- 添加 deployments/k8s/configmap.yaml Kubernetes 配置
- 添加 core/database.py 数据库连接管理模块
- 添加 core/dependencies.py 全局依赖模块
- 添加 DEPENDENCIES_UPDATED.md 依赖更新记录
- 添加 deployments/k8s/deployment.yaml Kubernetes 部署配置- 添加 deployments/swarm/docker-compose.swarm.yml Docker Swarm 部署配置
- 添加 deployments/docker/docker-compose.yml Docker 部署配置
- 添加 deployments/docker/Dockerfile 应用镜像构建文件
- 添加 middleware/error_handler.py 全局异常处理中间件
2025-11-01 14:32:29 +08:00

225 lines
4.9 KiB
YAML

apiVersion: apps/v1
kind: Deployment
metadata:
name: kami-spider-app
namespace: default
labels:
app: kami-spider
component: app
spec:
replicas: 3
selector:
matchLabels:
app: kami-spider
component: app
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
template:
metadata:
labels:
app: kami-spider
component: app
spec:
containers:
- name: app
image: kami_spider:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8000
name: http
protocol: TCP
env:
- name: DB_PASSWORD
valueFrom:
secretKeyRef:
name: kami-spider-secret
key: DB_PASSWORD
- name: REDIS_PASSWORD
valueFrom:
secretKeyRef:
name: kami-spider-secret
key: REDIS_PASSWORD
- name: SECRET_KEY
valueFrom:
secretKeyRef:
name: kami-spider-secret
key: SECRET_KEY
envFrom:
- configMapRef:
name: kami-spider-config
resources:
requests:
cpu: 500m
memory: 512Mi
limits:
cpu: 2000m
memory: 2Gi
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 10
periodSeconds: 30
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 5
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: kami-spider-mysql
namespace: default
labels:
app: kami-spider
component: mysql
spec:
serviceName: kami-spider-mysql
replicas: 1
selector:
matchLabels:
app: kami-spider
component: mysql
template:
metadata:
labels:
app: kami-spider
component: mysql
spec:
containers:
- name: mysql
image: mysql:8.0
ports:
- containerPort: 3306
name: mysql
protocol: TCP
env:
- name: MYSQL_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: kami-spider-secret
key: MYSQL_ROOT_PASSWORD
- name: MYSQL_DATABASE
value: "kami_spider"
- name: MYSQL_USER
value: "kami_user"
- name: MYSQL_PASSWORD
valueFrom:
secretKeyRef:
name: kami-spider-secret
key: DB_PASSWORD
volumeMounts:
- name: mysql-data
mountPath: /var/lib/mysql
resources:
requests:
cpu: 1000m
memory: 2Gi
limits:
cpu: 4000m
memory: 8Gi
livenessProbe:
exec:
command:
- mysqladmin
- ping
- -h
- localhost
initialDelaySeconds: 30
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 5
readinessProbe:
exec:
command:
- mysqladmin
- ping
- -h
- localhost
initialDelaySeconds: 10
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
volumeClaimTemplates:
- metadata:
name: mysql-data
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 20Gi
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: kami-spider-redis
namespace: default
labels:
app: kami-spider
component: redis
spec:
serviceName: kami-spider-redis
replicas: 1
selector:
matchLabels:
app: kami-spider
component: redis
template:
metadata:
labels:
app: kami-spider
component: redis
spec:
containers:
- name: redis
image: redis:7-alpine
ports:
- containerPort: 6379
name: redis
protocol: TCP
volumeMounts:
- name: redis-data
mountPath: /data
resources:
requests:
cpu: 500m
memory: 512Mi
limits:
cpu: 2000m
memory: 4Gi
livenessProbe:
exec:
command:
- redis-cli
- ping
initialDelaySeconds: 5
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
readinessProbe:
exec:
command:
- redis-cli
- ping
initialDelaySeconds: 5
periodSeconds: 10
timeoutSeconds: 5
failureThreshold: 3
volumeClaimTemplates:
- metadata:
name: redis-data
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 5Gi