# Infra Provider

Infra provider consists of a group of controllers that manages the lifecycle of the resources related to TiDB Cloud product components. It's a monorepo to reduce the burden of managing depdendencies. See more discussion about monorepo in [Google's SWE book](https://abseil.io/resources/swe-book/html/ch16.html#monorepos)

* [docs](./docs): The development document
* [api](./api): The CRD API definitions
* [cluster-controller](./cluster-controller): Manage `Cluster` CRs to provision TiDB Clusters in dataplane
* [chaos-provider](./chaos-provider): Manage chaos in dataplane
* [quota-exporter](./quota-exporter): A prometheus exporter to export Cloud quota usages
* [infra-exporter](./infra-exporter): A prometheus exporter for infra API CR metric
* [cluster-prober](./cluster-prober): A set of probers to continously probe cluster
* [clusterproxy](./clusterproxy): A lightweight htt proxy for dataplane services
* [infra-api](./infra-api): Old architecture (Gardener based) provider
* [tidb-audit](./infra-api/cmd/audit): TiDB audit log sidecar component
* [config-manager](config-manager): Home-Made gitops controller webhook
* [pkg](./pkg): Public utils that can be used by all controllers
* [tools](./tools): useful operation cli tools
* [assets](./assets): Some git submodules that contains helm chart, k8s yaml manifests

Continuing reading the [Infra Provider Development Book](https://internal-docs.shared.aws.tidbcloud.com/docs/infra-provider/introduction.html). The book's source is in the [docs](./docs) directory.
