apiVersion: pingcap.com/v1alpha1
kind: TidbCluster
metadata:
  name: serverless-cluster
  namespace: tidb-serverless
  labels:
    app.kubernetes.io/managed-by: cp9
spec:
  timezone: UTC
  version: v7.5.0
  pvReclaimPolicy: Delete
  enablePVReclaim: true
  enableDynamicConfiguration: true
  configUpdateStrategy: RollingUpdate
  clusterDeletionProtection: false
  discovery: {}
  tlsCluster:
    enabled: true
  imagePullPolicy: IfNotPresent
  imagePullSecrets:
    - name: cp9-ecr-pull-385595570414
  helper:
    image: gcr.io/pingcap-public/dbaas/busybox:1.31.1
  pd:
    baseImage: 385595570414.dkr.ecr.us-west-2.amazonaws.com/tidbcloud/serverless/pd
    version: 20260507-c7b45b8cf72f9337eb99a981a327218e614a67d3
    replicas: 1
    maxFailoverCount: 0
    groupName: serverless-cluster
    leaderPriority: 3
    storageClassName: ebs-sc
    requests:
      cpu: "1"
      memory: 12Gi
      storage: 50Gi
    limits:
      cpu: "7"
      memory: 12Gi
    env:
      - name: PD_SERVICE_MODE
        value: api
      - name: CA_PATH
        value: /server-cert/ca.crt
      - name: CERT_PATH
        value: /server-cert/tls.crt
      - name: KEY_PATH
        value: /server-cert/tls.key
      - name: PD_ADDR
        value: https://127.0.0.1:2379
    additionalVolumes:
      - name: server-cert
        secret:
          secretName: serverless-cluster-pd-cluster-secret
    additionalVolumeMounts:
      - name: server-cert
        mountPath: /server-cert
    config: |
      [dashboard]
        enable-telemetry = false
        internal-proxy = true

      [replication]
        enable-placement-rules = true
        max-replicas = 3

      [security]
        enable-sem = true
        cacert-path = "/server-cert/ca.crt"
        cert-path = "/server-cert/tls.crt"
        key-path = "/server-cert/tls.key"

      [keyspace]
        enable-global-safe-point-v2 = true
        disable-raw-kv-region-split = true
        wait-region-split = true
        wait-region-split-timeout = "120s"
        check-region-split-interval = "1s"

      [micro-service]
        enable-resource-manager-fallback = false

      [controller.request-unit]
        write-base-cost = 0.5
        write-per-batch-base-cost = 0.5
        write-cost-per-byte = 0.00048828

      [pd-server]
        enable-grpc-client-metrics = true
  tikv:
    baseImage: 385595570414.dkr.ecr.us-west-2.amazonaws.com/tidbcloud/serverless/tikv
    version: 5b7adce957a177fdebfa4e32740f31ca92301195
    serviceAccount: backup-restore
    replicas: 0
    maxFailoverCount: 3
    groupName: ""
    storageClassName: gp3-500
    nodeSelector:
      serverless.tidbcloud.com/node: tikv
      serverless.tidbcloud.com/tier: standard
      serverless.tidbcloud.com/zone: starter
    storeLabels:
      - serverless.tidbcloud.com/tier
      - serverless.tidbcloud.com/zone
    requests:
      storage: 64Gi
    limits:
      memory: 2Gi
    additionalContainers:
      - name: tikv-log
        image: gcr.io/pingcap-public/dbaas/busybox:1.31.1
        command:
          - sh
          - -c
          - touch /var/lib/tikv-ebs/tikv.log; tail -n0 -F /var/lib/tikv-ebs/tikv.log;
        volumeMounts:
          - name: tikv-raft-db
            mountPath: /var/lib/tikv-ebs
    additionalVolumes:
      - name: server-cert
        secret:
          secretName: serverless-cluster-tikv-cluster-secret
    additionalVolumeMounts:
      - name: server-cert
        mountPath: /server-cert
    storageVolumes:
      - name: raft-db
        storageClassName: ebs-sc
        storageSize: 10Gi
        mountPath: /var/lib/tikv-ebs
      - name: raft-wal
        storageClassName: ebs-sc
        storageSize: 5Gi
        mountPath: /var/lib/tikv-raft-wal
    env:
      - name: DFS_PREFIX
        value: CP9_STARTER_SERVERLESS_PREFIX
      - name: DFS_S3_BUCKET
        value: CP9_STARTER_SERVERLESS_BUCKET
      - name: DFS_S3_REGION
        value: CP9_STARTER_SERVERLESS_REGION
      - name: MALLOC_CONF
        value: prof:true,prof_active:true
      - name: DFS_ALLOW_FALLBACK_LOCAL
        value: "0"
      - name: CA_PATH
        value: /server-cert/ca.crt
      - name: CERT_PATH
        value: /server-cert/tls.crt
      - name: KEY_PATH
        value: /server-cert/tls.key
    config: |
      enable-inner-key-offset = true

      [cdc]
        enable = true

      [coprocessor]
        enable-region-bucket = true
        region-split-keys = 50000000
        region-split-size = "500MiB"

      [dfs]
        remote-compactor-addr = "https://tikv-worker-service.tidb-serverless.svc:19000/compact"

      [gc]
        disable-safe-point-fallback-v1 = true
        enable-safe-point-v2 = true

      [import]
        import-mode-timeout = "10m"
        num-threads = 1
        stream-channel-window = 128

      [kvengine]
        build-columnar = true
        build-fts-index = true
        gc-lock-extra-cf = true
        per-keyspace-configs = [{keyspace = 1, split-size-factor = 2.0}]
        remote-coprocessor-addr = "https://cop-worker-service.tidb-serverless.svc:19000/coprocessor"
        remote-worker-addr = "https://tikv-worker-service.tidb-serverless.svc:19000/coprocessor"
        [kvengine.ia]
          mem-cap = "16%"
          disk-cap = "71%"

      [log]
        level = "info"
        [log.file]
          filename = "/var/lib/tikv-ebs/tikv.log"
          max-backups = 10
          max-days = 5
          max-size = 300

      [raftstore]
        enable-kv-engine-meta-diff = true
        raftdb-path = "/var/lib/tikv-ebs/raft-db"

      [raft-engine]
        target-file-size = "512MiB"

      [rfengine]
        lightweight-backup = true
        rlog-cache-size-threshold = "16KiB"
        wal-chunk-target-file-size = "64MiB"
        wal-sync-dir = "/var/lib/tikv-raft-wal"

      [rocksdb]
        [rocksdb.defaultcf]
          bottommost-level-compression = "no"
        [rocksdb.writecf]
          bottommost-level-compression = "no"

      [security]
        ca-path = "/server-cert/ca.crt"
        cert-path = "/server-cert/tls.crt"
        key-path = "/server-cert/tls.key"
        [security.master-key]
          cipher-text = "CP9_STARTER_CSE_KEY_CIPHERTEXT"
          key-id = "CP9_STARTER_CSE_MASTER_KEY_ID"
          vendor = "CP9_STARTER_CSE_KEY_VENDOR"

      [server]
        grpc-concurrent-stream = 10240
        push-metrics-addr = "http://serverless-metering.serverless-metering:9091"
        push-metrics-interval = "30s"
        status-thread-pool-size = 2

      [storage]
        api-version = 2
        enable-ttl = true
        reserve-space = "0KiB"
        scheduler-pending-write-threshold = "1GiB"
        ttl-check-poll-interval = "24h"
        [storage.flow-control]
          enable = true
          hard-region-mem-limit = "256MB"
          soft-region-mem-limit = "128MB"
  tidb:
    baseImage: 385595570414.dkr.ecr.us-west-2.amazonaws.com/tidbcloud/serverless/tidb
    version: 20260317-08575a5655e941f9ccd9db6e6e7c1af7d2034904
    replicas: 1
    maxFailoverCount: 3
    requests:
      cpu: 100m
      memory: 512Mi
    limits:
      cpu: "1"
      memory: 1Gi
    env:
      - name: GOMEMLIMIT
        value: 768MiB
      - name: CA_PATH
        value: /server-cert/ca.crt
      - name: CERT_PATH
        value: /server-cert/tls.crt
      - name: KEY_PATH
        value: /server-cert/tls.key
    service:
      type: NodePort
      externalTrafficPolicy: Local
    additionalVolumes:
      - name: server-cert
        secret:
          secretName: serverless-cluster-tidb-cluster-secret
    additionalVolumeMounts:
      - name: server-cert
        mountPath: /server-cert
    config: |
      enable-telemetry = false
      max-server-connections = 0
      mem-quota-query = 67108864
      new_collations_enabled_on_first_bootstrap = true
      run-auto-analyze = false
      server-memory-quota = 268435456
      enable-safe-point-v2 = true

      [security]
        enable-sem = false
        cluster-ssl-ca = "/server-cert/ca.crt"
        cluster-ssl-cert = "/server-cert/tls.crt"
        cluster-ssl-key = "/server-cert/tls.key"
