in pkg/xds/bootstrap/template_v3.go [403:488]
func buildStaticClusters(parameters configParameters, enableReloadableTokens bool) ([]*envoy_cluster_v3.Cluster, error) {
accessLogSink := &envoy_cluster_v3.Cluster{
// TODO does timeout and keepAlive make sense on this as it uses unix domain sockets?
Name: accessLogSinkClusterName,
ConnectTimeout: util_proto.Duration(parameters.XdsConnectTimeout),
LbPolicy: envoy_cluster_v3.Cluster_ROUND_ROBIN,
UpstreamConnectionOptions: &envoy_cluster_v3.UpstreamConnectionOptions{
TcpKeepalive: &envoy_core_v3.TcpKeepalive{
KeepaliveProbes: util_proto.UInt32(3),
KeepaliveTime: util_proto.UInt32(10),
KeepaliveInterval: util_proto.UInt32(10),
},
},
ClusterDiscoveryType: &envoy_cluster_v3.Cluster_Type{Type: envoy_cluster_v3.Cluster_STATIC},
LoadAssignment: &envoy_config_endpoint_v3.ClusterLoadAssignment{
ClusterName: accessLogSinkClusterName,
Endpoints: []*envoy_config_endpoint_v3.LocalityLbEndpoints{
{
LbEndpoints: []*envoy_config_endpoint_v3.LbEndpoint{
{
HostIdentifier: &envoy_config_endpoint_v3.LbEndpoint_Endpoint{
Endpoint: &envoy_config_endpoint_v3.Endpoint{
Address: &envoy_core_v3.Address{
Address: &envoy_core_v3.Address_Pipe{Pipe: &envoy_core_v3.Pipe{Path: parameters.AccessLogSocketPath}},
},
},
},
},
},
},
},
},
}
if err := (&clusters_v3.Http2Configurer{}).Configure(accessLogSink); err != nil {
return nil, err
}
clusters := []*envoy_cluster_v3.Cluster{accessLogSink}
if parameters.DataplaneTokenPath == "" || !enableReloadableTokens {
adsCluster := &envoy_cluster_v3.Cluster{
Name: adsClusterName,
ConnectTimeout: util_proto.Duration(parameters.XdsConnectTimeout),
LbPolicy: envoy_cluster_v3.Cluster_ROUND_ROBIN,
UpstreamConnectionOptions: &envoy_cluster_v3.UpstreamConnectionOptions{
TcpKeepalive: &envoy_core_v3.TcpKeepalive{
KeepaliveProbes: util_proto.UInt32(3),
KeepaliveTime: util_proto.UInt32(10),
KeepaliveInterval: util_proto.UInt32(10),
},
},
ClusterDiscoveryType: &envoy_cluster_v3.Cluster_Type{Type: clusterTypeFromHost(parameters.XdsHost)},
DnsLookupFamily: dnsLookupFamilyFromXdsHost(parameters.XdsHost, net.LookupIP),
LoadAssignment: &envoy_config_endpoint_v3.ClusterLoadAssignment{
ClusterName: adsClusterName,
Endpoints: []*envoy_config_endpoint_v3.LocalityLbEndpoints{
{
LbEndpoints: []*envoy_config_endpoint_v3.LbEndpoint{
{
HostIdentifier: &envoy_config_endpoint_v3.LbEndpoint_Endpoint{
Endpoint: &envoy_config_endpoint_v3.Endpoint{
Address: &envoy_core_v3.Address{
Address: &envoy_core_v3.Address_SocketAddress{
SocketAddress: &envoy_core_v3.SocketAddress{
Address: parameters.XdsHost,
PortSpecifier: &envoy_core_v3.SocketAddress_PortValue{PortValue: parameters.XdsPort},
},
},
},
},
},
},
},
},
},
},
}
if err := (&clusters_v3.Http2Configurer{}).Configure(adsCluster); err != nil {
return nil, err
}
clusters = append(clusters, adsCluster)
}
return clusters, nil
}