# CronJob 生成器的完整配置示例。
# 标为“必填”的字段没有 schema 默认值，文件中的值仅供参考，使用前应替换为目标值。
# 每个字段的注释说明它是必填、使用默认值，还是给出了可选配置示例。
# CronJob 配置接受的所有 YAML 字段都在本文件中列出。
# 嵌套 workflow 的 nodeGroup 和 ttlSecondsAfterFinished 使用 cronJob 中的值；MySQL
# Secret 名由 cronJob.name 派生为 <cronJob.name>-mysql，Secret key 使用 mysql.cnf。

# 配置格式版本；必填，目前仅支持整数 1。
schemaVersion: 1

cronJob:
  # CronJob 名称，也是派生 Secret、ConfigMap 等资源名的前缀；必填，当前为示例值。
  name: on-demand-packed-export

  # 所有资源所在的 Kubernetes namespace；默认且固定为 tidb-serverless。
  namespace: tidb-serverless

  # 五字段 cron 表达式；必填，示例表示每天 01:00 执行。
  schedule: "0 1 * * *"

  # schedule 使用的 IANA 时区；默认 Etc/UTC。
  timeZone: Etc/UTC

  # 错过计划时间后仍允许启动 Job 的秒数；默认 3600。
  startingDeadlineSeconds: 3600

  # Controller 及各 workflow stage 的 Job 完成后进入自动清理的秒数；默认 2592000（30 天）。
  ttlSecondsAfterFinished: 2592000

  # 保留的成功 Controller Job 数；默认 3。
  successfulJobsHistoryLimit: 3

  # 保留的失败 Controller Job 数；默认 5。
  failedJobsHistoryLimit: 5

  # 是否暂停定时调度；默认 false。
  suspend: false

  # 记录在结果与通知中的 Kubernetes context 名；默认 unknown。
  kubernetesContextName: unknown

  # Controller Pod 使用的现有 ServiceAccount；必填，当前为示例值。
  serviceAccountName: backup-restore-manus

  # 包含本仓库 Controller 程序及运行依赖的镜像；必填，使用前替换占位符。
  controllerImage: <workflow-image>

  # Controller 镜像拉取策略；默认 Always，可选 IfNotPresent 或 Never。
  imagePullPolicy: Always

  # Controller、Pack、Export 和 Watermark 共用的 node group label；默认 general。
  nodeGroup: general

  # Controller Pod 的资源 request 与 limit；默认省略整个 resources 块。
  # 下面列出完整的可选结构和示例值；提供 resources 时四个子字段均必填。
  resources:
    requests:
      # Controller 请求的 CPU quantity。
      cpu: 100m
      # Controller 请求的内存 quantity。
      memory: 256Mi
    limits:
      # Controller 的 CPU limit。
      cpu: "1"
      # Controller 的内存 limit。
      memory: 1Gi

workflow:
  # 内嵌 workflow 格式版本；必填，目前仅支持整数 1。
  schemaVersion: 1

  pack:
    # Pack shard 数，同时决定 Pack Job 数；必填，当前为示例值。
    shards: 4

    # 包含 /cse-ctl 的 Pack 镜像；必填，使用前替换占位符。
    cseCtlImage: <pack-cse-ctl-image>

    # 每个 Pack Pod 的资源 request；两项均必填，当前为示例值。
    resources:
      # 每个 Pack Pod 请求的 CPU quantity。
      cpuRequest: "3"
      # 每个 Pack Pod 请求的内存 quantity。
      memoryRequest: 14G

    # Pack 临时 EBS 配置；两个子字段默认均为 null。
    ebs:
      # 临时 EBS 容量；默认 null，Pack 使用 emptyDir。
      request: null
      # EBS StorageClass；默认 null，设置 request 后沿用 tikv-api 数据卷的 StorageClass。
      storageClass: null

    # 追加给 Pack manifest 生成器的 argv；默认 []。
    generatorArgs: []

    # 追加给 cse-ctl pack-backup 的 argv；默认 []。
    commandArgs: []

  export:
    # 加密 CSV 和 complete marker 共用的 S3 根前缀；必填，使用前替换占位符。
    outPrefix: s3://<bucket>/<shared-export-prefix>

    # 包含 /cse-ctl 的 Export 辅助镜像；必填，使用前替换占位符。
    cseCtlImage: <export-cse-ctl-image>

    # 包含 /dumpling 的镜像；必填，使用前替换占位符。
    dumplingImage: <dumpling-image>

    # 运行 Export worker 的 Lambda-compatible Python 3.13 镜像；显示的是有效默认值。
    runnerImage: public.ecr.aws/lambda/python:3.13

    # 每个 Export Pod 的资源 request；两项均必填，当前为示例值。
    resources:
      # 每个 Export Pod 请求的 CPU quantity。
      cpuRequest: "3"
      # 每个 Export Pod 请求的内存 quantity。
      memoryRequest: 14G

    # 用于排除匹配 meta 文件名（含 .meta）的正则；默认 null，处理全部 meta。
    excludeMetaNameRegexp: null

    # 追加给 Export manifest 生成器的 argv；默认 []，Job 最大重试次数使用生成器默认值 16。
    generatorArgs: []

    # 追加给 Export worker 的 argv；默认 []，并发数为 1，单个 Dumpling 进程不设超时。
    workerArgs: []

    # 追加给每个 Dumpling 进程的 argv；默认 []，沿用 Dumpling 自身默认参数。
    dumplingArgs: []

  watermark:
    # 包含 Python、Boto3 和 PyMySQL 的 Watermark worker 镜像；必填，替换占位符。
    image: <workflow-image>

    # Watermark 检查 complete marker 时使用的 AWS region；必填，当前为示例值。
    awsRegion: us-east-1

    # Watermark Pod 的资源 request；两项均必填，当前为示例值。
    resources:
      # Watermark Pod 请求的 CPU quantity。
      cpuRequest: "1"
      # Watermark Pod 请求的内存 quantity。
      memoryRequest: 2Gi

    # 追加给 Watermark manifest 生成器的 argv；默认 []。
    generatorArgs: []

    # 追加给 Watermark worker 的 argv；默认 []，并发 cluster/MySQL 连接数为 8。
    workerArgs: []
