You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
// RateLimitConfigSpec defines the desired state of RateLimitConfig
type RateLimitConfigSpec struct {
// INSERT ADDITIONAL SPEC FIELDS - desired state of cluster
// Important: Run "make" to regenerate code after modifying this file
// Version is a hash of the EnvoyResources field
// +operator-sdk:csv:customresourcedefinitions:type=spec
Version string `json:"version"`
// RateLimitInfo is the rate limit configuration
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +optional
RateLimitConfig RateLimitInfo `json:"rate_limit_config,omitempty" yaml:"rateLimitConfig"`
}
type RateLimitInfo struct {
// Name of the rate limit configuration. This should be unique for each configuration.
// +operator-sdk:csv:customresourcedefinitions:type=spec
Name string `json:"name" yaml:"name"`
// Domain name for the rate limit configuration.
// +operator-sdk:csv:customresourcedefinitions:type=spec
Domain string `json:"domain,omitempty" yaml:"domain"`
// List of rate limit configuration descriptors.
// +kubebuilder:validation:Optional
// +nullable
Descriptors *Descriptors `json:"descriptors,omitempty" yaml:"descriptors"`
}
// +kubebuilder:validation:Optional
// +nullable
// +kubebuilder:validation:MinItems=0
type Descriptors []RateLimitDescriptor
type RateLimitDescriptor struct {
// Key of the descriptor.
// +operator-sdk:csv:customresourcedefinitions:type=spec
Key string `json:"key" yaml:"key"`
// Optional value of the descriptor.
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +optional
Value string `json:"value,omitempty" yaml:"value"`
// Rate limit policy of the descriptor.
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +optional
RateLimit *RateLimitPolicy `json:"rate_limit,omitempty" yaml:"rateLimit"`
// List of sub rate limit descriptors.
// +kubebuilder:validation:Optional
// +nullable
SubDescriptors *Descriptors `json:"descriptors,omitempty" yaml:"descriptors"`
// Mark the descriptor as shadow. When the values is true, rate limit service allow requests to the backend.
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +optional
ShadowMode bool `json:"shadow_mode,omitempty" yaml:"shadowMode"`
// Setting the `detailed_metric: true` for a descriptor will extend the metrics that are produced.
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +optional
DetailedMetric bool `json:"detailed_metric,omitempty"`
}
type RateLimitPolicy struct {
// Optional name for the rate limit policy. Name the policy, if it should be replaced (dropped evaluation) by
// another policy.
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +optional
Name string `json:"name,omitempty" yaml:"name"`
// Unit of time for the rate limit.
// +operator-sdk:csv:customresourcedefinitions:type=spec
Unit RateLimitUnit `json:"unit" yaml:"unit"`
// Number of requests allowed in the policy within `unit` time.
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +optional
RequestsPerUnit uint32 `json:"requests_per_unit" yaml:"requestsPerUnit"`
// Mark the rate limit policy as unlimited. All requests are allowed to the backend.
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +optional
Unlimited bool `json:"unlimited" yaml:"unlimited"`
// List of rate limit policies, this rate limit policy will replace (drop evaluation)
// For more information: https://github.com/envoyproxy/ratelimit/tree/0b2f4d5fb04bf55e1873e2c5e2bb28da67c0643f#replaces
// Example: https://github.com/envoyproxy/ratelimit/tree/0b2f4d5fb04bf55e1873e2c5e2bb28da67c0643f#example-7
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +optional
Replaces []*RateLimitReplace `json:"replaces,omitempty" yaml:"replaces"`
}
// Replace specifies the rate limit policy that should be replaced (dropped evaluation).
// For more information: https://github.com/envoyproxy/ratelimit/tree/0b2f4d5fb04bf55e1873e2c5e2bb28da67c0643f#replaces
type RateLimitReplace struct {
// Name of the rate limit policy, that is being replaced (dropped evaluation).
// +operator-sdk:csv:customresourcedefinitions:type=spec
// +optional
Name string `json:"name,omitempty" yaml:"name"`
}
// Identifies the unit of of time for rate limit.
type RateLimitUnit int32
const (
// The time unit is not known.
RateLimitUnit_UNKNOWN RateLimitUnit = 0
// The time unit representing a second.
RateLimitUnit_SECOND RateLimitUnit = 1
// The time unit representing a minute.
RateLimitUnit_MINUTE RateLimitUnit = 2
// The time unit representing an hour.
RateLimitUnit_HOUR RateLimitUnit = 3
// The time unit representing a day.
RateLimitUnit_DAY RateLimitUnit = 4
)
Ideally, the make generate and make manifests run fine, but the moment I deploy the crd definition on K8S for the first time it give the below error.
Basically the RateLimitDescriptor struct has a field []RateLimitDescriptor, which is causing the issue.
The generated crd definition is as below,
spec:
description: RateLimitConfigSpec defines the desired state of RateLimitConfig
properties:
rate_limit_config:
description: RateLimitInfo is the rate limit configuration
properties:
descriptors:
default: {}
description: List of rate limit configuration descriptors.
items:
properties:
descriptors:
default: {}
description: List of sub rate limit descriptors.
nullable: true
Why is this error coming? What I am missing here?
The CustomResourceDefinition "ratelimitconfigs.domain.group.com" is invalid: spec.validation.openAPIV3Schema.properties[spec].properties[rate_limit_config].properties[descriptors].items.properties[descriptors].type: Required value: must not be empty for specified object fields make: *** [install] Error 1
The text was updated successfully, but these errors were encountered:
Tool Versions
CONTROLLER_TOOLS_VERSION ?= v0.15.0
This is my currect CRD definition structure,
Ideally, the make generate and make manifests run fine, but the moment I deploy the crd definition on K8S for the first time it give the below error.
Basically the RateLimitDescriptor struct has a field []RateLimitDescriptor, which is causing the issue.
The generated crd definition is as below,
Why is this error coming? What I am missing here?
The text was updated successfully, but these errors were encountered: