Documentation ¶
Index ¶
- Constants
- Variables
- func SelectTrafficPolicyComponents(policy *networking.TrafficPolicy, port *model.Port) (*networking.ConnectionPoolSettings, *networking.OutlierDetection, ...)
- type ClusterMode
- type ConfigGeneratorImpl
- func (configgen *ConfigGeneratorImpl) BuildClusters(env *model.Environment, proxy *model.Proxy, push *model.PushContext) ([]*v2.Cluster, error)
- func (configgen *ConfigGeneratorImpl) BuildHTTPRoutes(env *model.Environment, node *model.Proxy, push *model.PushContext, ...) (*xdsapi.RouteConfiguration, error)
- func (configgen *ConfigGeneratorImpl) BuildListeners(env *model.Environment, node *model.Proxy, push *model.PushContext) ([]*xdsapi.Listener, error)
- func (configgen *ConfigGeneratorImpl) BuildSharedPushState(env *model.Environment, push *model.PushContext) error
- func (configgen *ConfigGeneratorImpl) CanUsePrecomputedCDS(proxy *model.Proxy) bool
Constants ¶
const ( // DefaultLbType set to round robin DefaultLbType = networking.LoadBalancerSettings_ROUND_ROBIN // ManagementClusterHostname indicates the hostname used for building inbound clusters for management ports ManagementClusterHostname = "mgmtCluster" )
const ( // RDSHttpProxy is the special name for HTTP PROXY route RDSHttpProxy = "http_proxy" // VirtualListenerName is the name for traffic capture listener VirtualListenerName = "virtual" // WildcardAddress binds to all IP addresses WildcardAddress = "0.0.0.0" // LocalhostAddress for local binding LocalhostAddress = "127.0.0.1" // EnvoyTextLogFormat format for envoy text based access logs EnvoyTextLogFormat = "[%START_TIME%] \"%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% " + "%PROTOCOL%\" %RESPONSE_CODE% %RESPONSE_FLAGS% %BYTES_RECEIVED% %BYTES_SENT% " + "%DURATION% %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)% \"%REQ(X-FORWARDED-FOR)%\" " + "\"%REQ(USER-AGENT)%\" \"%REQ(X-REQUEST-ID)%\" \"%REQ(:AUTHORITY)%\" \"%UPSTREAM_HOST%\" " + "%UPSTREAM_CLUSTER% %UPSTREAM_LOCAL_ADDRESS% %DOWNSTREAM_LOCAL_ADDRESS% " + "%DOWNSTREAM_REMOTE_ADDRESS% %REQUESTED_SERVER_NAME%\n" // EnvoyServerName for istio's envoy EnvoyServerName = "istio-envoy" )
Variables ¶
var ( // EnvoyJSONLogFormat map of values for envoy json based access logs EnvoyJSONLogFormat = &google_protobuf.Struct{ Fields: map[string]*google_protobuf.Value{ "start_time": &google_protobuf.Value{Kind: &google_protobuf.Value_StringValue{StringValue: "%START_TIME%"}}, "method": &google_protobuf.Value{Kind: &google_protobuf.Value_StringValue{StringValue: "%START_TIME%"}}, "path": &google_protobuf.Value{Kind: &google_protobuf.Value_StringValue{StringValue: "%REQ(X-ENVOY-ORIGINAL-PATH?:PATH)%"}}, "protocol": &google_protobuf.Value{Kind: &google_protobuf.Value_StringValue{StringValue: "%PROTOCOL%"}}, "response_code": &google_protobuf.Value{Kind: &google_protobuf.Value_StringValue{StringValue: "%RESPONSE_CODE%"}}, "response_flags": &google_protobuf.Value{Kind: &google_protobuf.Value_StringValue{StringValue: "%RESPONSE_FLAGS%"}}, "bytes_received": &google_protobuf.Value{Kind: &google_protobuf.Value_StringValue{StringValue: "%BYTES_RECEIVED%"}}, "bytes_sent": &google_protobuf.Value{Kind: &google_protobuf.Value_StringValue{StringValue: "%BYTES_SENT%"}}, "duration": &google_protobuf.Value{Kind: &google_protobuf.Value_StringValue{StringValue: "%DURATION%"}}, "upstream_service_time": &google_protobuf.Value{Kind: &google_protobuf.Value_StringValue{StringValue: "%RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%"}}, "x_forwarded_for": &google_protobuf.Value{Kind: &google_protobuf.Value_StringValue{StringValue: "%REQ(X-FORWARDED-FOR)%"}}, "user_agent": &google_protobuf.Value{Kind: &google_protobuf.Value_StringValue{StringValue: "%REQ(USER-AGENT)%"}}, "request_id": &google_protobuf.Value{Kind: &google_protobuf.Value_StringValue{StringValue: "%REQ(X-REQUEST-ID)%"}}, "authority": &google_protobuf.Value{Kind: &google_protobuf.Value_StringValue{StringValue: "%REQ(:AUTHORITY)%"}}, "upstream_host": &google_protobuf.Value{Kind: &google_protobuf.Value_StringValue{StringValue: "%UPSTREAM_HOST%"}}, "upstream_cluster": &google_protobuf.Value{Kind: &google_protobuf.Value_StringValue{StringValue: "%UPSTREAM_CLUSTER%"}}, "upstream_local_address": &google_protobuf.Value{Kind: &google_protobuf.Value_StringValue{StringValue: "%UPSTREAM_LOCAL_ADDRESS%"}}, "downstream_local_address": &google_protobuf.Value{Kind: &google_protobuf.Value_StringValue{StringValue: "%DOWNSTREAM_LOCAL_ADDRESS%"}}, "downstream_remote_address": &google_protobuf.Value{Kind: &google_protobuf.Value_StringValue{StringValue: "%DOWNSTREAM_REMOTE_ADDRESS%"}}, "requested_server_name": &google_protobuf.Value{Kind: &google_protobuf.Value_StringValue{StringValue: "%REQUESTED_SERVER_NAME%"}}, }, } )
var ListenersALPNProtocols = []string{"h2", "http/1.1"}
ListenersALPNProtocols denotes the the list of ALPN protocols that the listener should expose
Functions ¶
func SelectTrafficPolicyComponents ¶
func SelectTrafficPolicyComponents(policy *networking.TrafficPolicy, port *model.Port) ( *networking.ConnectionPoolSettings, *networking.OutlierDetection, *networking.LoadBalancerSettings, *networking.TLSSettings)
SelectTrafficPolicyComponents returns the components of TrafficPolicy that should be used for given port.
Types ¶
type ClusterMode ¶
type ClusterMode string
ClusterMode defines whether the cluster is being built for SNI-DNATing (sni passthrough) or not
const ( // SniDnatClusterMode indicates cluster is being built for SNI dnat mode SniDnatClusterMode ClusterMode = "sni-dnat" // DefaultClusterMode indicates usual cluster with mTLS et al DefaultClusterMode ClusterMode = "outbound" )
type ConfigGeneratorImpl ¶
type ConfigGeneratorImpl struct { // List of plugins that modify code generated by this config generator Plugins []plugin.Plugin // List of outbound clusters // Must be rebuilt for each push epoch PrecomputedOutboundClusters []*xdsapi.Cluster }
func NewConfigGenerator ¶
func NewConfigGenerator(plugins []plugin.Plugin) *ConfigGeneratorImpl
func (*ConfigGeneratorImpl) BuildClusters ¶
func (configgen *ConfigGeneratorImpl) BuildClusters(env *model.Environment, proxy *model.Proxy, push *model.PushContext) ([]*v2.Cluster, error)
BuildClusters returns the list of clusters for the given proxy. This is the CDS output For outbound: Cluster for each service/subset hostname or cidr with SNI set to service hostname Cluster type based on resolution For inbound (sidecar only): Cluster for each inbound endpoint port and for each service port
func (*ConfigGeneratorImpl) BuildHTTPRoutes ¶
func (configgen *ConfigGeneratorImpl) BuildHTTPRoutes(env *model.Environment, node *model.Proxy, push *model.PushContext, routeName string) (*xdsapi.RouteConfiguration, error)
BuildHTTPRoutes produces a list of routes for the proxy
func (*ConfigGeneratorImpl) BuildListeners ¶
func (configgen *ConfigGeneratorImpl) BuildListeners(env *model.Environment, node *model.Proxy, push *model.PushContext) ([]*xdsapi.Listener, error)
BuildListeners produces a list of listeners and referenced clusters for all proxies
func (*ConfigGeneratorImpl) BuildSharedPushState ¶
func (configgen *ConfigGeneratorImpl) BuildSharedPushState(env *model.Environment, push *model.PushContext) error
func (*ConfigGeneratorImpl) CanUsePrecomputedCDS ¶
func (configgen *ConfigGeneratorImpl) CanUsePrecomputedCDS(proxy *model.Proxy) bool