apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: pd-router-server
spec:
  serviceName: router-service
  selector:
    matchLabels:
      app.kubernetes.io/name: pd-router-server
  template:
    metadata:
      annotations:
        prometheus.io/path: /metrics
        prometheus.io/port: "2379"
        prometheus.io/scrape: "true"
      labels:
        app.kubernetes.io/name: pd-router-server
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchExpressions:
                  - key: app.kubernetes.io/name
                    operator: In
                    values:
                      - pd-router-server
              topologyKey: kubernetes.io/hostname
      containers:
        - name: pd-router-server
          imagePullPolicy: IfNotPresent
          command:
            - /pd-server
            - services
            - router
          args:
            - --backend-endpoints=https://serverless-cluster-pd.$(POD_NAMESPACE).svc:2379
            - --listen-addr=https://$(POD_IP):2379
            - --advertise-listen-addr=https://$(POD_NAME).router-service.$(POD_NAMESPACE).svc:2379
            - --config=/etc/config/pd-router.toml
            - --name=$(POD_NAME)
          env:
            - name: POD_IP
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: POD_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
          resources:
            limits:
              memory: "4Gi"
              cpu: "7"
            requests:
              memory: "2Gi"
              cpu: "2"
          ports:
            - containerPort: 2379
          volumeMounts:
            - name: config-volume
              mountPath: "/etc/config"
      volumes:
        - name: config-volume
          configMap:
            name: pd-router-config
            items:
              - key: pd-router.toml
                path: pd-router.toml
