VTAdmin is made up of two components:
vtadmin-web, the browser interface
vtadmin-api, the HTTP(S) and gRPC API
vtadmin-web front-end queries its data from
vtadmin-api. In turn,
vtadmin-api issues queries against the vtgates and vtctlds across one or more Vitess clusters. The clusters.yaml config file defines this mapping from VTAdmin to cluster(s).
Single-cluster deployments are the simplest and most common configuration. The local example in the "Get Started" documentation is a good example of a single-cluster deployment.
Large Vitess deployments can be "multi-cluster". These environments have two or more Vitess clusters, each with its own Topology Service, that are isolated from one another. VTAdmin supports these, too. An example of a multi-cluster Vitess deployment is an environment that has one Vitess cluster per geographic region:
The Life Cycle of a VTAdmin Request #
To understand how data moves through VTAdmin, let's look at life cycle of a typical request: fetching a list of all of the schemas. We'll use the single-cluster "Get Started" environment as an example:
When a user loads the
/schemas view in the browser,
vtadmin-web makes an HTTP
GET /api/schema/local/commerce/corder request to
vtadmin-api then issues gRPC requests to the vtgates and vtctlds in the cluster to construct the list of schemas. Here's what that looks like in detail:
GET /api/schema/local/commerce/corderrequest against
vtadmin-api's HTTP endpoint.
vtadmin-apidiscovers a vtgate in the cluster and issues a
SHOW vitess_tabletsquery on that vtgate to get a list of all tablets in the cluster.
vtadmin-apidiscovers a vtctld in the cluster and makes a
GetKeyspacesgRPC request to get a list of all keyspaces in the cluster.
- For each of these keyspaces,
vtadmin-apichooses a random, serving tablet. The keyspace and tablet alias are used to make a
GetSchemagRPC request to the vtctld to get the full schema, with all of the tables, on that tablet in the keyspace.
- Since the "Get Started" example has two keyspaces,
vtadmin-apiissues separate requests in parallel.
- Finally, the
GetSchemagRPC response is annotated with additional metadata (like cluster information), and returned to