apiVersion: apps/v1
kind: Deployment
metadata:
  name: tidb-mgmt-service-deploy
  annotations:
    sidecar.jaegertracing.io/inject: jaeger
spec:
  replicas: 3
  selector:
    matchLabels:
      app: tidb-mgmt-service
  template:
    metadata:
      labels:
        app: tidb-mgmt-service
      annotations:
        prometheus.io/scrape: "true"
        prometheus.io/port: "8080"
        prometheus.io/path: /metrics
    spec:
      affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchLabels:
                  app: tidb-mgmt-service
              topologyKey: kubernetes.io/hostname
      topologySpreadConstraints:
        - maxSkew: 1
          topologyKey: topology.kubernetes.io/zone
          whenUnsatisfiable: ScheduleAnyway
          labelSelector:
            matchLabels:
              app: tidb-mgmt-service
      containers:
        - name: tidb-mgmt-service
          image: 385595570414.dkr.ecr.us-west-2.amazonaws.com/tidbcloud/tidb-management-service:latest
          command: ["/command/tidb-mgmt-service/tidb-mgmt-service"]
          args: ["-config=/etc/tidb-mgmt-service/config.yaml"]
          ports:
            - name: grpc
              protocol: TCP
              containerPort: 10001
            - name: http
              protocol: TCP
              containerPort: 8080
          readinessProbe:
            failureThreshold: 10
            initialDelaySeconds: 5
            periodSeconds: 5
            successThreshold: 1
            tcpSocket:
              port: 10001
            timeoutSeconds: 1
          resources:
            limits:
              cpu: 500m
              memory: 512Mi
            requests:
              cpu: 80m
              memory: 192Mi
          volumeMounts:
            - name: config
              mountPath: "/etc/tidb-mgmt-service"
              readOnly: true
            - name: pprof-dumps
              mountPath: /pprof-dumps
          env:
            - name: TIINF_POD_NAME
              value: management-service-grpchttp-service
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: POD_IP
              valueFrom:
                fieldRef:
                  fieldPath: status.podIP
        - args:
            - --agent.tags=cluster=undefined,container.name=tidb-mgmt-service,deployment.name=tidb-mgmt-service,host.ip=${HOST_IP:},pod.name=${POD_NAME:},pod.namespace=tidb-management-service
            - --reporter.grpc.host-port=dns:///jaeger-collector-headless.jaeger.svc:14250
          env:
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: metadata.name
            - name: HOST_IP
              valueFrom:
                fieldRef:
                  apiVersion: v1
                  fieldPath: status.hostIP
          image: gcr.io/pingcap-public/pingcap/jaegertracing/jaeger-agent:1.22
          imagePullPolicy: IfNotPresent
          name: jaeger-agent
          ports:
            - containerPort: 5775
              name: zk-compact-trft
              protocol: UDP
            - containerPort: 5778
              name: config-rest
              protocol: TCP
            - containerPort: 6831
              name: jg-compact-trft
              protocol: UDP
            - containerPort: 6832
              name: jg-binary-trft
              protocol: UDP
            - containerPort: 14271
              name: admin-http
              protocol: TCP
      volumes:
        - name: config
          configMap:
            name: tidb-mgmt-service
        - name: pprof-dumps
          emptyDir: {}
      serviceAccountName: tidb-management-service
