apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: replication-worker
  namespace: tidb-serverless
spec:
  replicas: 1
  serviceName: "replication-worker"
  selector:
    matchLabels:
      app.kubernetes.io/name: replication-worker
  template:
    metadata:
      annotations:
        cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
        prometheus.io/path: /metrics
        prometheus.io/port: "19000"
        prometheus.io/scrape: "true"
      labels:
        app: replication-worker
        app.kubernetes.io/name: replication-worker
        app.kubernetes.io/component: replication-worker
    spec:
      containers:
        - name: replication-worker
          command:
            - /bin/sh
            - /usr/local/bin/replication_worker_start_script.sh
            - --cacert
            - /server-cert/ca.crt
            - --cert
            - /server-cert/tls.crt
            - --key
            - /server-cert/tls.key
          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: CSE_MASTER_KEY_ID
              value: CP9_STARTER_CSE_MASTER_KEY_ID
            - name: CSE_MASTER_KEY_CIPHER_TEXT
              value: CP9_STARTER_CSE_KEY_CIPHERTEXT
            - name: CSE_MASTER_KEY_VENDOR
              value: CP9_STARTER_CSE_KEY_VENDOR
            - name: CONTAINER_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: MALLOC_CONF
              value: prof:true
            - name: CA_PATH
              value: /server-cert/ca.crt
            - name: CERT_PATH
              value: /server-cert/tls.crt
            - name: KEY_PATH
              value: /server-cert/tls.key
          image: 385595570414.dkr.ecr.us-west-2.amazonaws.com/tidbcloud/serverless/tikv:31ddf579f1a8611ef1b51375cdfb75a91d43f91d
          ports:
            - containerPort: 19160
              name: grpc
            - containerPort: 19000
              name: http
          resources:
            limits:
              cpu: "4"
              memory: 30Gi
            requests:
              cpu: "2"
              memory: 15Gi
          volumeMounts:
            - mountPath: /data
              name: data
            - mountPath: /etc/config
              name: config-volume
            - mountPath: /etc/podinfo
              name: podinfo
              readOnly: true
            - mountPath: /usr/local/bin
              name: startup-script
              readOnly: true
            - mountPath: /server-cert
              name: server-cert
      volumes:
        - name: config-volume
          configMap:
            items:
              - key: replication-worker.toml
                path: replication-worker.toml
            name: replication-worker-config
        - name: podinfo
          downwardAPI:
            items:
              - path: annotations
                fieldRef:
                  fieldPath: metadata.annotations
        - name: startup-script
          configMap:
            defaultMode: 420
            items:
              - key: replication-worker-startup-script
                path: replication_worker_start_script.sh
            name: rep-scripts
        - name: server-cert
          secret:
            secretName: replication-worker-cluster-secret
      serviceAccountName: backup-restore
  volumeClaimTemplates:
    - metadata:
        name: data
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 250Gi
        storageClassName: gp3-500
        volumeMode: Filesystem
