apiVersion: apps/v1
kind: StatefulSet
metadata:
  labels:
    app.kubernetes.io/component: dm-worker
  name: dm-worker
spec:
  podManagementPolicy: Parallel
  replicas: 3
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app.kubernetes.io/component: dm-worker
  serviceName: dm-worker-peer
  template:
    metadata:
      annotations:
        prometheus.io/path: /metrics
        prometheus.io/port: "8262"
        prometheus.io/scrape: "true"
      creationTimestamp: null
      labels:
        app.kubernetes.io/component: dm-worker
    spec:
      affinity: {}
      containers:
      - command:
        - /dm-worker
        - --name=$(MY_POD_NAME)
        - --worker-addr=:8262
        - --advertise-addr=$(MY_POD_NAME).$(PEER_SERVICE_NAME).$(NAMESPACE):8262
        - --join=dm-master.$(NAMESPACE):8261
        env:
        - name: MY_POD_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.name
        - name: NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        - name: PEER_SERVICE_NAME
          value: dm-worker-peer
        - name: SERVICE_NAME
          value: dm-worker
        - name: TZ
          value: UTC
        image: pingcap/dm:v2.0.0-beta.1
        imagePullPolicy: IfNotPresent
        livenessProbe:
          failureThreshold: 8
          httpGet:
            path: /status
            port: 8262
            scheme: HTTP
          initialDelaySeconds: 5
          timeoutSeconds: 5
        readinessProbe:
          failureThreshold: 5
          httpGet:
            path: /status
            port: 8262
            scheme: HTTP
          initialDelaySeconds: 5
          timeoutSeconds: 5
        name: worker
        ports:
        - containerPort: 8262
          name: client
          protocol: TCP
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30
  updateStrategy:
    rollingUpdate:
      partition: 3
    type: RollingUpdate
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/component: dm-worker
  name: dm-worker
spec:
  ports:
  - name: client
    port: 8262
    protocol: TCP
    targetPort: 8262
  selector:
    app.kubernetes.io/component: dm-worker
  sessionAffinity: None
  type: ClusterIP
---
apiVersion: v1
kind: Service
metadata:
  labels:
    app.kubernetes.io/component: dm-worker
  name: dm-worker-peer
spec:
  clusterIP: None
  ports:
  - name: peer
    port: 8262
    protocol: TCP
    targetPort: 8262
  selector:
    app.kubernetes.io/component: dm-worker
  publishNotReadyAddresses: true
  sessionAffinity: None
  type: ClusterIP
