apiVersion: api/v1
kind: Plan
name: cdc-only-upgrade-sync
schedule: "@weekly"
tags: ["cdc"]
testbed:
  generateName: cdc-testbed-
  reclaimPolicy:
    gcStrategy:
      onFailure:
        artifact:
          monitor: true
          log: true
        reserveEnv:
          durationOnWorkingHour: 3h
        notification:
          feishu: https://open.feishu.cn/open-apis/bot/v2/hook/4f6c6406-c963-4d52-8641-cca17aa734e9
  items:
  - name: upstream
    type: TIDB_CLUSTER
    spec:
      version: v4.0.14
      imagePullPolicy: Always
      pd:
        replicas: 3
        baseImage: registry-mirror.pingcap.net/pingcap/pd
        requests:
          cpu: 1000m
          memory: 4Gi
        limits:
          cpu: 1000m
          memory: 4Gi
      tikv:
        storageClassName: fast-disks
        replicas: 3
        baseImage: registry-mirror.pingcap.net/pingcap/tikv
        requests:
          cpu: 8000m
          memory: 16Gi
        limits:
          cpu: 8000m
          memory: 16Gi
      tidb:
        replicas: 1
        baseImage: registry-mirror.pingcap.net/pingcap/tidb
        requests:
          cpu: 8000m
          memory: 16Gi
        limits:
          cpu: 8000m
          memory: 16Gi
      ticdc:
        replicas: 3
        baseImage: registry-mirror.pingcap.net/pingcap/ticdc
        requests:
          cpu: 8000m
          memory: 16Gi
        limits:
          cpu: 8000m
          memory: 16Gi
  - name: downstream1
    type: MYSQL_NODE
    spec:
      storageClassName: fast-disks
      image: "{{meta.parameters.mysql_image}}"
      port: 3306
      env:
        MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
        MYSQL_ROOT_HOST: "%"
      resources:
        requests:
          memory: 4Gi
          cpu: 4000m
          storage: 100Gi
      volumeMount:
        mountPath: "/var/lib/mysql"         # mountPath of "storage" request
  - name: downstream2
    type: KAFKA_CLUSTER
    spec:
      zkspec:
        replicas: 1
        image: "k8s.gcr.io/kubernetes-zookeeper:1.0-3.4.10"
        storageClassName: fast-disks
        resources:
          requests:
            memory: "2Gi"
            cpu: "1000m"
            storage: "20Gi"
      kafkaspec:
        replicas: 3
        imagePullPolicy: IfNotPresent
        image: "registry-mirror.pingcap.net/wurstmeister/kafka:2.13-2.7.1"
        storageClassName: fast-disks
        command:
        - "sh"
        - "-c"
        - "kafka-server-start.sh /opt/kafka/config/server.properties --override broker.id=${HOSTNAME##*-}\
          \ --override listeners=PLAINTEXT://:9092 --override zookeeper.connect=$ZK_CONNECT\
          \ --override log.dir=/var/lib/kafka "
        env:
          KAFKA_HEAP_OPTS: "-Xmx512M -Xms512M -XX:ParallelGCThreads=1"
          KAFKA_OPTS: "-Dlogging.level=INFO"
        resources:
          requests:
            memory: 2Gi
            cpu: 1000m
            storage: 50Gi

  - name: workload
    type: WORKLOAD_NODE
    spec:
      container:
        name: go-tpc
        image: "{{meta.parameters.gotpc_image}}"
        command:
        - tail
        - "-f"
        - /dev/null
        resources:
          requests:
            memory: 4Gi
            cpu: 4000m
        volumeMount:
          mountPath: "/var/lib/mysql"
steps:
- name: cdc-only-upgrade-sync
  caseName: cdc_only_upgrade_sync
  arguments:
  - name: upstream
    value: "{{testbed.upstream}}"
  - name: downstream1
    value: "{{testbed.downstream1}}"
  - name: downstream2
    value: "{{testbed.downstream2}}"
  - name: workload
    value: "{{testbed.workload}}"
  - name: cdc_version
    value: "{{testbed.cdc_version}}"
failFast: false
