apiVersion: v1
kind: ConfigMap
metadata:
  name: pd-tso-server-config
  namespace: tidb-serverless
data:
  pd-tso-server.toml: |
    lease = 10
    enable-grpc-client-metrics = true
---
apiVersion: v1
kind: Service
metadata:
  name: tso-service
  namespace: tidb-serverless
  annotations:
    pulumi.com/skipAwait: "true"
spec:
  selector:
    app.kubernetes.io/name: pd-tso-server
  type: ClusterIP
  clusterIP: None
  publishNotReadyAddresses: true
  ports:
    - name: client
      port: 2379
      protocol: TCP
      targetPort: 2379
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: pd-tso-server
  namespace: tidb-serverless
spec:
  replicas: 2
  minReadySeconds: 30
  serviceName: tso-service
  selector:
    matchLabels:
      app.kubernetes.io/name: pd-tso-server
  template:
    metadata:
      annotations:
        prometheus.io/path: /metrics
        prometheus.io/port: "2379"
        prometheus.io/scrape: "true"
        cluster-autoscaler.kubernetes.io/safe-to-evict: "false"
      labels:
        app.kubernetes.io/name: pd-tso-server
    spec:
      imagePullSecrets:
        - name: cp9-ecr-pull-385595570414
      affinity:
        podAntiAffinity:
          preferredDuringSchedulingIgnoredDuringExecution:
            - weight: 100
              podAffinityTerm:
                labelSelector:
                  matchExpressions:
                    - key: app.kubernetes.io/name
                      operator: In
                      values:
                        - pd-tso-server
                topologyKey: kubernetes.io/hostname
      containers:
        - name: pd-tso-server
          image: 385595570414.dkr.ecr.us-west-2.amazonaws.com/tidbcloud/serverless/pd:20260507-c7b45b8cf72f9337eb99a981a327218e614a67d3
          imagePullPolicy: IfNotPresent
          command:
            - /pd-server
            - services
            - tso
            - --cacert
            - /server-cert/ca.crt
            - --cert
            - /server-cert/tls.crt
            - --key
            - /server-cert/tls.key
          args:
            - --backend-endpoints=https://serverless-cluster-pd-local.tidb-serverless.svc:2379
            - --listen-addr=https://$(POD_IP):2379
            - --advertise-listen-addr=https://$(POD_NAME).tso-service.tidb-serverless.svc:2379
            - --config=/etc/config/pd-tso-server.toml
          env:
            - name: POD_IP
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: CA_PATH
              value: /server-cert/ca.crt
            - name: CERT_PATH
              value: /server-cert/tls.crt
            - name: KEY_PATH
              value: /server-cert/tls.key
          resources:
            limits:
              memory: 4Gi
              cpu: "4"
            requests:
              memory: 4Gi
              cpu: 500m
          ports:
            - containerPort: 2379
              name: client
          volumeMounts:
            - name: config-volume
              mountPath: /etc/config
            - name: server-cert
              mountPath: /server-cert
      volumes:
        - name: config-volume
          configMap:
            name: pd-tso-server-config
            items:
              - key: pd-tso-server.toml
                path: pd-tso-server.toml
        - name: server-cert
          secret:
            secretName: pd-tso-server-cluster-secret
