func bootstrap()

in agent/envoy_bootstrap/envoy_bootstrap.go [1437:1538]


func bootstrap(agentConfig config.AgentConfig, fileUtil FileUtil, envoyCLIInst EnvoyCLI) (*boot.Bootstrap, error) {
	// Generate new config

	id, err := getNodeId()
	if err != nil {
		return nil, err
	}

	clusterId := getNodeCluster(id)
	admin, err := buildAdmin(agentConfig)
	if err != nil {
		return nil, err
	}

	var dr *boot.Bootstrap_DynamicResources
	if agentConfig.XdsEndpointUdsPath != "" {
		dr, err = buildDynamicResourcesForRelayEndpoint(agentConfig.XdsEndpointUdsPath)
		if err != nil {
			return nil, err
		}
	} else {
		region, err := getRegion()
		if err != nil {
			return nil, err
		}

		xdsEndpoint, err := getRegionalXdsEndpoint(region, envoyCLIInst)
		if err != nil || xdsEndpoint == nil {
			return nil, err
		}

		signingName, err := getSigningName()
		if err != nil {
			return nil, err
		}

		dr, err = buildRegionalDynamicResources(*xdsEndpoint, region, signingName)
		if err != nil {
			return nil, err
		}
	}

	lr, err := buildLayeredRuntime()
	if err != nil {
		return nil, err
	}

	metadata, err := buildMetadataForNode()
	if err != nil {
		return nil, err
	}

	b := &boot.Bootstrap{
		Admin:            admin,
		Node:             buildNode(id, clusterId, metadata),
		LayeredRuntime:   lr,
		DynamicResources: dr,
		ClusterManager:   buildClusterManager(),
	}

	// Tracing
	if v := env.Get("ENVOY_TRACING_CFG_FILE"); v == "" {
		if err := appendTracing(b, id, clusterId, fileUtil); err != nil {
			return nil, err
		}
	}

	// Unix Domain Socket for SDS Based TLS
	if v := env.Get("APPMESH_SDS_SOCKET_PATH"); v != "" {
		log.Info("APPMESH_SDS_SOCKET_PATH is defined, generating static sds cluster.")
		if err := appendSdsSocketCluster(b, v); err != nil {
			return nil, err
		}
	}

	// Stats
	if env.Get("ENVOY_STATS_CONFIG_FILE") == "" {
		if err := appendStats(b, id); err != nil {
			return nil, err
		}
	}

	// Stats Flush Interval
	if v := env.Get("ENVOY_STATS_FLUSH_INTERVAL"); v != "" {
		if err := appendStatsFlushInterval(b, v); err != nil {
			return nil, err
		}
	}

	// Stats Sinks
	enableDogStatsd, err := env.Truthy("ENABLE_ENVOY_DOG_STATSD")
	if err != nil {
		return nil, err
	}
	if v := env.Get("ENVOY_STATS_SINKS_CFG_FILE"); v == "" && enableDogStatsd {
		if err := appendDogStatsDSinks(b); err != nil {
			return nil, err
		}
	}

	return b, nil
}