apiVersion: v1
kind: Service
metadata:
  labels:
    app: realm
  name: realm-headless
  namespace: ffs-system
spec:
  clusterIP: None
  ports:
    - name: realm
      port: 9096
      protocol: TCP
      targetPort: 9096
  selector:
    ffs.tidbcloud: realm
  type: ClusterIP
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    app: realm
  name: realm
  namespace: ffs-system
spec:
  podManagementPolicy: OrderedReady
  replicas: 1
  selector:
    matchLabels:
      ffs.tidbcloud: realm
  serviceName: realm-headless
  template:
    metadata:
      labels:
        app: realm
        ffs.tidbcloud: realm
      annotations:
        cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
    spec:
      nodeSelector:
        serverless.tidbcloud.com/node: "ffs-zone-realm"
      tolerations:
        - effect: NoSchedule
          key: serverless.tidbcloud.com/node
          operator: Equal
          value: "ffs-zone-realm"
      containers:
        - command:
            - /bin/sh
            - -ec
            - realm-server-linux --log-level=warn --universe=${UNIVERSE} --zone=${ZONE}
              --name=${MY_POD_NAME} --addr=0.0.0.0:9096 --root=/var/lib/realm
          env:
            - name: MY_POD_NAME
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.name
            - name: CLUSTER_NAMESPACE
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.namespace
            - name: SERVICE_NAME
              value: realm-headless
            - name: UNIVERSE
              value: universe-svc.ffs-system:9091
            - name: ZONE
              value: padding-zone
          image: realm
          imagePullPolicy: IfNotPresent
          name: realm
          ports:
            - containerPort: 9096
              name: realm
              protocol: TCP
          volumeMounts:
            - mountPath: /var/lib/realm
              name: datadir
          resources:
            requests:
              cpu: 1500m
              memory: 1200Mi
      securityContext:
        fsGroup: 2000
        runAsGroup: 2000
        runAsUser: 1000
  volumeClaimTemplates:
    - apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: datadir
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 600Gi
        storageClassName: padding-sc
