{
  "apiVersion": "apiextensions.k8s.io/v1",
  "kind": "CustomResourceDefinition",
  "metadata": {
    "name": "clusterconfigs.cloud.pingcap.com",
    "labels": {}
  },
  "spec": {
    "conversion": {
      "strategy": "None"
    },
    "group": "cloud.pingcap.com",
    "names": {
      "kind": "ClusterConfig",
      "listKind": "ClusterConfigList",
      "plural": "clusterconfigs",
      "singular": "clusterconfig"
    },
    "scope": "Cluster",
    "versions": [
      {
        "name": "v1",
        "schema": {
          "openAPIV3Schema": {
            "description": "ClusterConfig is the Schema for the clusterconfigs API",
            "properties": {
              "apiVersion": {
                "description": "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
                "type": "string"
              },
              "kind": {
                "description": "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
                "type": "string"
              },
              "metadata": {
                "type": "object"
              },
              "spec": {
                "description": "ClusterConfigSpec defines the desired state of ClusterConfig",
                "properties": {
                  "backup": {
                    "description": "Backup contains all configurations about backup job",
                    "properties": {
                      "baseImage": {
                        "description": "BaseImage of the component",
                        "type": "string"
                      },
                      "config": {
                        "description": "Config is the default configuration of component",
                        "type": "string"
                      },
                      "tag": {
                        "description": "Tag is component image tag, if not specipy, will use global version value.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "configMeta": {
                    "description": "ConfigMeta contains metadata information of configurations",
                    "properties": {
                      "configVersion": {
                        "description": "ConfigVersion is configuration version, version will auto-increment to\naviod old version overrides new version configuration",
                        "format": "int64",
                        "type": "integer"
                      },
                      "gitCommitID": {
                        "description": "GitCommitID is git commit ID of cluster configuration",
                        "type": "string"
                      }
                    },
                    "required": [
                      "configVersion",
                      "gitCommitID"
                    ],
                    "type": "object"
                  },
                  "lightning": {
                    "description": "Lightning contains all configurations about a lightning job",
                    "properties": {
                      "baseImage": {
                        "description": "BaseImage of the component",
                        "type": "string"
                      },
                      "config": {
                        "description": "Config is the default configuration of component",
                        "type": "string"
                      },
                      "tag": {
                        "description": "Tag is component image tag, if not specipy, will use global version value.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "pd": {
                    "description": "PD contains all default and overlay configurations of pd server",
                    "properties": {
                      "baseImage": {
                        "description": "BaseImage of the component",
                        "type": "string"
                      },
                      "config": {
                        "description": "Config is the default configuration of component",
                        "type": "string"
                      },
                      "tag": {
                        "description": "Tag is component image tag, if not specipy, will use global version value.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "priority": {
                    "description": "Priority used for overlay in server side\nHigher priority config will overwrite lower priority config",
                    "type": "integer"
                  },
                  "restore": {
                    "description": "Restore contains all configurations about restore job",
                    "properties": {
                      "baseImage": {
                        "description": "BaseImage of the component",
                        "type": "string"
                      },
                      "config": {
                        "description": "Config is the default configuration of component",
                        "type": "string"
                      },
                      "tag": {
                        "description": "Tag is component image tag, if not specipy, will use global version value.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "selector": {
                    "description": "Label selector for clusters, it wll match the cluster object's labels.",
                    "properties": {
                      "matchExpressions": {
                        "description": "matchExpressions is a list of label selector requirements. The requirements are ANDed.",
                        "items": {
                          "description": "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values.",
                          "properties": {
                            "key": {
                              "description": "key is the label key that the selector applies to.",
                              "type": "string"
                            },
                            "operator": {
                              "description": "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist.",
                              "type": "string"
                            },
                            "values": {
                              "description": "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch.",
                              "items": {
                                "type": "string"
                              },
                              "type": "array"
                            }
                          },
                          "required": [
                            "key",
                            "operator"
                          ],
                          "type": "object"
                        },
                        "type": "array"
                      },
                      "matchLabels": {
                        "additionalProperties": {
                          "type": "string"
                        },
                        "description": "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed.",
                        "type": "object"
                      }
                    },
                    "type": "object",
                    "x-kubernetes-map-type": "atomic"
                  },
                  "ticdc": {
                    "description": "TiCDC contains all configurations about a ticdc cluster",
                    "properties": {
                      "baseImage": {
                        "description": "BaseImage of the component",
                        "type": "string"
                      },
                      "config": {
                        "description": "Config is the default configuration of component",
                        "type": "string"
                      },
                      "tag": {
                        "description": "Tag is component image tag, if not specipy, will use global version value.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tidb": {
                    "description": "TiDB contains all default and overlay configurations of tidb server",
                    "properties": {
                      "baseImage": {
                        "description": "BaseImage of the component",
                        "type": "string"
                      },
                      "config": {
                        "description": "Config is the default configuration of component",
                        "type": "string"
                      },
                      "tag": {
                        "description": "Tag is component image tag, if not specipy, will use global version value.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tiflash": {
                    "description": "TiFlash contains all default and overlay configurations of tiflash server",
                    "properties": {
                      "baseImage": {
                        "description": "BaseImage of the component",
                        "type": "string"
                      },
                      "config": {
                        "description": "Config is the default configuration of component",
                        "type": "string"
                      },
                      "tag": {
                        "description": "Tag is component image tag, if not specipy, will use global version value.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tiflashLearner": {
                    "description": "TiFlashLearner contains all default and overlay configurations of tiflash learner",
                    "properties": {
                      "baseImage": {
                        "description": "BaseImage of the component",
                        "type": "string"
                      },
                      "config": {
                        "description": "Config is the default configuration of component",
                        "type": "string"
                      },
                      "tag": {
                        "description": "Tag is component image tag, if not specipy, will use global version value.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tiflowExecutor": {
                    "description": "TiflowExecutor contains all configurations about the tiflow exector",
                    "properties": {
                      "baseImage": {
                        "description": "BaseImage of the component",
                        "type": "string"
                      },
                      "config": {
                        "description": "Config is the default configuration of component",
                        "type": "string"
                      },
                      "tag": {
                        "description": "Tag is component image tag, if not specipy, will use global version value.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tiflowMaster": {
                    "description": "TiflowMaster contains all configurations about the tiflow master",
                    "properties": {
                      "baseImage": {
                        "description": "BaseImage of the component",
                        "type": "string"
                      },
                      "config": {
                        "description": "Config is the default configuration of component",
                        "type": "string"
                      },
                      "tag": {
                        "description": "Tag is component image tag, if not specipy, will use global version value.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tikv": {
                    "description": "TiKV contains all default and overlay configurations of tikv server",
                    "properties": {
                      "baseImage": {
                        "description": "BaseImage of the component",
                        "type": "string"
                      },
                      "config": {
                        "description": "Config is the default configuration of component",
                        "type": "string"
                      },
                      "tag": {
                        "description": "Tag is component image tag, if not specipy, will use global version value.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "tiproxy": {
                    "description": "TiProxy contains all default and overlay configurations of tiproxy server",
                    "properties": {
                      "baseImage": {
                        "description": "BaseImage of the component",
                        "type": "string"
                      },
                      "config": {
                        "description": "Config is the default configuration of component",
                        "type": "string"
                      },
                      "tag": {
                        "description": "Tag is component image tag, if not specipy, will use global version value.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "updatePolicy": {
                    "type": "string"
                  },
                  "version": {
                    "description": "TiDB cluster version",
                    "type": "string"
                  }
                },
                "required": [
                  "selector"
                ],
                "type": "object"
              },
              "status": {
                "description": "ClusterConfigStatus defines the observed state of ClusterConfig",
                "type": "object"
              }
            },
            "type": "object"
          }
        },
        "served": true,
        "storage": true
      }
    ]
  }
}
