apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: tiflash-main
  namespace: tiflash-autoscale
spec:
  persistentVolumeClaimRetentionPolicy:
    whenDeleted: Retain
    whenScaled: Delete
  podManagementPolicy: OrderedReady
  replicas: 0
  revisionHistoryLimit: 3
  selector:
    matchLabels:
      app.kubernetes.io/name: tiflash-manager-main-readnode
  serviceName: tiflash-manager-main-peer
  template:
    metadata:
      annotations:
        prometheus.io/path: /metrics
        prometheus.io/port: "8234"
        prometheus.io/scrape: "true"
        tiflash.proxy.prometheus.io/port: "20292"
      labels:
        app.kubernetes.io/component: tiflash
        app.kubernetes.io/instance: tiflash-manager-main-readnode
        app.kubernetes.io/name: tiflash-manager-main-readnode
        zr-evicter.tidbcloud.com/pvc-evictable: "true"
    spec:
      nodeSelector:
        serverless.tidbcloud.com/node: burstable
      tolerations:
      - effect: NoSchedule
        key: serverless.tidbcloud.com/node
        operator: Equal
        value: burstable
      containers:
      - command:
        - /bin/sh
        - -c
        - /tiflash/tiflash server --config-file /data0/config.toml
        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: CAPACITY
          value: "0"
        - name: TZ
          value: UTC
        imagePullPolicy: IfNotPresent
        name: tiflash
        ports:
        - containerPort: 3930
          name: tiflash
          protocol: TCP
        - containerPort: 8234
          name: metrics
          protocol: TCP
        resources:
          limits:
            cpu: "8"
            memory: 8Gi
          requests:
              cpu: "2"
              memory: 4Gi
        securityContext:
          privileged: false
        volumeMounts:
        - mountPath: /data0
          name: data0
      - command:
        - sh
        - -c
        - touch /data0/logs/server.log; tail -n0 -F /data0/logs/server.log;
        image: gcr.io/pingcap-public/dbaas/busybox:1.31.1
        imagePullPolicy: IfNotPresent
        name: serverlog
        volumeMounts:
        - mountPath: /data0
          name: data0
      - command:
        - sh
        - -c
        - touch /data0/logs/error.log; tail -n0 -F /data0/logs/error.log;
        image: gcr.io/pingcap-public/dbaas/busybox:1.31.1
        imagePullPolicy: IfNotPresent
        name: errorlog
        volumeMounts:
        - mountPath: /data0
          name: data0
      dnsPolicy: ClusterFirst
      initContainers:
      - command:
        - sh
        - -c
        - set -ex;ordinal=`echo ${POD_NAME} | awk -F- '{print $NF}'`;sed s/POD_NUM/${ordinal}/g 
          /etc/tiflash/config_templ.toml > /data0/config.toml;sed s/POD_NUM/${ordinal}/g
          /etc/tiflash/proxy_templ.toml > /data0/proxy.toml
        env:
        - name: POD_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.name
        image: gcr.io/pingcap-public/dbaas/busybox:1.31.1
        imagePullPolicy: IfNotPresent
        name: init
        volumeMounts:
        - mountPath: /data0
          name: data0
        - mountPath: /etc/tiflash
          name: config
          readOnly: true
      restartPolicy: Always
      terminationGracePeriodSeconds: 30
      serviceAccount: serverless-controller
      serviceAccountName: serverless-controller
      volumes:
      - configMap:
          name: tiflash-manager-main-config
        name: config
  volumeClaimTemplates:
    - apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: data0
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 1Gi
        storageClassName: ebs-sc
        volumeMode: Filesystem
