刘立冬 118ecf573e fix(auto_put_ad_mini): 优化审批流程 - 过滤bid_up + 简化执行反馈 3 недель назад
..
README.md 118ecf573e fix(auto_put_ad_mini): 优化审批流程 - 过滤bid_up + 简化执行反馈 3 недель назад
configmap.yaml 118ecf573e fix(auto_put_ad_mini): 优化审批流程 - 过滤bid_up + 简化执行反馈 3 недель назад
cronjob.yaml 118ecf573e fix(auto_put_ad_mini): 优化审批流程 - 过滤bid_up + 简化执行反馈 3 недель назад
deployment.yaml 118ecf573e fix(auto_put_ad_mini): 优化审批流程 - 过滤bid_up + 简化执行反馈 3 недель назад
namespace.yaml 118ecf573e fix(auto_put_ad_mini): 优化审批流程 - 过滤bid_up + 简化执行反馈 3 недель назад
network-policy.yaml 118ecf573e fix(auto_put_ad_mini): 优化审批流程 - 过滤bid_up + 简化执行反馈 3 недель назад
pvc.yaml 118ecf573e fix(auto_put_ad_mini): 优化审批流程 - 过滤bid_up + 简化执行反馈 3 недель назад
secret.yaml 118ecf573e fix(auto_put_ad_mini): 优化审批流程 - 过滤bid_up + 简化执行反馈 3 недель назад

README.md

Kubernetes Deployment Guide

部署模式选择

模式 A:Deployment + APScheduler(推荐)

优势

  • 常驻 Pod,资源占用稳定
  • HTTP 健康检查支持
  • 可通过 API 手动触发任务
  • 日志集中输出,易于查看
  • 启动速度快

部署步骤

# 1. 创建命名空间
kubectl apply -f namespace.yaml

# 2. 部署 PVC(持久化存储)
kubectl apply -f pvc.yaml

# 3. 部署 ConfigMap(公开配置)
kubectl apply -f configmap.yaml

# 4. 部署 Secret(敏感信息)
# 注意:先修改 secret.yaml 中的实际值
kubectl apply -f secret.yaml

# 5. 部署 Deployment 和 Service
kubectl apply -f deployment.yaml

# 6. (可选)部署网络策略
kubectl apply -f network-policy.yaml

# 7. 验证部署
kubectl get all -n ad-automation
kubectl get pvc -n ad-automation

# 8. 查看日志
kubectl logs -f -n ad-automation deployment/auto-put-ad-mini

# 9. 端口转发(本地测试)
kubectl port-forward -n ad-automation svc/auto-put-ad-mini 8080:8080

# 10. 测试健康检查
curl http://localhost:8080/health | jq .

# 11. 手动触发任务
curl -X POST http://localhost:8080/trigger | jq .

模式 B:CronJob(传统方式)

优势

  • Kubernetes 原生调度
  • 任务隔离性好
  • 故障自动重试

部署步骤

# 1-4. 同上

# 5. 部署 CronJob(替代 Deployment)
kubectl apply -f cronjob.yaml

# 6. 验证
kubectl get cronjob -n ad-automation
kubectl get jobs -n ad-automation

# 7. 手动触发测试
kubectl create job --from=cronjob/auto-put-ad-mini manual-test-1 -n ad-automation

# 8. 查看日志
kubectl logs -n ad-automation job/manual-test-1

配置修改

修改定时调度

Deployment 模式

kubectl patch configmap ad-config -n ad-automation \
  --patch '{"data":{"CRON_SCHEDULE":"0 3 * * *"}}'  # 改为凌晨3点

kubectl rollout restart deployment/auto-put-ad-mini -n ad-automation

CronJob 模式

kubectl edit cronjob auto-put-ad-mini -n ad-automation
# 修改 spec.schedule 字段

启用自动执行

# 测试通过后,启用执行开关
kubectl patch configmap ad-config -n ad-automation \
  --patch '{"data":{"EXECUTION_ENABLED":"true"}}'

kubectl rollout restart deployment/auto-put-ad-mini -n ad-automation

修改白名单账户

# 方式1:通过 Secret(推荐)
kubectl patch secret ad-secrets -n ad-automation \
  --patch '{"stringData":{"WHITELIST_ACCOUNTS":"80769799,71305011,12345678"}}'

kubectl rollout restart deployment/auto-put-ad-mini -n ad-automation

# 方式2:修改 whitelist.json 并重新构建镜像

监控和故障排查

查看 Pod 状态

kubectl get pods -n ad-automation
kubectl describe pod <pod-name> -n ad-automation

查看日志

# 实时日志
kubectl logs -f -n ad-automation deployment/auto-put-ad-mini

# 最近 100 行日志
kubectl logs -n ad-automation deployment/auto-put-ad-mini --tail=100

# CronJob 模式查看特定 Job 日志
kubectl logs -n ad-automation job/<job-name>

检查配置

# 查看 ConfigMap
kubectl get configmap ad-config -n ad-automation -o yaml

# 查看 Secret(base64 编码)
kubectl get secret ad-secrets -n ad-automation -o yaml

# 解码 Secret 值
kubectl get secret ad-secrets -n ad-automation -o jsonpath='{.data.WHITELIST_ACCOUNTS}' | base64 -d

访问输出文件

# 进入 Pod 查看输出
POD_NAME=$(kubectl get pods -n ad-automation -l app=auto-put-ad-mini -o jsonpath='{.items[0].metadata.name}')
kubectl exec -it -n ad-automation $POD_NAME -- bash

# 在 Pod 内查看输出
ls -lh /app/outputs/reports/
cat /app/outputs/reports/llm_decisions_*.csv | head

# 或直接执行命令
kubectl exec -n ad-automation $POD_NAME -- ls -lh /app/outputs/reports/

回滚

Deployment 模式

# 查看历史版本
kubectl rollout history deployment/auto-put-ad-mini -n ad-automation

# 回滚到上一个版本
kubectl rollout undo deployment/auto-put-ad-mini -n ad-automation

# 回滚到指定版本
kubectl rollout undo deployment/auto-put-ad-mini --to-revision=2 -n ad-automation

CronJob 模式

# 暂停 CronJob
kubectl patch cronjob auto-put-ad-mini -n ad-automation -p '{"spec":{"suspend":true}}'

# 删除失败的 Job
kubectl delete job -l app=auto-put-ad-mini -n ad-automation

# 更新镜像
kubectl set image cronjob/auto-put-ad-mini \
  decision-engine=your-registry/auto-put-ad-mini:v0.9.0 \
  -n ad-automation

# 恢复 CronJob
kubectl patch cronjob auto-put-ad-mini -n ad-automation -p '{"spec":{"suspend":false}}'

清理资源

# 删除所有资源
kubectl delete -f deployment.yaml
kubectl delete -f cronjob.yaml
kubectl delete -f pvc.yaml
kubectl delete -f configmap.yaml
kubectl delete -f secret.yaml
kubectl delete -f network-policy.yaml

# 或删除整个命名空间(慎用)
kubectl delete namespace ad-automation

安全建议

  1. Secret 管理

    • 不要将真实 Secret 提交到 Git
    • 使用 Kubernetes External Secrets 或 Sealed Secrets
    • 定期轮换敏感凭据
  2. 网络隔离

    • 启用 NetworkPolicy
    • 仅允许必要的出站连接
    • 限制 Pod 间通信
  3. 资源限制

    • 合理设置 CPU 和内存 limits
    • 使用 LimitRange 和 ResourceQuota
    • 监控资源使用情况
  4. 最小权限

    • 不使用 root 用户运行
    • 禁用特权容器
    • 使用 readOnlyRootFilesystem(如可行)