vtadmin

package
v0.13.3 Latest Latest
Warning

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

Go to latest
Published: Sep 1, 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 12.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.

If opts.GRPCOpts.Services is nil, NewAPI will automatically add "vtadmin.VTAdminServer" to the list of services queryable in the healthcheck service. Callers can opt-out of this behavior by explicitly setting this value to the empty slice.

func (*API) Close added in v0.13.0

func (api *API) Close() error

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

func (*API) EjectDynamicCluster added in v0.13.0

func (api *API) EjectDynamicCluster(key string, value 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) GetClusters added in v0.10.0

GetClusters 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) 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) RefreshState added in v0.13.0

RefreshState reloads the tablet record on the specified tablet.

func (*API) ReparentTablet added in v0.13.0

func (*API) RunHealthCheck added in v0.13.0

PingTablet 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) StartReplication added in v0.13.0

StartReplication starts replication on the specified tablet.

func (*API) StopReplication added in v0.13.0

StopReplication stops replication on the specified tablet.

func (*API) VTExplain added in v0.10.0

VTExplain is part of the vtadminpb.VTAdminServer interface.

type DynamicClusterJSON added in v0.13.0

type DynamicClusterJSON struct {
	ClusterName string `json:"name,omitempty"`
}

type Options added in v0.12.0

type Options struct {
	GRPCOpts grpcserver.Options
	HTTPOpts vtadminhttp.Options
	RBAC     *rbac.Config
}

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

Directories

Path Synopsis
discovery/fakediscovery
Package fakediscovery provides a fake, in-memory discovery implementation.
Package fakediscovery provides a fake, in-memory discovery implementation.
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