最后更新: 2024年1月15日
部署指南
本指南将帮助您了解如何将应用部署到 UnlimitBytes 云平台。我们支持多种部署方式,满足不同场景的需求。
部署方式
1. Git 推送部署
最简单的部署方式,只需将代码推送到 Git 仓库即可自动触发部署。
# 添加远程仓库
git remote add unlimitbytes https://git.unlimitbytes.com/your-project.git
# 推送代码触发部署
git push unlimitbytes main
工作流程:
- 推送代码到指定分支
- 自动构建 Docker 镜像
- 运行测试(如果配置)
- 部署到生产环境
- 健康检查验证
2. CLI 部署
使用 UnlimitBytes CLI 工具进行本地部署控制。
# 安装 CLI
npm install -g @unlimitbytes/cli
# 登录账户
ub login
# 部署应用
ub deploy --env production
# 查看部署状态
ub status
# 查看部署日志
ub logs --follow
3. Docker 镜像部署
直接推送 Docker 镜像到我们的容器仓库。
# 构建镜像
docker build -t registry.unlimitbytes.com/your-app:v1.0.0 .
# 登录仓库
docker login registry.unlimitbytes.com
# 推送镜像
docker push registry.unlimitbytes.com/your-app:v1.0.0
# 使用 CLI 部署
ub deploy --image registry.unlimitbytes.com/your-app:v1.0.0
4. API 部署
通过 API 实现自定义部署流程集成。
const response = await fetch('https://api.unlimitbytes.com/v1/deployments', {
method: 'POST',
headers: {
'Authorization': `Bearer ${API_TOKEN}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
project_id: 'your-project-id',
image: 'registry.unlimitbytes.com/your-app:v1.0.0',
environment: 'production',
replicas: 3
})
});
const deployment = await response.json();
console.log('Deployment ID:', deployment.id);
部署配置
unlimitbytes.yaml
在项目根目录创建 unlimitbytes.yaml 配置文件:
# 应用基本信息
app:
name: my-awesome-app
region: cn-shanghai
runtime: nodejs18
# 构建配置
build:
dockerfile: Dockerfile
context: .
args:
NODE_ENV: production
cache: true
# 部署配置
deploy:
replicas: 3
strategy: rolling-update
max_surge: 1
max_unavailable: 0
# 资源限制
resources:
cpu: 1000m
memory: 512Mi
# 环境变量
env:
NODE_ENV: production
PORT: 3000
# 健康检查
health_check:
http:
path: /health
port: 3000
interval: 10s
timeout: 5s
retries: 3
# 自动扩缩容
autoscaling:
enabled: true
min_replicas: 2
max_replicas: 10
target_cpu: 70
target_memory: 80
环境管理
多环境部署
支持开发、测试、生产等多个环境:
# 部署到开发环境
ub deploy --env development
# 部署到测试环境
ub deploy --env staging
# 部署到生产环境
ub deploy --env production
环境变量
通过 Web 控制台或 CLI 管理环境变量:
# 设置环境变量
ub env:set DATABASE_URL=postgres://... --env production
# 查看环境变量
ub env:get --env production
# 删除环境变量
ub env:unset DATABASE_URL --env production
部署策略
滚动更新(默认)
逐步替换旧版本实例,零停机时间:
deploy:
strategy: rolling-update
max_surge: 1 # 最多新增1个实例
max_unavailable: 0 # 保证所有实例可用
蓝绿部署
同时运行新旧两个版本,一键切换:
deploy:
strategy: blue-green
auto_switch: false # 手动切换流量
# 切换流量到新版本
ub traffic:switch --version v2.0.0
# 回滚到旧版本
ub traffic:rollback
金丝雀发布
逐步将流量切换到新版本:
deploy:
strategy: canary
steps:
- weight: 10 # 10% 流量
pause: 300s # 暂停5分钟
- weight: 50 # 50% 流量
pause: 300s
- weight: 100 # 100% 流量
回滚操作
快速回滚
# 查看部署历史
ub deployments:list
# 回滚到上一个版本
ub rollback
# 回滚到指定版本
ub rollback --version v1.2.0
自动回滚
配置自动回滚条件:
deploy:
auto_rollback:
enabled: true
conditions:
- error_rate > 5%
- response_time > 2000ms
- health_check_failures > 3
CI/CD 集成
GitHub Actions
name: Deploy to UnlimitBytes
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install UnlimitBytes CLI
run: npm install -g @unlimitbytes/cli
- name: Deploy
env:
UB_API_TOKEN: ${{ secrets.UB_API_TOKEN }}
run: |
ub login --token $UB_API_TOKEN
ub deploy --env production --wait
GitLab CI
deploy:
stage: deploy
image: node:18
script:
- npm install -g @unlimitbytes/cli
- ub login --token $UB_API_TOKEN
- ub deploy --env production --wait
only:
- main
监控部署
实时日志
# 查看部署日志
ub logs --follow
# 查看特定实例日志
ub logs --instance pod-abc123 --follow
# 搜索日志
ub logs --search "error" --since 1h
部署状态
# 查看当前状态
ub status
# 查看详细信息
ub describe
# 查看实例列表
ub instances:list
最佳实践
1. 使用健康检查
确保应用提供健康检查端点:
// Express 示例
app.get('/health', (req, res) => {
// 检查数据库连接
if (!db.isConnected()) {
return res.status(503).json({ status: 'unhealthy' });
}
res.json({ status: 'healthy' });
});
2. 优化构建时间
使用 Docker 多阶段构建和缓存:
FROM node:18 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
RUN npm run build
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules
CMD ["node", "dist/index.js"]
3. 环境隔离
不同环境使用不同的配置和资源:
# development
resources:
cpu: 500m
memory: 256Mi
# production
resources:
cpu: 2000m
memory: 1Gi
4. 版本标签
使用语义化版本标签:
# 打标签
git tag -a v1.2.0 -m "Release version 1.2.0"
git push origin v1.2.0
# 部署指定版本
ub deploy --tag v1.2.0
故障排查
部署失败
# 查看部署日志
ub logs --deployment latest
# 查看事件
ub events --follow
# 验证配置
ub config:validate
性能问题
# 查看资源使用
ub metrics
# 增加实例数量
ub scale --replicas 5
# 垂直扩展
ub resources:update --cpu 2000m --memory 1Gi