apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: schema-manager
  namespace: tidb-serverless
spec:
  replicas: 0
  selector:
    matchLabels:
      app.kubernetes.io/name: schema-manager
  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: schema-manager
        app.kubernetes.io/name: schema-manager
        app.kubernetes.io/component: schema-manager
        app.kubernetes.io/instance: serverless-cluster
        zr-evicter.tidbcloud.com/pvc-evictable: "true"
    spec:
      containers:
      - command:
        - /tikv-worker
        - --config
        - /etc/config/schema-manager.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
        livenessProbe:
          failureThreshold: 5
          httpGet:
            path: /healthz
            port: 19500
            scheme: HTTP
          initialDelaySeconds: 1
          periodSeconds: 60
          successThreshold: 1
          timeoutSeconds: 2
        name: schema-manager
        resources:
          limits:
            cpu: "2"
            memory: 4Gi
          requests:
            cpu: 500m
            memory: 1Gi
        volumeMounts:
        - name: data0
          mountPath: "/data0"
        - name: config-volume
          mountPath: "/etc/config"
        ports:
        - containerPort: 19500
      volumes:
      - name: config-volume
        configMap:
          name: schema-manager-config
          items:
          - key: schema-manager.toml
            path: schema-manager.toml
      serviceAccountName: serverless-controller
  volumeClaimTemplates:
    - apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: data0
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 20Gi
        storageClassName: gp3-500
        volumeMode: Filesystem
