11. 交付与运维
11.1 一键部署
部署方案
智能房地产解决方案采用容器化部署,支持一键部署到Kubernetes集群:
Docker化部署
Dockerfile示例:
# 基础镜像
FROM python:3.11-slim
# 设置工作目录
WORKDIR /app
# 安装系统依赖
RUN apt-get update && apt-get install -y \
gcc \
g++ \
libopencv-dev \
&& rm -rf /var/lib/apt/lists/*
# 复制依赖文件
COPY requirements.txt .
# 安装Python依赖
RUN pip install --no-cache-dir -r requirements.txt
# 复制应用代码
COPY . .
# 暴露端口
EXPOSE 8000
# 启动命令
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
docker-compose.yml示例:
version: '3.8'
services:
api:
build: .
ports:
- "8000:8000"
environment:
- DATABASE_URL=postgresql://user:password@db:5432/real_estate_ai
- REDIS_URL=redis://redis:6379/0
- MILVUS_URL=http://milvus:19530
depends_on:
- db
- redis
- milvus
db:
image: postgres:14
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
- POSTGRES_DB=real_estate_ai
volumes:
- db_data:/var/lib/postgresql/data
redis:
image: redis:7-alpine
volumes:
- redis_data:/data
milvus:
image: milvusdb/milvus:v2.3.0
volumes:
- milvus_data:/var/lib/milvus
volumes:
db_data:
redis_data:
milvus_data:
Kubernetes部署
Deployment配置:
apiVersion: apps/v1
kind: Deployment
metadata:
name: real-estate-ai-api
spec:
replicas: 3
selector:
matchLabels:
app: real-estate-ai-api
template:
metadata:
labels:
app: real-estate-ai-api
spec:
containers:
- name: api
image: real-estate-ai-api:latest
ports:
- containerPort: 8000
env:
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: real-estate-secrets
key: database-url
- name: REDIS_URL
valueFrom:
secretKeyRef:
name: real-estate-secrets
key: redis-url
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 2000m
memory: 2Gi
livenessProbe:
httpGet:
path: /health
port: 8000
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 8000
initialDelaySeconds: 10
periodSeconds: 5
Service配置:
apiVersion: v1
kind: Service
metadata:
name: real-estate-ai-api
spec:
selector:
app: real-estate-ai-api
ports:
- port: 80
targetPort: 8000
type: LoadBalancer
Ingress配置:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: real-estate-ai-ingress
spec:
rules:
- host: api.real-estate.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: real-estate-ai-api
port:
number: 80
一键部署脚本
部署脚本示例
#!/bin/bash
# 一键部署脚本
set -e
echo "开始部署智能房地产解决方案..."
# 1. 检查环境
echo "检查环境..."
kubectl version --client
docker version
# 2. 构建镜像
echo "构建Docker镜像..."
docker build -t real-estate-ai-api:latest .
# 3. 推送镜像
echo "推送镜像到镜像仓库..."
docker tag real-estate-ai-api:latest registry.example.com/real-estate-ai-api:latest
docker push registry.example.com/real-estate-ai-api:latest
# 4. 部署到Kubernetes
echo "部署到Kubernetes..."
kubectl apply -f k8s/namespace.yaml
kubectl apply -f k8s/secrets.yaml
kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/service.yaml
kubectl apply -f k8s/ingress.yaml
# 5. 等待部署完成
echo "等待部署完成..."
kubectl wait --for=condition=available --timeout=300s deployment/real-estate-ai-api -n real-estate
# 6. 验证部署
echo "验证部署..."
kubectl get pods -n real-estate
kubectl get services -n real-estate
echo "部署完成!"
11.2 配置管理
配置分类
环境配置
-
开发环境配置:
- 数据库连接配置
- Redis连接配置
- 外部服务配置
-
测试环境配置:
- 测试数据库配置
- 测试Redis配置
- 测试外部服务配置
-
生产环境配置:
- 生产数据库配置
- 生产Redis配置
- 生产外部服务配置
应用配置
-
功能开关:
- 功能启用/禁用
- A/B测试配置
- 灰度发布配置
-
业务配置:
- 推荐算法参数
- 评估模型参数
- 审查规则配置
配置管理方案
ConfigMap配置
apiVersion: v1
kind: ConfigMap
metadata:
name: real-estate-config
data:
app.properties: |
# 应用配置
app.name=智能房地产解决方案
app.version=1.0.0
# 推荐配置
recommendation.model=hybrid
recommendation.top_k=10
# 评估配置
evaluation.model=xgboost
evaluation.confidence_threshold=0.8
Secret配置
apiVersion: v1
kind: Secret
metadata:
name: real-estate-secrets
type: Opaque
data:
database-url: <base64-encoded-value>
redis-url: <base64-encoded-value>
api-key: <base64-encoded-value>
11.3 版本管理
版本发布流程
版本命名规则
- 语义化版本号:
- 格式:主版本号.次版本号.修订号(如1.2.3)
- 主版本号:重大架构变更
- 次版本号:新功能添加
- 修订号:Bug修复
发布流程
-
开发阶段:
- 功能开发
- 单元测试