grpc: Index | Files

package bootstrap

import ""

Package bootstrap provides the functionality to initialize certain aspects of an xDS client by reading a bootstrap file.


Package Files

bootstrap.go logging.go

type Config Uses

type Config struct {
    // BalancerName is the name of the management server to connect to.
    // The bootstrap file contains a list of servers (with name+creds), but we
    // pick the first one.
    BalancerName string
    // Creds contains the credentials to be used while talking to the xDS
    // server, as a grpc.DialOption.
    Creds grpc.DialOption
    // TransportAPI indicates the API version of xDS transport protocol to use.
    // This describes the xDS gRPC endpoint and version of
    // DiscoveryRequest/Response used on the wire.
    TransportAPI version.TransportAPI
    // NodeProto contains the Node proto to be used in xDS requests. The actual
    // type depends on the transport protocol version used.
    NodeProto proto.Message
    // CertProviderConfigs contains a mapping from certificate provider plugin
    // instance names to parsed buildable configs.
    CertProviderConfigs map[string]*certprovider.BuildableConfig
    // ServerResourceNameID contains the value to be used as the id in the
    // resource name used to fetch the Listener resource on the xDS-enabled gRPC
    // server.
    ServerResourceNameID string

Config provides the xDS client with several key bits of information that it requires in its interaction with the management server. The Config is initialized from the bootstrap file.

func NewConfig Uses

func NewConfig() (*Config, error)

NewConfig returns a new instance of Config initialized by reading the bootstrap file found at ${GRPC_XDS_BOOTSTRAP}.

The format of the bootstrap file will be as follows: {

"xds_server": {
  "server_uri": <string containing URI of management server>,
  "channel_creds": [
      "type": <string containing channel cred type>,
      "config": <JSON object containing config for the type>
  "server_features": [ ... ],
"node": <JSON form of Node proto>,
"certificate_providers" : {
  "default": {
    "plugin_name": "default-plugin-name",
    "config": { default plugin config in JSON }
  "foo": {
    "plugin_name": "foo",
    "config": { foo plugin config in JSON }
"grpc_server_resource_name_id": "grpc/server"


Currently, we support exactly one type of credential, which is "google_default", where we use the host's default certs for transport credentials and a Google oauth token for call credentials.

This function tries to process as much of the bootstrap file as possible (in the presence of the errors) and may return a Config object with certain fields left unspecified, in which case the caller should use some sane defaults.

Package bootstrap imports 17 packages (graph) and is imported by 9 packages. Updated 2021-01-16. Refresh now. Tools for package owners.