func buildStaticClusters()

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
}