端到端研发自动化系统 · 任务 6:部署与 API 访问权限配置
本报告详细记录了 OpenClaw 服务的完整部署方案,包括 Docker 和 Kubernetes 两种部署方式,以及全面的 API 访问权限配置。OpenClaw 是一个开源、本地优先的 AI 智能体平台与自动化网关,通过统一网关连接多种主流大模型与即时通信平台。
支持开发、测试、生产环境的灵活部署,提供 Docker Compose 和 Kubernetes 两套完整方案。
Bearer Token 认证、IP 白名单、CORS 配置、速率限制等多层安全防护机制。
Kubernetes HPA 自动扩缩容、健康检查、滚动更新、故障自愈等高可用特性。
Prometheus metrics 暴露、Grafana 仪表板、自定义告警规则等完善的监控体系。
Jenkins Pipeline 自动化部署流程,支持一键部署到 Kubernetes 集群。
Kubernetes NetworkPolicy 网络安全隔离,细粒度的流量控制。
git clone <repository-url>
cd openclaw-deployment
chmod +x scripts/deploy.sh
./scripts/deploy.sh
curl http://localhost:3000/health
# 设置环境变量
export ANTHROPIC_API_KEY="your_anthropic_api_key"
export API_TOKEN="your_secure_api_token"
# 启动 OpenClaw
docker run -d \
-p 3000:3000 \
-p 8080:8080 \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-e API_TOKEN=$API_TOKEN \
-v $(pwd)/data:/app/data \
-v $(pwd)/config:/app/config \
--name openclaw \
openclaw/openclaw:latest
# 启动服务
docker-compose up -d
# 查看状态
docker-compose ps
# 查看日志
docker-compose logs -f openclaw
# 停止服务
docker-compose down
# 带 Ollama 本地模型
docker-compose --profile with-ollama up -d
# 带 Redis 和 Nginx
docker-compose --profile with-redis --profile with-nginx up -d
| 变量名 | 说明 | 默认值 | 必填 |
|---|---|---|---|
ANTHROPIC_API_KEY |
Anthropic API 密钥 | - | 选填* |
OPENAI_API_KEY |
OpenAI API 密钥 | - | 选填* |
API_TOKEN |
API 访问令牌 | 自动生成 | 自动 |
RATE_LIMIT_REQUESTS |
速率限制(请求数) | 100 | 可选 |
ALLOWED_ORIGINS |
CORS 允许的源 | * | 可选 |
* 至少配置一个 AI 模型的 API 密钥
# 1. 创建命名空间
kubectl apply -f k8s/openclaw-namespace.yaml
# 2. 配置 Secrets(填入 API 密钥)
kubectl apply -f k8s/openclaw-secrets.yaml
# 3. 应用所有资源配置
kubectl apply -f k8s/
# 4. 验证部署
kubectl get pods -n openclaw-system
kubectl get svc -n openclaw-system
| 指标 | 目标值 | 最小副本 | 最大副本 |
|---|---|---|---|
| CPU 利用率 | 70% | 2 | 10 |
| 内存利用率 | 80% |
# 赋予执行权限
chmod +x scripts/configure_api_access.sh
# 基本配置(自动生成安全 Token)
./scripts/configure_api_access.sh
# 自定义配置
./scripts/configure_api_access.sh \
-t "your_custom_secure_token" \
-r 200 \
-c "https://your-domain.com"
/health
健康检查端点(无需认证)
/v1/chat/completions
认证
Chat Completion API(兼容 OpenAI 格式)
curl -X POST http://localhost:8080/v1/chat/completions \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"model": "openclaw", "messages": [{"role": "user", "content": "Hello"}]}'
/v1/responses
认证
OpenClaw 原生 API(支持高级功能)
| 配置项 | 说明 | 推荐值 |
|---|---|---|
| Bearer Token 认证 | API 访问令牌验证 | 启用 |
| 速率限制 | 每分钟请求数限制 | 100-200 requests/min |
| CORS 配置 | 跨域访问控制 | 指定域名(生产环境) |
| IP 白名单 | 允许访问的 IP 列表 | 按需配置 |
# 通过 Jenkins CLI
java -jar jenkins-cli.jar -s http://jenkins-url build openclaw-deploy
# 通过 API
curl -X POST http://jenkins-url/job/openclaw-deploy/build \
-u username:api-token \
--data "DEPLOY_ENV=production&RUN_TESTS=true"
# 运行完整测试套件
./scripts/test_api_access.sh \
-h localhost \
-p 3000 \
-t your_api_token \
--verbose
| 测试项 | 说明 | 预期结果 |
|---|---|---|
| 健康检查 | /health 端点 | HTTP 200 |
| 就绪检查 | /ready 端点 | HTTP 200 |
| 认证 API | 有效 Token | HTTP 200/404 |
| 无效 Token | 无效 Token | HTTP 401/403 |
| 速率限制 | 高频请求 | HTTP 429 |
| 端口 | 协议 | 用途 | 访问方式 |
|---|---|---|---|
| 3000 | HTTP | Web 界面和 API | http://localhost:3000 |
| 8080 | HTTP/WebSocket | API Gateway | http://localhost:8080 |
| 6379 | TCP | Redis (可选) | 内部服务 |
| 11434 | TCP | Ollama (可选) | 内部服务 |
# 健康检查
curl http://localhost:3000/health
# API 调用(需要认证)
curl -H "Authorization: Bearer YOUR_API_TOKEN" \
http://localhost:3000/api/v1/status
# Chat Completion
curl -X POST http://localhost:8080/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"model": "openclaw", "messages": [{"role": "user", "content": "Hello"}]}'
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 容器无法启动 | 端口占用/资源不足 | 检查端口占用、增加资源限制 |
| API 认证失败 | Token 格式错误 | 确保 Token 长度≥16 字符 |
| K8s Pod 未就绪 | Secret 配置缺失 | 检查并配置 API Keys |
| 速率限制不生效 | 配置未生效 | 重启服务并检查日志 |
# Docker 日志
docker logs --tail 100 -f openclaw
# Kubernetes 日志
kubectl logs -f deployment/openclaw -n openclaw-system