Documentation
¶
Overview ¶
Package v1alpha1 contains API Schema definitions for the kuadrant v1alpha1 API group +kubebuilder:object:generate=true +groupName=kuadrant.io
Index ¶
- Variables
- type MergeableTokenRateLimitPolicySpec
- type TokenLimit
- type TokenRateLimitPolicy
- func (in *TokenRateLimitPolicy) DeepCopy() *TokenRateLimitPolicy
- func (in *TokenRateLimitPolicy) DeepCopyInto(out *TokenRateLimitPolicy)
- func (in *TokenRateLimitPolicy) DeepCopyObject() runtime.Object
- func (p *TokenRateLimitPolicy) Empty() bool
- func (p *TokenRateLimitPolicy) GetLocator() string
- func (p *TokenRateLimitPolicy) GetMergeStrategy() machinery.MergeStrategy
- func (p *TokenRateLimitPolicy) GetName() string
- func (p *TokenRateLimitPolicy) GetNamespace() string
- func (p *TokenRateLimitPolicy) GetStatus() kuadrantgatewayapi.PolicyStatus
- func (p *TokenRateLimitPolicy) GetTargetRef() gatewayapiv1alpha2.LocalPolicyTargetReferencedeprecated
- func (p *TokenRateLimitPolicy) GetTargetRefs() []machinery.PolicyTargetReference
- func (p *TokenRateLimitPolicy) Kind() string
- func (p *TokenRateLimitPolicy) Merge(other machinery.Policy) machinery.Policy
- func (p *TokenRateLimitPolicy) Rules() map[string]kuadrantv1.MergeableRule
- func (p *TokenRateLimitPolicy) SetRules(rules map[string]kuadrantv1.MergeableRule)
- type TokenRateLimitPolicyList
- type TokenRateLimitPolicySpec
- type TokenRateLimitPolicySpecProper
- type TokenRateLimitPolicyStatus
Constants ¶
This section is empty.
Variables ¶
var ( // GroupVersion is group version used to register these objects GroupVersion = schema.GroupVersion{Group: "kuadrant.io", Version: "v1alpha1"} // SchemeBuilder is used to add go types to the GroupVersionKind scheme SchemeBuilder = &scheme.Builder{GroupVersion: GroupVersion} // AddToScheme adds the types in this group-version to the given scheme. AddToScheme = SchemeBuilder.AddToScheme )
var ( TokenRateLimitPolicyGroupKind = schema.GroupKind{Group: GroupVersion.Group, Kind: "TokenRateLimitPolicy"} TokenRateLimitPoliciesResource = GroupVersion.WithResource("tokenratelimitpolicies") )
Functions ¶
This section is empty.
Types ¶
type MergeableTokenRateLimitPolicySpec ¶ added in v1.3.0
type MergeableTokenRateLimitPolicySpec struct {
// Strategy defines the merge strategy to apply when merging this policy with other policies.
// +kubebuilder:validation:Enum=atomic;merge
// +kubebuilder:default=atomic
Strategy string `json:"strategy,omitempty"`
TokenRateLimitPolicySpecProper `json:""`
}
func (*MergeableTokenRateLimitPolicySpec) DeepCopy ¶ added in v1.3.0
func (in *MergeableTokenRateLimitPolicySpec) DeepCopy() *MergeableTokenRateLimitPolicySpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MergeableTokenRateLimitPolicySpec.
func (*MergeableTokenRateLimitPolicySpec) DeepCopyInto ¶ added in v1.3.0
func (in *MergeableTokenRateLimitPolicySpec) DeepCopyInto(out *MergeableTokenRateLimitPolicySpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TokenLimit ¶ added in v1.3.0
type TokenLimit struct {
// When holds a list of "limit-level" `Predicate`s for token-based conditions
// Called also "soft" conditions as route selectors must also match
// +optional
When kuadrantv1.WhenPredicates `json:"when,omitempty"`
// Rates holds the list of limit rates for token-based limiting
// +optional
Rates []kuadrantv1.Rate `json:"rates,omitempty"`
// Counters defines additional rate limit counters based on CEL expressions which can reference well known selectors
// TODO Document properly "Well-known selector" https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors
// +optional
Counters []kuadrantv1.Counter `json:"counters,omitempty"`
// Source stores the locator of the policy where the limit is originally defined (internal use)
Source string `json:"-"`
}
TokenLimit represents a complete token-based rate limit configuration
func (TokenLimit) CountersAsStringList ¶ added in v1.3.0
func (l TokenLimit) CountersAsStringList() []string
func (*TokenLimit) DeepCopy ¶ added in v1.3.0
func (in *TokenLimit) DeepCopy() *TokenLimit
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenLimit.
func (*TokenLimit) DeepCopyInto ¶ added in v1.3.0
func (in *TokenLimit) DeepCopyInto(out *TokenLimit)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*TokenLimit) GetSource ¶ added in v1.3.0
func (l *TokenLimit) GetSource() string
func (*TokenLimit) GetSpec ¶ added in v1.3.0
func (l *TokenLimit) GetSpec() any
func (*TokenLimit) WithSource ¶ added in v1.3.0
func (l *TokenLimit) WithSource(source string) kuadrantv1.MergeableRule
type TokenRateLimitPolicy ¶ added in v1.3.0
type TokenRateLimitPolicy struct {
metav1.TypeMeta `json:",inline"`
metav1.ObjectMeta `json:"metadata,omitempty"`
Spec TokenRateLimitPolicySpec `json:"spec,omitempty"`
Status TokenRateLimitPolicyStatus `json:"status,omitempty"`
}
TokenRateLimitPolicy enables token-based rate limiting for service workloads in a Gateway API network
func (*TokenRateLimitPolicy) DeepCopy ¶ added in v1.3.0
func (in *TokenRateLimitPolicy) DeepCopy() *TokenRateLimitPolicy
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenRateLimitPolicy.
func (*TokenRateLimitPolicy) DeepCopyInto ¶ added in v1.3.0
func (in *TokenRateLimitPolicy) DeepCopyInto(out *TokenRateLimitPolicy)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*TokenRateLimitPolicy) DeepCopyObject ¶ added in v1.3.0
func (in *TokenRateLimitPolicy) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
func (*TokenRateLimitPolicy) Empty ¶ added in v1.3.0
func (p *TokenRateLimitPolicy) Empty() bool
func (*TokenRateLimitPolicy) GetLocator ¶ added in v1.3.0
func (p *TokenRateLimitPolicy) GetLocator() string
func (*TokenRateLimitPolicy) GetMergeStrategy ¶ added in v1.3.0
func (p *TokenRateLimitPolicy) GetMergeStrategy() machinery.MergeStrategy
func (*TokenRateLimitPolicy) GetName ¶ added in v1.3.0
func (p *TokenRateLimitPolicy) GetName() string
func (*TokenRateLimitPolicy) GetNamespace ¶ added in v1.3.0
func (p *TokenRateLimitPolicy) GetNamespace() string
func (*TokenRateLimitPolicy) GetStatus ¶ added in v1.3.0
func (p *TokenRateLimitPolicy) GetStatus() kuadrantgatewayapi.PolicyStatus
func (*TokenRateLimitPolicy) GetTargetRef
deprecated
added in
v1.3.0
func (p *TokenRateLimitPolicy) GetTargetRef() gatewayapiv1alpha2.LocalPolicyTargetReference
Deprecated: Use GetTargetRefs instead
func (*TokenRateLimitPolicy) GetTargetRefs ¶ added in v1.3.0
func (p *TokenRateLimitPolicy) GetTargetRefs() []machinery.PolicyTargetReference
func (*TokenRateLimitPolicy) Kind ¶ added in v1.3.0
func (p *TokenRateLimitPolicy) Kind() string
func (*TokenRateLimitPolicy) Merge ¶ added in v1.3.0
func (p *TokenRateLimitPolicy) Merge(other machinery.Policy) machinery.Policy
func (*TokenRateLimitPolicy) Rules ¶ added in v1.3.0
func (p *TokenRateLimitPolicy) Rules() map[string]kuadrantv1.MergeableRule
func (*TokenRateLimitPolicy) SetRules ¶ added in v1.3.0
func (p *TokenRateLimitPolicy) SetRules(rules map[string]kuadrantv1.MergeableRule)
type TokenRateLimitPolicyList ¶ added in v1.3.0
type TokenRateLimitPolicyList struct {
metav1.TypeMeta `json:",inline"`
metav1.ListMeta `json:"metadata,omitempty"`
Items []TokenRateLimitPolicy `json:"items"`
}
TokenRateLimitPolicyList contains a list of TokenRateLimitPolicy
func (*TokenRateLimitPolicyList) DeepCopy ¶ added in v1.3.0
func (in *TokenRateLimitPolicyList) DeepCopy() *TokenRateLimitPolicyList
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenRateLimitPolicyList.
func (*TokenRateLimitPolicyList) DeepCopyInto ¶ added in v1.3.0
func (in *TokenRateLimitPolicyList) DeepCopyInto(out *TokenRateLimitPolicyList)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*TokenRateLimitPolicyList) DeepCopyObject ¶ added in v1.3.0
func (in *TokenRateLimitPolicyList) DeepCopyObject() runtime.Object
DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
type TokenRateLimitPolicySpec ¶ added in v1.3.0
type TokenRateLimitPolicySpec struct {
// Reference to the object to which this policy applies.
// +kubebuilder:validation:XValidation:rule="self.group == 'gateway.networking.k8s.io'",message="Invalid targetRef.group. The only supported value is 'gateway.networking.k8s.io'"
// +kubebuilder:validation:XValidation:rule="self.kind == 'HTTPRoute' || self.kind == 'Gateway'",message="Invalid targetRef.kind. The only supported values are 'HTTPRoute' and 'Gateway'"
TargetRef gatewayapiv1alpha2.LocalPolicyTargetReferenceWithSectionName `json:"targetRef"`
// Rules to apply as defaults. Can be overridden by more specific policy rules lower in the hierarchy and by less specific policy overrides.
// Use one of: defaults, overrides, or bare set of policy rules (implicit defaults).
// +optional
Defaults *MergeableTokenRateLimitPolicySpec `json:"defaults,omitempty"`
// Rules to apply as overrides. Override all policy rules lower in the hierarchy. Can be overridden by less specific policy overrides.
// Use one of: defaults, overrides, or bare set of policy rules (implicit defaults).
// +optional
Overrides *MergeableTokenRateLimitPolicySpec `json:"overrides,omitempty"`
// Bare set of policy rules (implicit defaults).
// Use one of: defaults, overrides, or bare set of policy rules (implicit defaults).
TokenRateLimitPolicySpecProper `json:""`
}
+kubebuilder:validation:XValidation:rule="!(has(self.defaults) && has(self.limits))",message="Implicit and explicit defaults are mutually exclusive" +kubebuilder:validation:XValidation:rule="!(has(self.defaults) && has(self.overrides))",message="Overrides and explicit defaults are mutually exclusive" +kubebuilder:validation:XValidation:rule="!(has(self.overrides) && has(self.limits))",message="Overrides and implicit defaults are mutually exclusive" +kubebuilder:validation:XValidation:rule="!(has(self.overrides) || has(self.defaults)) ? has(self.limits) && size(self.limits) > 0 : true",message="At least one spec.limits must be defined" +kubebuilder:validation:XValidation:rule="has(self.overrides) ? has(self.overrides.limits) && size(self.overrides.limits) > 0 : true",message="At least one spec.overrides.limits must be defined" +kubebuilder:validation:XValidation:rule="has(self.defaults) ? has(self.defaults.limits) && size(self.defaults.limits) > 0 : true",message="At least one spec.defaults.limits must be defined"
func (*TokenRateLimitPolicySpec) DeepCopy ¶ added in v1.3.0
func (in *TokenRateLimitPolicySpec) DeepCopy() *TokenRateLimitPolicySpec
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenRateLimitPolicySpec.
func (*TokenRateLimitPolicySpec) DeepCopyInto ¶ added in v1.3.0
func (in *TokenRateLimitPolicySpec) DeepCopyInto(out *TokenRateLimitPolicySpec)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*TokenRateLimitPolicySpec) Proper ¶ added in v1.3.0
func (s *TokenRateLimitPolicySpec) Proper() *TokenRateLimitPolicySpecProper
type TokenRateLimitPolicySpecProper ¶ added in v1.3.0
type TokenRateLimitPolicySpecProper struct {
// When holds a list of "top-level" `Predicate`s
// +optional
kuadrantv1.MergeableWhenPredicates `json:""`
// Limits holds the struct of token-based limits indexed by a unique name
// +optional
Limits map[string]TokenLimit `json:"limits,omitempty"`
}
TokenRateLimitPolicySpecProper contains common shared fields for defaults and overrides
func (*TokenRateLimitPolicySpecProper) DeepCopy ¶ added in v1.3.0
func (in *TokenRateLimitPolicySpecProper) DeepCopy() *TokenRateLimitPolicySpecProper
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenRateLimitPolicySpecProper.
func (*TokenRateLimitPolicySpecProper) DeepCopyInto ¶ added in v1.3.0
func (in *TokenRateLimitPolicySpecProper) DeepCopyInto(out *TokenRateLimitPolicySpecProper)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
type TokenRateLimitPolicyStatus ¶ added in v1.3.0
type TokenRateLimitPolicyStatus struct {
// ObservedGeneration reflects the generation of the most recently observed spec.
// +optional
ObservedGeneration int64 `json:"observedGeneration,omitempty"`
// Represents the observations of a foo's current state.
// Known .status.conditions.type are: "Available"
// +patchMergeKey=type
// +patchStrategy=merge
// +listType=map
// +listMapKey=type
Conditions []metav1.Condition `json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions"`
}
func (*TokenRateLimitPolicyStatus) DeepCopy ¶ added in v1.3.0
func (in *TokenRateLimitPolicyStatus) DeepCopy() *TokenRateLimitPolicyStatus
DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new TokenRateLimitPolicyStatus.
func (*TokenRateLimitPolicyStatus) DeepCopyInto ¶ added in v1.3.0
func (in *TokenRateLimitPolicyStatus) DeepCopyInto(out *TokenRateLimitPolicyStatus)
DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (*TokenRateLimitPolicyStatus) GetConditions ¶ added in v1.3.0
func (s *TokenRateLimitPolicyStatus) GetConditions() []metav1.Condition