apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: load-data-worker
  namespace: tidb-serverless
spec:
  replicas: 0
  selector:
    matchLabels:
      app.kubernetes.io/name: load-data-worker
  template:
    metadata:
      annotations:
        cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
        prometheus.io/path: /metrics
        prometheus.io/port: "19500"
        prometheus.io/scrape: "true"
      labels:
        app: load-data-worker
        app.kubernetes.io/name: load-data-worker
        app.kubernetes.io/component: load-data-worker
        zr-evicter.tidbcloud.com/pvc-evictable: "false"
    spec:
      tolerations:
        - key: "serverless.tidbcloud.com/node"
          operator: "Equal"
          value: "general"
          effect: "NoSchedule"
      nodeSelector:
        serverless.tidbcloud.com/node: general
      containers:
        - command:
            - /tikv-worker
            - --config
            - /etc/config/load-data-worker.toml
            - --addr
            - 0.0.0.0:19500
            - --pd-endpoints
            - serverless-cluster-pd.tidb-serverless.svc:2379
            - --data-dir
            - /data0
          args: []
          env:
            - name: DFS_PREFIX
              value: S3_PREFIX
            - name: DFS_S3_BUCKET
              value: S3_BUCKET
            - name: DFS_S3_REGION
              value: S3_REGION
            - name: CSE_MASTER_KEY_ID
              value: CSE_MASTER_KEY_ID
            - name: CSE_MASTER_KEY_CIPHER_TEXT
              value: CSE_MASTER_KEY_CIPHER_TEXT
            - name: CSE_MASTER_KEY_VENDOR
              value: CSE_MASTER_KEY_VENDOR
            - name: CONTAINER_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: MALLOC_CONF
              value: prof:true
          imagePullPolicy: IfNotPresent
          name: load-data-worker
          resources:
            limits:
              cpu: "4"
              memory: 16Gi
            requests:
              cpu: 500m
              memory: 2Gi
          volumeMounts:
            - name: data0
              mountPath: "/data0"
            - name: config-volume
              mountPath: "/etc/config"
          ports:
            - containerPort: 19500
      volumes:
        - name: config-volume
          configMap:
            name: load-data-worker-config
            items:
              - key: load-data-worker.toml
                path: load-data-worker.toml
      serviceAccountName: serverless-controller
  volumeClaimTemplates:
    - apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: data0
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 10Gi
        storageClassName: gp3-500
        volumeMode: Filesystem
