当前位置: 首页 > news >正文

Celery Worker部署

# k8s/celery-deployment.yaml - MonkeyCode生成 apiVersion: apps/v1 kind: Deployment metadata: name: myapp-celery-worker namespace: myapp-production labels: app: myapp component: celery-worker spec: replicas: 2 selector: matchLabels: app: myapp component: celery-worker template: metadata: labels: app: myapp component: celery-worker spec: containers: - name: celery-worker image: registry.example.com/myapp-api:latest command: ["celery", "-A", "app.celery_app", "worker", "--loglevel=info", "--concurrency=4"] envFrom: - configMapRef: name: myapp-config - secretRef: name: myapp-secrets resources: requests: cpu: "500m" memory: "512Mi" limits: cpu: "2000m" memory: "1Gi" --- apiVersion: apps/v1 kind: Deployment metadata: name: myapp-celery-beat namespace: myapp-production labels: app: myapp component: celery-beat spec: replicas: 1 # Beat只能运行1个副本 selector: matchLabels: app: myapp component: celery-beat template: metadata: labels: app: myapp component: celery-beat spec: containers: - name: celery-beat image: registry.example.com/myapp-api:latest command: ["celery", "-A", "app.celery_app", "beat", "--loglevel=info"] envFrom: - configMapRef: name: myapp-config - secretRef: name: myapp-secrets

6. 数据库部署(StatefulSet)

# k8s/postgres-statefulset.yaml - MonkeyCode生成 apiVersion: apps/v1 kind: StatefulSet metadata: name: postgres namespace: myapp-production spec: serviceName: postgres-service replicas: 1 # 生产环境建议用云RDS selector: matchLabels: app: myapp component: postgres template: metadata: labels: app: myapp component: postgres spec: containers: - name: postgres image: postgres:16-alpine ports: - containerPort: 5432 env: - name: POSTGRES_DB value: myapp - name: POSTGRES_USER value: appuser - name: POSTGRES_PASSWORD valueFrom: secretKeyRef: name: myapp-secrets key: DB_PASSWORD - name: PGDATA value: /var/lib/postgresql/data/pgdata resources: requests: cpu: "500m" memory: "1Gi" limits: cpu: "2000m" memory: "4Gi" volumeMounts: - name: postgres-data mountPath: /var/lib/postgresql/data livenessProbe: exec: command: ["pg_isready", "-U", "appuser", "-d", "myapp"] initialDelaySeconds: 30 periodSeconds: 10 readinessProbe: exec: command: ["pg_isready", "-U", "appuser", "-d", "myapp"] initialDelaySeconds: 5 periodSeconds: 5 volumeClaimTemplates: - metadata: name: postgres-data spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 50Gi --- apiVersion: v1 kind: Service metadata: name: postgres-service namespace: myapp-production spec: selector: app: myapp component: postgres ports: - port: 5432 targetPort: 5432 clusterIP: None # Headless Service(StatefulSet用)

7. CI/CD流水线(GitHub Actions → K8s)

# .github/workflows/deploy.yml - MonkeyCode生成 name: Build and Deploy on: push: branches: [main] env: REGISTRY: registry.example.com IMAGE_NAME: myapp-api jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: '3.11' - run: pip install -r requirements.txt - run: pytest tests/ -v --cov=app --cov-report=xml - uses: codecov/codecov-action@v3 build: needs: test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Login to Registry uses: docker/login-action@v3 with: registry: ${{ env.REGISTRY }} username: ${{ secrets.REGISTRY_USERNAME }} password: ${{ secrets.REGISTRY_PASSWORD }} - name: Build and Push uses: docker/build-push-action@v5 with: context: . push: true tags: | ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }} ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest cache-from: type=registry,ref=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest cache-to: type=inline deploy: needs: build runs-on: ubuntu-latest environment: production steps: - uses: actions/checkout@v4 - name: Deploy to K8s uses: steebchen/kubectl@v2.1.1 with: config: ${{ secrets.KUBE_CONFIG }} command: set image deployment/myapp-api api=${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.sha }} -n myapp-production - name: Verify Deployment run: | kubectl rollout status deployment/myapp-api -n myapp-production --timeout=300s kubectl get pods -n myapp-production -l app=myapp,component=api

8. 一键部署脚本

#!/bin/bash # scripts/deploy.sh - MonkeyCode生成 set -euo pipefail ENV=${1:-production} IMAGE_TAG=${2:-latest} echo "🚀 Deploying myapp to $ENV (tag: $IMAGE_TAG)" # 创建命名空间 kubectl apply -f k8s/namespace.yaml # 应用配置 kubectl apply -f k8s/configmap.yaml # 应用数据库 kubectl apply -f k8s/postgres-statefulset.yaml # 等待数据库就绪 echo "⏳ Waiting for PostgreSQL..." kubectl wait --for=condition=ready pod -l app=myapp,component=postgres -n myapp-$ENV --timeout=120s # 应用API kubectl set image deployment/myapp-api api=registry.example.com/myapp-api:$IMAGE_TAG -n myapp-$ENV kubectl rollout status deployment/myapp-api -n myapp-$ENV --timeout=300s # 应用Celery kubectl set image deployment/myapp-celery-worker celery-worker=registry.example.com/myapp-api:$IMAGE_TAG -n myapp-$ENV # 应用HPA kubectl apply -f k8s/hpa.yaml echo "✅ Deployment complete!" kubectl get all -n myapp-$ENV
http://www.jsqmd.com/news/1090821/

相关文章:

  • 终极Chrome画中画扩展:5分钟解锁浏览器多任务处理
  • 论文提速的终极秘籍!智能AI写作辅助网站,逻辑优化超轻松
  • Python的__dict__属性与属性访问在元编程中的动态修改能力
  • 如何在Windows、macOS和Linux上免费体验Switch游戏:Ryujinx模拟器完整指南
  • Adobe GenP 3.0终极指南:如何免费解锁Adobe全系列创意软件
  • 工业品招投标效率低?实测AI智能体自动建档同步台账,告别手动搬砖
  • 57.从零学透 PLC 工业项目!传送带分拣 + 变频调速 + 时序逻辑全教程
  • 千万级客池圈选频发慢查询?深潜wecomapiSCRM标签引擎:位图高维索引、事件流异构同步与并发覆写阻断架构
  • 免费畅玩Switch游戏的终极方案:Ryujinx模拟器完整指南
  • [Python][MediaPipe] 跨平台与特定硬件环境WHL文件安装指南与疑难排解
  • BMS(电池管理系统)详细解析:从原理到架构
  • SVG学习笔记
  • 独立开发 AlphaLens 第 3 周:Vue3 + SpringBoot + DeepSeek 主动删掉了80%的功能
  • 选题毫无头绪?资深导师力荐这几个AI论文写作工具
  • 五种主流导热仪横向对比:谁才是材料热物性测试的更优解?(防护热板法、热流计法、激光闪射法、热线法、TPS瞬态平面热源法导热测量仪)
  • 数字包容性中的无障碍设计与适老化改造
  • 【JAVA毕设源码分享】基于springboot智能阅读推荐系统的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 短剧APP集成微信商家转账到零钱:构建用户即时激励支付闭环
  • 26.QT手撸布局+基础控件模板
  • Red Panda Dev-C++:如何用这款免费轻量级IDE快速入门C++编程
  • 如何将Amlogic电视盒变身为功能完整的Linux服务器:2025年终极开源解决方案
  • 规范的AI论文工具榜单(2026 实测推荐)
  • Python+Playwright自动化测试:文件下载场景的稳定解决方案
  • 8086 汇编语言从入门到实战:寻址方式 + 经典作业案例深度复盘
  • 如何选择一款真正纯净的免费小说阅读器:ReadCat开源解决方案深度解析
  • 如何快速免费绕过iOS 15-16激活锁:AppleRa1n完整指南
  • DLSS Swapper终极指南:一键智能管理游戏DLSS、FSR、XeSS版本
  • TAS54x4C音频功放故障诊断与负载检测技术详解
  • 探索U校园智能自动化答题:深度解析AutoUnipus技术原理与实战应用
  • Destiny 2单人模式完整指南:如何快速实现独狼游戏体验