apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - ../../../../base/tidb-serverless
patches:
  - target:
      group: storage.k8s.io
      version: v1
      kind: StorageClass
      name: (ebs-sc|gp3-500)
    patch: |-
      - op: add
        path: /parameters/tagSpecification_1
        value: cp9-owner=__CP9_OWNER_TAG__
      - op: add
        path: /parameters/tagSpecification_2
        value: cp9-session=__CP9_SESSION_TAG__
      - op: add
        path: /parameters/tagSpecification_3
        value: cp9-managed=true
      - op: add
        path: /parameters/tagSpecification_4
        value: cp9-ttl=__CP9_TTL_TAG__
  - target:
      group: pingcap.com
      version: v1alpha1
      kind: TidbCluster
      name: serverless-cluster
    patch: |-
      - op: add
        path: /spec/pd/nodeSelector
        value:
          cp9.tidbcloud.com/starter-role: pd
      - op: add
        path: /spec/pd/tolerations
        value:
          - key: cp9.tidbcloud.com/starter-role
            operator: Equal
            value: pd
            effect: NoSchedule
      - op: add
        path: /spec/tidb/nodeSelector
        value:
          cp9.tidbcloud.com/starter-role: tidb-serving
      - op: add
        path: /spec/tidb/tolerations
        value:
          - key: cp9.tidbcloud.com/starter-role
            operator: Equal
            value: tidb-serving
            effect: NoSchedule
      - op: add
        path: /spec/tikv/nodeSelector/cp9.tidbcloud.com~1starter-role
        value: tikv
      - op: add
        path: /spec/tikv/tolerations
        value:
          - key: cp9.tidbcloud.com/starter-role
            operator: Equal
            value: tikv
            effect: NoSchedule
  - target:
      group: pingcap.com
      version: v1alpha1
      kind: TidbCluster
      name: serverless-cluster(-standby|-witness)?
    patch: |-
      - op: add
        path: /spec/pd/affinity
        value:
          podAntiAffinity:
            requiredDuringSchedulingIgnoredDuringExecution:
              - labelSelector:
                  matchLabels:
                    app.kubernetes.io/component: pd
                topologyKey: kubernetes.io/hostname
  - target:
      group: apps
      version: v1
      kind: StatefulSet
      name: pd-(tso|resource-manager)-server|pd-sche-server
    patch: |-
      - op: add
        path: /spec/template/spec/nodeSelector
        value:
          cp9.tidbcloud.com/starter-role: regional-control-plane
      - op: add
        path: /spec/template/spec/tolerations
        value:
          - key: cp9.tidbcloud.com/starter-role
            operator: Equal
            value: regional-control-plane
            effect: NoSchedule
  - target:
      group: apps
      version: v1
      kind: StatefulSet
      name: keyspace-etcd-group-[0-2]
    patch: |-
      - op: add
        path: /spec/template/spec/nodeSelector
        value:
          cp9.tidbcloud.com/starter-role: keyspace-etcd
      - op: add
        path: /spec/template/spec/tolerations
        value:
          - key: cp9.tidbcloud.com/starter-role
            operator: Equal
            value: keyspace-etcd
            effect: NoSchedule
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: tikv-worker
    patch: |-
      - op: remove
        path: /spec/template/spec/nodeSelector/serverless.tidbcloud.com~1kubelet-version
      - op: replace
        path: /spec/template/spec/nodeSelector/serverless.tidbcloud.com~1node
        value: tikv
      - op: add
        path: /spec/template/spec/nodeSelector/cp9.tidbcloud.com~1starter-role
        value: tikv
      - op: add
        path: /spec/template/spec/tolerations
        value:
          - key: cp9.tidbcloud.com/starter-role
            operator: Equal
            value: tikv
            effect: NoSchedule
  - target:
      group: apps
      version: v1
      kind: StatefulSet
      name: tikv-api
    patch: |-
      - op: remove
        path: /spec/template/spec/nodeSelector/serverless.tidbcloud.com~1kubelet-version
      - op: replace
        path: /spec/template/spec/nodeSelector/serverless.tidbcloud.com~1node
        value: tikv
      - op: add
        path: /spec/template/spec/nodeSelector/cp9.tidbcloud.com~1starter-role
        value: tikv
      - op: add
        path: /spec/template/spec/tolerations
        value:
          - key: cp9.tidbcloud.com/starter-role
            operator: Equal
            value: tikv
            effect: NoSchedule
  - target:
      group: apps
      version: v1
      kind: StatefulSet
      name: cop-worker-sts
    patch: |-
      - op: remove
        path: /spec/template/spec/nodeSelector/serverless.tidbcloud.com~1kubelet-version
      - op: replace
        path: /spec/template/spec/nodeSelector/serverless.tidbcloud.com~1node
        value: tikv
      - op: add
        path: /spec/template/spec/nodeSelector/cp9.tidbcloud.com~1starter-role
        value: tikv
      - op: add
        path: /spec/template/spec/tolerations
        value:
          - key: cp9.tidbcloud.com/starter-role
            operator: Equal
            value: tikv
            effect: NoSchedule
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: tidb-operator-controller-manager
    patch: |-
      - op: add
        path: /spec/template/spec/nodeSelector
        value:
          cp9.tidbcloud.com/starter-role: regional-control-plane
      - op: add
        path: /spec/template/spec/tolerations
        value:
          - key: cp9.tidbcloud.com/starter-role
            operator: Equal
            value: regional-control-plane
            effect: NoSchedule
