vtadmin

package
v0.15.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 29, 2022 License: Apache-2.0 Imports: 36 Imported by: 0

README

VTAdmin

VTAdmin is an experimental replacement for the vtctld2 web UI, that also allows users to manage multiple Vitess clusters from a single API and web UI.

For a more detailed writeup, refer to the original RFC.

Setup

The simplest VTAdmin deployment involves a single Vitess cluster. You can look at the local example for a minimal invocation of the vtadmin-api and vtadmin-web binaries.

Important vtadmin-api flags

Please refer to vtadmin --help for the full listing, but a few flags warrant explanation here.

  • --http-origin — this flag sets up the allowed CORS origins that vtadmin-api will serve HTTP requests for, and is required if you are (very likely) running vtadmin-api and vtadmin-web on different domains.

  • --cluster, --cluster-defaults — A DSN-style flag that allows cluster configuration options to be specified on the command-line rather than needing a config file. When both command-line cluster configs and a config file are provided, any options for a given cluster on the command-line take precedence over options for that cluster in the config file.

    For a description of the cluster configuration options, see clusters.example.yaml.

  • --http-tablet-url-tmpl — Go template string to generate a reachable http(s) address for a tablet, used to make passthrough requests to /debug/vars endpoints.

Development

Building vtadmin-api

If you are making changes to .proto files, make sure you run

source dev.env
make proto grpcvtctldclient vtadmin_web_proto_types

Then, you can run make build, and run ./bin/vtadmin with any flags you need (see the local example, and also the section on flags above).

Building and running vtadmin-web

Make sure you are using node version 16.x.

Then, you may run:

cd ./web/vtadmin
npm install

# This should be the address you passed to `./vtadmin --addr`. For example,
# "http://127.0.0.1:14200".
export REACT_APP_VTADMIN_API_ADDRESS="${vtadmin_api_addr}"
export REACT_APP_ENABLE_EXPERIMENTAL_TABLET_DEBUG_VARS="true"
npm run start

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type API

type API struct {
	vtadminpb.UnimplementedVTAdminServer
	// contains filtered or unexported fields
}

API is the main entrypoint for the vtadmin server. It implements vtadminpb.VTAdminServer.

func NewAPI

func NewAPI(clusters []*cluster.Cluster, opts Options) *API

NewAPI returns a new API, configured to service the given set of clusters, and configured with the given options.

func (*API) Close added in v0.13.0

func (api *API) Close() error

Close closes all the clusters in an API concurrently. Its primary function is to gracefully shutdown cache background goroutines to avoid data races in tests, but needs to be exported to be called by those tests. It does not have any production use case.

func (*API) CreateKeyspace added in v0.12.0

CreateKeyspace is part of the vtadminpb.VTAdminServer interface.

func (*API) CreateShard added in v0.13.0

CreateShard is part of the vtadminpb.VTAdminServer interface.

func (*API) DeleteKeyspace added in v0.12.0

DeleteKeyspace is part of the vtadminpb.VTAdminServer interface.

func (*API) DeleteShards added in v0.13.0

DeleteShards is part of the vtadminpb.VTAdminServer interface.

func (*API) DeleteTablet added in v0.13.0

DeleteTablet is part of the vtadminpb.VTAdminServer interface.

func (*API) EjectDynamicCluster added in v0.13.0

func (api *API) EjectDynamicCluster(key string, value any)

func (*API) EmergencyFailoverShard added in v0.14.0

EmergencyFailoverShard is part of the vtadminpb.VTAdminServer interface.

func (*API) FindSchema added in v0.10.0

func (api *API) FindSchema(ctx context.Context, req *vtadminpb.FindSchemaRequest) (*vtadminpb.Schema, error)

FindSchema is part of the vtadminpb.VTAdminServer interface.

func (*API) GetBackups added in v0.11.0

GetBackups is part of the vtadminpb.VTAdminServer interface.

func (*API) GetCellInfos added in v0.14.0

GetCellInfos is part of the vtadminpb.VTAdminServer interface.

func (*API) GetCellsAliases added in v0.14.0

GetCellsAliases is part of the vtadminpb.VTAdminServer interface.

func (*API) GetClusters added in v0.10.0

GetClusters is part of the vtadminpb.VTAdminServer interface.

func (*API) GetFullStatus added in v0.15.0

GetFullStatus is part of the vtadminpb.VTAdminServer interface.

func (*API) GetGates

GetGates is part of the vtadminpb.VTAdminServer interface.

func (*API) GetKeyspace added in v0.11.0

func (api *API) GetKeyspace(ctx context.Context, req *vtadminpb.GetKeyspaceRequest) (*vtadminpb.Keyspace, error)

GetKeyspace is part of the vtadminpb.VTAdminServer interface.

func (*API) GetKeyspaces added in v0.10.0

GetKeyspaces is part of the vtadminpb.VTAdminServer interface.

func (*API) GetSchema added in v0.10.0

func (api *API) GetSchema(ctx context.Context, req *vtadminpb.GetSchemaRequest) (*vtadminpb.Schema, error)

GetSchema is part of the vtadminpb.VTAdminServer interface.

func (*API) GetSchemas added in v0.10.0

GetSchemas is part of the vtadminpb.VTAdminServer interface.

func (*API) GetShardReplicationPositions added in v0.12.0

GetShardReplicationPositions is part of the vtadminpb.VTAdminServer interface.

func (*API) GetSrvVSchema added in v0.11.0

func (api *API) GetSrvVSchema(ctx context.Context, req *vtadminpb.GetSrvVSchemaRequest) (*vtadminpb.SrvVSchema, error)

GetSrvVSchema is part of the vtadminpb.VTAdminServer interface.

func (*API) GetSrvVSchemas added in v0.11.0

GetSrvVSchemas is part of the vtadminpb.VTAdminServer interface.

func (*API) GetTablet

func (api *API) GetTablet(ctx context.Context, req *vtadminpb.GetTabletRequest) (*vtadminpb.Tablet, error)

GetTablet is part of the vtadminpb.VTAdminServer interface.

func (*API) GetTablets

GetTablets is part of the vtadminpb.VTAdminServer interface.

func (*API) GetTopologyPath added in v0.15.0

GetTopologyPath is part of the vtadminpb.VTAdminServer interface.

func (*API) GetVSchema added in v0.10.0

func (api *API) GetVSchema(ctx context.Context, req *vtadminpb.GetVSchemaRequest) (*vtadminpb.VSchema, error)

GetVSchema is part of the vtadminpb.VTAdminServer interface.

func (*API) GetVSchemas added in v0.10.0

GetVSchemas is part of the vtadminpb.VTAdminServer interface.

func (*API) GetVtctlds added in v0.12.0

GetVtctlds is part of the vtadminpb.VTAdminServer interface.

func (*API) GetWorkflow added in v0.10.0

func (api *API) GetWorkflow(ctx context.Context, req *vtadminpb.GetWorkflowRequest) (*vtadminpb.Workflow, error)

GetWorkflow is part of the vtadminpb.VTAdminServer interface.

func (*API) GetWorkflows added in v0.10.0

GetWorkflows is part of the vtadminpb.VTAdminServer interface.

func (*API) Handler added in v0.13.0

func (api *API) Handler() http.Handler

Handler handles all routes under "/api" (see above)

func (*API) ListenAndServe

func (api *API) ListenAndServe() error

ListenAndServe starts serving this API on the configured Addr (see grpcserver.Options) until shutdown or irrecoverable error occurs.

func (*API) PingTablet added in v0.13.0

PingTablet is part of the vtadminpb.VTAdminServer interface.

func (*API) PlannedFailoverShard added in v0.14.0

PlannedFailoverShard is part of the vtadminpb.VTAdminServer interface.

func (*API) RebuildKeyspaceGraph added in v0.15.0

RebuildKeyspaceGraph is a part of the vtadminpb.VTAdminServer interface.

func (*API) RefreshState added in v0.13.0

RefreshState is part of the vtadminpb.VTAdminServer interface.

func (*API) RefreshTabletReplicationSource added in v0.14.0

RefreshTabletReplicationSource is part of the vtadminpb.VTAdminServer interface.

func (*API) ReloadSchemaShard added in v0.15.0

ReloadSchemaShard is part of the vtadminpb.VTAdminServer interface.

func (*API) ReloadSchemas added in v0.14.0

ReloadSchemas is part of the vtadminpb.VTAdminServer interface.

func (*API) RemoveKeyspaceCell added in v0.15.0

RemoveKeyspaceCell is a part of the vtadminpb.VTAdminServer interface.

func (*API) RunHealthCheck added in v0.13.0

RunHealthCheck is part of the vtadminpb.VTAdminServer interface.

func (*API) ServeHTTP added in v0.13.0

func (api *API) ServeHTTP(w http.ResponseWriter, r *http.Request)

ServeHTTP serves all routes matching path "/api" (see above) It first processes cookies, and acts accordingly Primarily, it sets up a dynamic API if HttpOpts.EnableDynamicClusters is set to true.

func (*API) SetReadOnly added in v0.14.0

SetReadOnly is part of the vtadminpb.VTAdminServer interface.

func (*API) SetReadWrite added in v0.14.0

SetReadWrite is part of the vtadminpb.VTAdminServer interface.

func (*API) StartReplication added in v0.13.0

StartReplication is part of the vtadminpb.VTAdminServer interface.

func (*API) StopReplication added in v0.13.0

StopReplication is part of the vtadminpb.VTAdminServer interface.

func (*API) TabletExternallyPromoted added in v0.14.0

TabletExternallyPromoted is part of the vtadminpb.VTAdminServer interface.

func (*API) VTExplain added in v0.10.0

VTExplain is part of the vtadminpb.VTAdminServer interface.

func (*API) Validate added in v0.15.0

Validate is part of the vtadminpb.VTAdminServer interface.

func (*API) ValidateKeyspace added in v0.14.0

ValidateKeyspace is part of the vtadminpb.VTAdminServer interface.

func (*API) ValidateSchemaKeyspace added in v0.14.0

ValidateSchemaKeyspace is part of the vtadminpb.VTAdminServer interface.

func (*API) ValidateShard added in v0.15.0

ValidateShard is part of the vtadminpb.VTAdminServer interface.

func (*API) ValidateVersionKeyspace added in v0.14.0

ValidateVersionKeyspace is part of the vtadminpb.VTAdminServer interface.

func (*API) ValidateVersionShard added in v0.15.0

ValidateVersionShard is part of the vtadminpb.VTAdminServer interface.

func (*API) WithCluster added in v0.14.0

func (api *API) WithCluster(c *cluster.Cluster, id string) dynamic.API

WithCluster returns a dynamic API with the given cluster. If `c` is non-nil, it is used as the selected cluster. If the cluster is nil, then a cluster with the given id is retrieved from the API and used in the dynamic API.

Callers must ensure that: 1. If c is non-nil, c.ID == id. 2. id is non-empty.

Note that using dynamic.ClusterFromString ensures both of these preconditions.

type Options added in v0.12.0

type Options struct {
	GRPCOpts grpcserver.Options
	HTTPOpts vtadminhttp.Options
	RBAC     *rbac.Config
	// EnableDynamicClusters makes it so that clients can pass clusters dynamically
	// in a session-like way, either via HTTP cookies or gRPC metadata.
	EnableDynamicClusters bool
}

Options wraps the configuration options for different components of the vtadmin API.

Directories

Path Synopsis
Package cache provides a generic key/value cache with support for background filling.
Package cache provides a generic key/value cache with support for background filling.
discovery/fakediscovery
Package fakediscovery provides a fake, in-memory discovery implementation.
Package fakediscovery provides a fake, in-memory discovery implementation.
internal/caches/schemacache
Package schemacache provides wrapper functions for interacting with instances of the generic (vtadmin/cache).Cache that store schemas.
Package schemacache provides wrapper functions for interacting with instances of the generic (vtadmin/cache).Cache that store schemas.
resolver
Package resolver provides a discovery-based resolver for VTAdmin clusters.
Package resolver provides a discovery-based resolver for VTAdmin clusters.
internal
backoff
Package backoff implements different backoff strategies for retrying failed operations in VTAdmin.
Package backoff implements different backoff strategies for retrying failed operations in VTAdmin.
rand
Package rand provides functions mirroring math/rand that are safe for concurrent use, seeded independently of math/rand's global source.
Package rand provides functions mirroring math/rand that are safe for concurrent use, seeded independently of math/rand's global source.
Package rbac provides role-based access control for vtadmin API endpoints.
Package rbac provides role-based access control for vtadmin API endpoints.
Package sort provides convenience wrappers for sorting various vtadmin types.
Package sort provides convenience wrappers for sorting various vtadmin types.
Package vtadminproto provides helper functions for working with vtadminpb protobuf types.
Package vtadminproto provides helper functions for working with vtadminpb protobuf types.
fakevtsql
Package fakevtsql provides an interface for mocking out sql.DB responses in tests that depend on a vtsql.DB instance.
Package fakevtsql provides an interface for mocking out sql.DB responses in tests that depend on a vtsql.DB instance.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL