apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: rep-cdc
spec:
  persistentVolumeClaimRetentionPolicy:
    whenDeleted: Delete
    whenScaled: Delete
  serviceName: "rep-cdc"
  replicas: 0
  selector:
    matchLabels:
      app.kubernetes.io/name: rep-cdc
  template:
    metadata:
      annotations:
        cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
        prometheus.io/path: /metrics
        prometheus.io/port: "8300"
        prometheus.io/scrape: "true"
        serverless.tidbcloud.com/keyspace-id: "0" # fill by replication worker.
      labels:
        app: rep-cdc
        app.kubernetes.io/name: rep-cdc
        app.kubernetes.io/component: rep-cdc
    spec:
      containers:
        - name: rep-cdc
          command:
            - /bin/sh
            - /usr/local/bin/rep_cdc_start_script.sh
          env:
            # replication worker will fill REP_PD_STS_NAME, REP_CDC_STS_NAME, GC_TTLREP_CDC_GC_TTL
            - name: CONTAINER_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 8300
          resources:
            limits:
              cpu: "3"
              memory: 6Gi
            requests:
              cpu: "1"
              memory: 2Gi
          volumeMounts:
            - mountPath: /data
              name: data
            - mountPath: /etc/podinfo
              name: podinfo
              readOnly: true
            - mountPath: /server-cert
              name: server-cert
            - mountPath: /usr/local/bin
              name: startup-script
              readOnly: true
      volumes:
        - name: podinfo
          downwardAPI:
            items:
              - path: annotations
                fieldRef:
                  fieldPath: metadata.annotations
        - name: server-cert
          secret:
            defaultMode: 420
            secretName: replication-worker-cluster-secret
        - name: startup-script
          configMap:
            defaultMode: 420
            items:
              - key: rep-cdc-startup-script
                path: rep_cdc_start_script.sh
            name: rep-scripts
  volumeClaimTemplates:
    - metadata:
        name: data
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 50Gi
        storageClassName: gp3-500
        volumeMode: Filesystem
