11. 交付与运维
11.1 一键部署
部署方案
智能制造/工业4.0解决方案采用容器化部署,支持一键部署到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/manufacturing_ai
- REDIS_URL=redis://redis:6379/0
- INFLUXDB_URL=http://influxdb:8086
depends_on:
- db
- redis
- influxdb
db:
image: postgres:14
environment:
- POSTGRES_USER=user
- POSTGRES_PASSWORD=password
- POSTGRES_DB=manufacturing_ai
volumes:
- db_data:/var/lib/postgresql/data
redis:
image: redis:7-alpine
volumes:
- redis_data:/data
influxdb:
image: influxdb:2.7
volumes:
- influxdb_data:/var/lib/influxdb2
volumes:
db_data:
redis_data:
influxdb_data:
Kubernetes部署
Deployment配置:
apiVersion: apps/v1
kind: Deployment
metadata:
name: manufacturing-ai-api
spec:
replicas: 3
selector:
matchLabels:
app: manufacturing-ai-api
template:
metadata:
labels:
app: manufacturing-ai-api
spec:
containers:
- name: api
image: manufacturing-ai:latest
ports:
- containerPort: 8000
env:
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: db-secret
key: url
- name: REDIS_URL
valueFrom:
secretKeyRef:
name: redis-secret
key: url
resources:
requests:
cpu: 500m
memory: 1Gi
limits:
cpu: 2000m
memory: 4Gi
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: manufacturing-ai-api
spec:
selector:
app: manufacturing-ai-api
ports:
- port: 80
targetPort: 8000
type: LoadBalancer
Ingress配置:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: manufacturing-ai-ingress
spec:
rules:
- host: manufacturing-ai.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: manufacturing-ai-api
port:
number: 80
部署脚本
一键部署脚本
#!/bin/bash
# 一键部署脚本
set -e
echo "开始部署智能制造/工业4.0解决方案..."
# 检查环境
echo "检查环境..."
kubectl version --client
docker version
# 构建镜像
echo "构建Docker镜像..."
docker build -t manufacturing-ai:latest .
# 推送镜像(如果需要)
# docker push manufacturing-ai:latest
# 部署到Kubernetes
echo "部署到Kubernetes..."
kubectl apply -f k8s/
# 等待部署完成
echo "等待部署完成..."
kubectl wait --for=condition=available --timeout=300s deployment/manufacturing-ai-api
# 检查服务状态
echo "检查服务状态..."
kubectl get pods
kubectl get services
echo "部署完成!"
11.2 配置管理
环境配置
配置文件结构
config/
├── base.yaml # 基础配置
├── development.yaml # 开发环境配置
├── staging.yaml # 预发布环境配置
└── production.yaml # 生产环境配置
配置示例
# base.yaml
database:
host: localhost
port: 5432
name: manufacturing_ai
pool_size: 10
redis:
host: localhost
port: 6379
db: 0
ai_models:
scheduling_model:
path: models/scheduling_model.pkl
version: v2.0
quality_model:
path: models/quality_model.pkl
version: v1.5
maintenance_model:
path: models/maintenance_model.pkl
version: v2.1
# production.yaml
database:
host: ${DB_HOST}
port: ${DB_PORT}
name: ${DB_NAME}
username: ${DB_USER}
password: ${DB_PASSWORD}
redis:
host: ${REDIS_HOST}
port: ${REDIS_PORT}
password: ${REDIS_PASSWORD}
logging:
level: INFO
file: /var/log/app.log
max_size: 100MB
backup_count: 10
密钥管理
Kubernetes Secrets
apiVersion: v1
kind: Secret
metadata:
name: db-secret
type: Opaque
stringData:
url: postgresql://user:password@db:5432/manufacturing_ai
username: user
password: password
使用密钥
env:
- name: DATABASE_URL
valueFrom:
secretKeyRef:
name: db-secret
key: url