apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: nextgen-metering-server
  namespace: metering
spec:
  persistentVolumeClaimRetentionPolicy:
    whenDeleted: Delete
    whenScaled: Retain
  podManagementPolicy: OrderedReady
  replicas: 1
  selector:
    matchLabels:
      app: nextgen-metering-server
  template:
    metadata:
      annotations:
        kubectl.kubernetes.io/default-container: nextgen-metering-server
      labels:
        app: nextgen-metering-server
        azure.workload.identity/use: "true"
    spec:
      containers:
        - env:
            - name: AZURE_STORAGE_ACCOUNT_NAME
              value: "TMPL_AZURE_STORAGE_ACCOUNT_NAME"
            - name: AWS_DEFAULT_REGION
              value: TMPL_AWS_REPORTER_REGION
            - name: AWS_REGION
              value: TMPL_AWS_REPORTER_REGION
            - name: AWS_WEB_IDENTITY_TOKEN_FILE
              value: /var/run/secrets/eks.amazonaws.com/serviceaccount/token
            - name: AWS_ROLE_ARN
              value: TMPL_AWS_REPORTER_ROLE_ARN
          image: tidbclouddev.azurecr.io/tidbcloud/nextgen-metering-server:5d8d2090783121912a50382c532a6ae44ff3ce3a
          name: nextgen-metering-server
          ports:
            - containerPort: 8081
            - containerPort: 8083
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop:
                - "ALL"
          imagePullPolicy: Always
          volumeMounts:
            - name: nextgenmetering
              mountPath: /configs/
            - name: data
              mountPath: /data/
            - mountPath: /var/run/secrets/eks.amazonaws.com/serviceaccount/
              name: aws-token
          resources:
            limits:
              cpu: 1000m
              memory: 6Gi
            requests:
              cpu: 500m
              memory: 4Gi
          command: ["/usr/local/bin/entrypoint.sh"]
          args: ["nextgenmetering"]
      volumes:
        - name: nextgenmetering
          configMap:
            name: nextgenmetering-config
        - name: aws-token
          projected:
            defaultMode: 420
            sources:
              - serviceAccountToken:
                  audience: sts.amazonaws.com
                  expirationSeconds: 86400
                  path: token
      serviceAccount: nextgen-metering-server-manager
      serviceAccountName: nextgen-metering-server-manager
      terminationGracePeriodSeconds: 10
  volumeClaimTemplates:
    - apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        creationTimestamp: null
        name: data
      spec:
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: 50Gi
        storageClassName: default
        volumeMode: Filesystem
