Documentation ¶
Index ¶
- Variables
- type Subset
- func (*Subset) Descriptor() ([]byte, []int)deprecated
- func (x *Subset) GetAllowRedundantKeys() bool
- func (x *Subset) GetDefaultSubset() *structpb.Struct
- func (x *Subset) GetFallbackPolicy() Subset_LbSubsetFallbackPolicy
- func (x *Subset) GetListAsAny() bool
- func (x *Subset) GetLocalityWeightAware() bool
- func (x *Subset) GetMetadataFallbackPolicy() Subset_LbSubsetMetadataFallbackPolicy
- func (x *Subset) GetPanicModeAny() bool
- func (x *Subset) GetScaleLocalityWeight() bool
- func (x *Subset) GetSubsetLbPolicy() *v3.LoadBalancingPolicy
- func (x *Subset) GetSubsetSelectors() []*Subset_LbSubsetSelector
- func (*Subset) ProtoMessage()
- func (x *Subset) ProtoReflect() protoreflect.Message
- func (x *Subset) Reset()
- func (x *Subset) String() string
- type Subset_LbSubsetFallbackPolicy
- func (Subset_LbSubsetFallbackPolicy) Descriptor() protoreflect.EnumDescriptor
- func (x Subset_LbSubsetFallbackPolicy) Enum() *Subset_LbSubsetFallbackPolicy
- func (Subset_LbSubsetFallbackPolicy) EnumDescriptor() ([]byte, []int)deprecated
- func (x Subset_LbSubsetFallbackPolicy) Number() protoreflect.EnumNumber
- func (x Subset_LbSubsetFallbackPolicy) String() string
- func (Subset_LbSubsetFallbackPolicy) Type() protoreflect.EnumType
- type Subset_LbSubsetMetadataFallbackPolicy
- func (Subset_LbSubsetMetadataFallbackPolicy) Descriptor() protoreflect.EnumDescriptor
- func (x Subset_LbSubsetMetadataFallbackPolicy) Enum() *Subset_LbSubsetMetadataFallbackPolicy
- func (Subset_LbSubsetMetadataFallbackPolicy) EnumDescriptor() ([]byte, []int)deprecated
- func (x Subset_LbSubsetMetadataFallbackPolicy) Number() protoreflect.EnumNumber
- func (x Subset_LbSubsetMetadataFallbackPolicy) String() string
- func (Subset_LbSubsetMetadataFallbackPolicy) Type() protoreflect.EnumType
- type Subset_LbSubsetSelector
- func (*Subset_LbSubsetSelector) Descriptor() ([]byte, []int)deprecated
- func (x *Subset_LbSubsetSelector) GetFallbackKeysSubset() []string
- func (x *Subset_LbSubsetSelector) GetFallbackPolicy() Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy
- func (x *Subset_LbSubsetSelector) GetKeys() []string
- func (x *Subset_LbSubsetSelector) GetSingleHostPerSubset() bool
- func (*Subset_LbSubsetSelector) ProtoMessage()
- func (x *Subset_LbSubsetSelector) ProtoReflect() protoreflect.Message
- func (x *Subset_LbSubsetSelector) Reset()
- func (x *Subset_LbSubsetSelector) String() string
- type Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy
- func (Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) Descriptor() protoreflect.EnumDescriptor
- func (x Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) Enum() *Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy
- func (Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) EnumDescriptor() ([]byte, []int)deprecated
- func (x Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) Number() protoreflect.EnumNumber
- func (x Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) String() string
- func (Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) Type() protoreflect.EnumType
Constants ¶
This section is empty.
Variables ¶
var ( Subset_LbSubsetFallbackPolicy_name = map[int32]string{ 0: "NO_FALLBACK", 1: "ANY_ENDPOINT", 2: "DEFAULT_SUBSET", } Subset_LbSubsetFallbackPolicy_value = map[string]int32{ "NO_FALLBACK": 0, "ANY_ENDPOINT": 1, "DEFAULT_SUBSET": 2, } )
Enum value maps for Subset_LbSubsetFallbackPolicy.
var ( Subset_LbSubsetMetadataFallbackPolicy_name = map[int32]string{ 0: "METADATA_NO_FALLBACK", 1: "FALLBACK_LIST", } Subset_LbSubsetMetadataFallbackPolicy_value = map[string]int32{ "METADATA_NO_FALLBACK": 0, "FALLBACK_LIST": 1, } )
Enum value maps for Subset_LbSubsetMetadataFallbackPolicy.
var ( Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy_name = map[int32]string{ 0: "NOT_DEFINED", 1: "NO_FALLBACK", 2: "ANY_ENDPOINT", 3: "DEFAULT_SUBSET", 4: "KEYS_SUBSET", } Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy_value = map[string]int32{ "NOT_DEFINED": 0, "NO_FALLBACK": 1, "ANY_ENDPOINT": 2, "DEFAULT_SUBSET": 3, "KEYS_SUBSET": 4, } )
Enum value maps for Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy.
var File_envoy_extensions_load_balancing_policies_subset_v3_subset_proto protoreflect.FileDescriptor
Functions ¶
This section is empty.
Types ¶
type Subset ¶
type Subset struct { // The behavior used when no endpoint subset matches the selected route's // metadata. The value defaults to // :ref:`NO_FALLBACK<envoy_v3_api_enum_value_extensions.load_balancing_policies.subset.v3.Subset.LbSubsetFallbackPolicy.NO_FALLBACK>`. FallbackPolicy Subset_LbSubsetFallbackPolicy `` /* 190-byte string literal not displayed */ // Specifies the default subset of endpoints used during fallback if // fallback_policy is // :ref:`DEFAULT_SUBSET<envoy_v3_api_enum_value_extensions.load_balancing_policies.subset.v3.Subset.LbSubsetFallbackPolicy.DEFAULT_SUBSET>`. // Each field in default_subset is // compared to the matching LbEndpoint.Metadata under the “envoy.lb“ // namespace. It is valid for no hosts to match, in which case the behavior // is the same as a fallback_policy of // :ref:`NO_FALLBACK<envoy_v3_api_enum_value_extensions.load_balancing_policies.subset.v3.Subset.LbSubsetFallbackPolicy.NO_FALLBACK>`. DefaultSubset *structpb.Struct `protobuf:"bytes,2,opt,name=default_subset,json=defaultSubset,proto3" json:"default_subset,omitempty"` // For each entry, LbEndpoint.Metadata's // “envoy.lb“ namespace is traversed and a subset is created for each unique // combination of key and value. For example: // // .. code-block:: json // // { "subset_selectors": [ // { "keys": [ "version" ] }, // { "keys": [ "stage", "hardware_type" ] } // ]} // // A subset is matched when the metadata from the selected route and // weighted cluster contains the same keys and values as the subset's // metadata. The same host may appear in multiple subsets. SubsetSelectors []*Subset_LbSubsetSelector `protobuf:"bytes,3,rep,name=subset_selectors,json=subsetSelectors,proto3" json:"subset_selectors,omitempty"` // By default, only when the request metadata has exactly the **same** keys as one of subset selectors and // the values of the related keys are matched, the load balancer will have a valid subset for the request. // For example, given the following subset selectors: // // .. code-block:: json // // { "subset_selectors": [ // { "keys": [ "version" ] }, // { "keys": [ "stage", "version" ] } // ]} // // A request with metadata “{"redundant-key": "redundant-value", "stage": "prod", "version": "v1"}“ or // “{"redundant-key": "redundant-value", "version": "v1"}“ will not have a valid subset even if the values // of keys “stage“ and “version“ are matched because of the redundant key/value pair in the request // metadata. // // By setting this field to true, the most appropriate keys will be filtered out from the request metadata // according to the subset selectors. And then the filtered keys and related values will be matched to find // the valid host subset. By this way, redundant key/value pairs are allowed in the request metadata. The keys // of a request metadata could be superset of the keys of the subset selectors and need not to be exactly the // same as the keys of the subset selectors. // // More specifically, if the keys of a request metadata is a superset of one of the subset selectors, then only // the values of the keys that in the selector keys will be matched. Take the above example, if the request // metadata is “{"redundant-key": "redundant-value", "stage": "prod", "version": "v1"}“, the load balancer // will only match the values of “stage“ and “version“ to find an appropriate subset because “stage“ // “version“ are contained by the second subset selector and the redundant “redundant-key“ will be // ignored. // // .. note:: // // If the keys of request metadata is superset of multiple different subset selectors keys, the subset // selector with most keys to win. For example, given subset selectors // “{"subset_selectors": ["keys": ["A", "B", "C"], ["A", "B"]]}“ and request metadata “{"A": "-", // "B": "-", "C": "-", "D": "-"}“, keys “A“, “B“, “C“ will be evaluated. // If the keys of request metadata is superset of multiple different subset selectors keys and the number // of selector keys are same, then the one placed in front to win. For example, given subset selectors // “{"subset_selectors": ["keys": ["A", "B"], ["C", "D"]]}“ and request metadata “{"A": "-", "B": "-", // "C": "-", "D": "-"}“, keys “A“, “B“ will be evaluated. AllowRedundantKeys bool `protobuf:"varint,10,opt,name=allow_redundant_keys,json=allowRedundantKeys,proto3" json:"allow_redundant_keys,omitempty"` // If true, routing to subsets will take into account the localities and locality weights of the // endpoints when making the routing decision. // // There are some potential pitfalls associated with enabling this feature, as the resulting // traffic split after applying both a subset match and locality weights might be undesirable. // // Consider for example a situation in which you have 50/50 split across two localities X/Y // which have 100 hosts each without subsetting. If the subset LB results in X having only 1 // host selected but Y having 100, then a lot more load is being dumped on the single host in X // than originally anticipated in the load balancing assignment delivered via EDS. LocalityWeightAware bool `protobuf:"varint,4,opt,name=locality_weight_aware,json=localityWeightAware,proto3" json:"locality_weight_aware,omitempty"` // When used with locality_weight_aware, scales the weight of each locality by the ratio // of hosts in the subset vs hosts in the original subset. This aims to even out the load // going to an individual locality if said locality is disproportionately affected by the // subset predicate. ScaleLocalityWeight bool `protobuf:"varint,5,opt,name=scale_locality_weight,json=scaleLocalityWeight,proto3" json:"scale_locality_weight,omitempty"` // If true, when a fallback policy is configured and its corresponding subset fails to find // a host this will cause any host to be selected instead. // // This is useful when using the default subset as the fallback policy, given the default // subset might become empty. With this option enabled, if that happens the LB will attempt // to select a host from the entire cluster. PanicModeAny bool `protobuf:"varint,6,opt,name=panic_mode_any,json=panicModeAny,proto3" json:"panic_mode_any,omitempty"` // If true, metadata specified for a metadata key will be matched against the corresponding // endpoint metadata if the endpoint metadata matches the value exactly OR it is a list value // and any of the elements in the list matches the criteria. ListAsAny bool `protobuf:"varint,7,opt,name=list_as_any,json=listAsAny,proto3" json:"list_as_any,omitempty"` // Fallback mechanism that allows to try different route metadata until a host is found. // If load balancing process, including all its mechanisms (like // :ref:`fallback_policy<envoy_v3_api_field_extensions.load_balancing_policies.subset.v3.subset.fallback_policy>`) // fails to select a host, this policy decides if and how the process is repeated using another metadata. // // The value defaults to // :ref:`METADATA_NO_FALLBACK // <envoy_v3_api_enum_value_extensions.load_balancing_policies.subset.v3.subset.LbSubsetMetadataFallbackPolicy.METADATA_NO_FALLBACK>`. MetadataFallbackPolicy Subset_LbSubsetMetadataFallbackPolicy `` /* 224-byte string literal not displayed */ // The child LB policy to create for endpoint-picking within the chosen subset. SubsetLbPolicy *v3.LoadBalancingPolicy `protobuf:"bytes,9,opt,name=subset_lb_policy,json=subsetLbPolicy,proto3" json:"subset_lb_policy,omitempty"` // contains filtered or unexported fields }
Optionally divide the endpoints in this cluster into subsets defined by endpoint metadata and selected by route and weighted cluster metadata. [#next-free-field: 11]
func (*Subset) GetFallbackPolicy ¶
func (x *Subset) GetFallbackPolicy() Subset_LbSubsetFallbackPolicy
func (*Subset) GetMetadataFallbackPolicy ¶
func (x *Subset) GetMetadataFallbackPolicy() Subset_LbSubsetMetadataFallbackPolicy
func (*Subset) GetSubsetLbPolicy ¶
func (x *Subset) GetSubsetLbPolicy() *v3.LoadBalancingPolicy
func (*Subset) GetSubsetSelectors ¶
func (x *Subset) GetSubsetSelectors() []*Subset_LbSubsetSelector
func (*Subset) ProtoReflect ¶
func (x *Subset) ProtoReflect() protoreflect.Message
type Subset_LbSubsetFallbackPolicy ¶
type Subset_LbSubsetFallbackPolicy int32
If NO_FALLBACK is selected, a result equivalent to no healthy hosts is reported. If ANY_ENDPOINT is selected, any cluster endpoint may be returned (subject to policy, health checks, etc). If DEFAULT_SUBSET is selected, load balancing is performed over the endpoints matching the values from the default_subset field.
const ( Subset_NO_FALLBACK Subset_LbSubsetFallbackPolicy = 0 Subset_ANY_ENDPOINT Subset_LbSubsetFallbackPolicy = 1 Subset_DEFAULT_SUBSET Subset_LbSubsetFallbackPolicy = 2 )
func (Subset_LbSubsetFallbackPolicy) Descriptor ¶
func (Subset_LbSubsetFallbackPolicy) Descriptor() protoreflect.EnumDescriptor
func (Subset_LbSubsetFallbackPolicy) Enum ¶
func (x Subset_LbSubsetFallbackPolicy) Enum() *Subset_LbSubsetFallbackPolicy
func (Subset_LbSubsetFallbackPolicy) EnumDescriptor
deprecated
func (Subset_LbSubsetFallbackPolicy) EnumDescriptor() ([]byte, []int)
Deprecated: Use Subset_LbSubsetFallbackPolicy.Descriptor instead.
func (Subset_LbSubsetFallbackPolicy) Number ¶
func (x Subset_LbSubsetFallbackPolicy) Number() protoreflect.EnumNumber
func (Subset_LbSubsetFallbackPolicy) String ¶
func (x Subset_LbSubsetFallbackPolicy) String() string
func (Subset_LbSubsetFallbackPolicy) Type ¶
func (Subset_LbSubsetFallbackPolicy) Type() protoreflect.EnumType
type Subset_LbSubsetMetadataFallbackPolicy ¶
type Subset_LbSubsetMetadataFallbackPolicy int32
const ( // No fallback. Route metadata will be used as-is. Subset_METADATA_NO_FALLBACK Subset_LbSubsetMetadataFallbackPolicy = 0 // A special metadata key “fallback_list“ will be used to provide variants of metadata to try. // Value of “fallback_list“ key has to be a list. Every list element has to be a struct - it will // be merged with route metadata, overriding keys that appear in both places. // “fallback_list“ entries will be used in order until a host is found. // // “fallback_list“ key itself is removed from metadata before subset load balancing is performed. // // Example: // // for metadata: // // .. code-block:: yaml // // version: 1.0 // fallback_list: // - version: 2.0 // hardware: c64 // - hardware: c32 // - version: 3.0 // // at first, metadata: // // .. code-block:: json // // {"version": "2.0", "hardware": "c64"} // // will be used for load balancing. If no host is found, metadata: // // .. code-block:: json // // {"version": "1.0", "hardware": "c32"} // // is next to try. If it still results in no host, finally metadata: // // .. code-block:: json // // {"version": "3.0"} // // is used. Subset_FALLBACK_LIST Subset_LbSubsetMetadataFallbackPolicy = 1 )
func (Subset_LbSubsetMetadataFallbackPolicy) Descriptor ¶
func (Subset_LbSubsetMetadataFallbackPolicy) Descriptor() protoreflect.EnumDescriptor
func (Subset_LbSubsetMetadataFallbackPolicy) Enum ¶
func (Subset_LbSubsetMetadataFallbackPolicy) EnumDescriptor
deprecated
func (Subset_LbSubsetMetadataFallbackPolicy) EnumDescriptor() ([]byte, []int)
Deprecated: Use Subset_LbSubsetMetadataFallbackPolicy.Descriptor instead.
func (Subset_LbSubsetMetadataFallbackPolicy) Number ¶
func (x Subset_LbSubsetMetadataFallbackPolicy) Number() protoreflect.EnumNumber
func (Subset_LbSubsetMetadataFallbackPolicy) String ¶
func (x Subset_LbSubsetMetadataFallbackPolicy) String() string
func (Subset_LbSubsetMetadataFallbackPolicy) Type ¶
func (Subset_LbSubsetMetadataFallbackPolicy) Type() protoreflect.EnumType
type Subset_LbSubsetSelector ¶
type Subset_LbSubsetSelector struct { // List of keys to match with the weighted cluster metadata. Keys []string `protobuf:"bytes,1,rep,name=keys,proto3" json:"keys,omitempty"` // Selects a mode of operation in which each subset has only one host. This mode uses the same rules for // choosing a host, but updating hosts is faster, especially for large numbers of hosts. // // If a match is found to a host, that host will be used regardless of priority levels. // // When this mode is enabled, configurations that contain more than one host with the same metadata value for the single key in “keys“ // will use only one of the hosts with the given key; no requests will be routed to the others. The cluster gauge // :ref:`lb_subsets_single_host_per_subset_duplicate<config_cluster_manager_cluster_stats_subset_lb>` indicates how many duplicates are // present in the current configuration. SingleHostPerSubset bool `protobuf:"varint,4,opt,name=single_host_per_subset,json=singleHostPerSubset,proto3" json:"single_host_per_subset,omitempty"` // The behavior used when no endpoint subset matches the selected route's // metadata. FallbackPolicy Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy `` /* 215-byte string literal not displayed */ // Subset of // :ref:`keys<envoy_v3_api_field_extensions.load_balancing_policies.subset.v3.Subset.LbSubsetSelector.keys>` used by // :ref:`KEYS_SUBSET<envoy_v3_api_enum_value_extensions.load_balancing_policies.subset.v3.Subset.LbSubsetSelector.LbSubsetSelectorFallbackPolicy.KEYS_SUBSET>` // fallback policy. // It has to be a non empty list if KEYS_SUBSET fallback policy is selected. // For any other fallback policy the parameter is not used and should not be set. // Only values also present in // :ref:`keys<envoy_v3_api_field_extensions.load_balancing_policies.subset.v3.Subset.LbSubsetSelector.keys>` are allowed, but // “fallback_keys_subset“ cannot be equal to “keys“. FallbackKeysSubset []string `protobuf:"bytes,3,rep,name=fallback_keys_subset,json=fallbackKeysSubset,proto3" json:"fallback_keys_subset,omitempty"` // contains filtered or unexported fields }
Specifications for subsets.
func (*Subset_LbSubsetSelector) Descriptor
deprecated
func (*Subset_LbSubsetSelector) Descriptor() ([]byte, []int)
Deprecated: Use Subset_LbSubsetSelector.ProtoReflect.Descriptor instead.
func (*Subset_LbSubsetSelector) GetFallbackKeysSubset ¶
func (x *Subset_LbSubsetSelector) GetFallbackKeysSubset() []string
func (*Subset_LbSubsetSelector) GetFallbackPolicy ¶
func (x *Subset_LbSubsetSelector) GetFallbackPolicy() Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy
func (*Subset_LbSubsetSelector) GetKeys ¶
func (x *Subset_LbSubsetSelector) GetKeys() []string
func (*Subset_LbSubsetSelector) GetSingleHostPerSubset ¶
func (x *Subset_LbSubsetSelector) GetSingleHostPerSubset() bool
func (*Subset_LbSubsetSelector) ProtoMessage ¶
func (*Subset_LbSubsetSelector) ProtoMessage()
func (*Subset_LbSubsetSelector) ProtoReflect ¶
func (x *Subset_LbSubsetSelector) ProtoReflect() protoreflect.Message
func (*Subset_LbSubsetSelector) Reset ¶
func (x *Subset_LbSubsetSelector) Reset()
func (*Subset_LbSubsetSelector) String ¶
func (x *Subset_LbSubsetSelector) String() string
type Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy ¶
type Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy int32
Allows to override top level fallback policy per selector.
const ( // If NOT_DEFINED top level config fallback policy is used instead. Subset_LbSubsetSelector_NOT_DEFINED Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy = 0 // If NO_FALLBACK is selected, a result equivalent to no healthy hosts is reported. Subset_LbSubsetSelector_NO_FALLBACK Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy = 1 // If ANY_ENDPOINT is selected, any cluster endpoint may be returned // (subject to policy, health checks, etc). Subset_LbSubsetSelector_ANY_ENDPOINT Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy = 2 // If DEFAULT_SUBSET is selected, load balancing is performed over the // endpoints matching the values from the default_subset field. Subset_LbSubsetSelector_DEFAULT_SUBSET Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy = 3 // If KEYS_SUBSET is selected, subset selector matching is performed again with metadata // keys reduced to // :ref:`fallback_keys_subset<envoy_v3_api_field_extensions.load_balancing_policies.subset.v3.Subset.LbSubsetSelector.fallback_keys_subset>`. // It allows for a fallback to a different, less specific selector if some of the keys of // the selector are considered optional. Subset_LbSubsetSelector_KEYS_SUBSET Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy = 4 )
func (Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) Descriptor ¶
func (Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) Descriptor() protoreflect.EnumDescriptor
func (Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) Enum ¶
func (Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) EnumDescriptor
deprecated
func (Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) EnumDescriptor() ([]byte, []int)
Deprecated: Use Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy.Descriptor instead.
func (Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) Number ¶
func (x Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) Number() protoreflect.EnumNumber
func (Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) String ¶
func (x Subset_LbSubsetSelector_LbSubsetSelectorFallbackPolicy) String() string