ratelimit

package
v1.6.0-beta9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 10, 2020 License: Apache-2.0 Imports: 16 Imported by: 10

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type IngressRateLimit

type IngressRateLimit struct {
	AuthorizedLimits     *v1alpha1.RateLimit `protobuf:"bytes,1,opt,name=authorized_limits,json=authorizedLimits,proto3" json:"authorized_limits,omitempty"`
	AnonymousLimits      *v1alpha1.RateLimit `protobuf:"bytes,2,opt,name=anonymous_limits,json=anonymousLimits,proto3" json:"anonymous_limits,omitempty"`
	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
	XXX_unrecognized     []byte              `json:"-"`
	XXX_sizecache        int32               `json:"-"`
}

Basic rate-limiting API

func (*IngressRateLimit) Descriptor

func (*IngressRateLimit) Descriptor() ([]byte, []int)

func (*IngressRateLimit) Equal

func (this *IngressRateLimit) Equal(that interface{}) bool

func (*IngressRateLimit) GetAnonymousLimits

func (m *IngressRateLimit) GetAnonymousLimits() *v1alpha1.RateLimit

func (*IngressRateLimit) GetAuthorizedLimits

func (m *IngressRateLimit) GetAuthorizedLimits() *v1alpha1.RateLimit

func (*IngressRateLimit) Hash added in v1.2.13

func (m *IngressRateLimit) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*IngressRateLimit) ProtoMessage

func (*IngressRateLimit) ProtoMessage()

func (*IngressRateLimit) Reset

func (m *IngressRateLimit) Reset()

func (*IngressRateLimit) String

func (m *IngressRateLimit) String() string

func (*IngressRateLimit) XXX_DiscardUnknown

func (m *IngressRateLimit) XXX_DiscardUnknown()

func (*IngressRateLimit) XXX_Marshal

func (m *IngressRateLimit) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*IngressRateLimit) XXX_Merge

func (m *IngressRateLimit) XXX_Merge(src proto.Message)

func (*IngressRateLimit) XXX_Size

func (m *IngressRateLimit) XXX_Size() int

func (*IngressRateLimit) XXX_Unmarshal

func (m *IngressRateLimit) XXX_Unmarshal(b []byte) error

type RateLimitConfigRef added in v1.5.0

type RateLimitConfigRef struct {
	Name                 string   `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Namespace            string   `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

A reference to a `RateLimitConfig` resource.

func (*RateLimitConfigRef) Descriptor added in v1.5.0

func (*RateLimitConfigRef) Descriptor() ([]byte, []int)

func (*RateLimitConfigRef) Equal added in v1.5.0

func (this *RateLimitConfigRef) Equal(that interface{}) bool

func (*RateLimitConfigRef) GetName added in v1.5.0

func (m *RateLimitConfigRef) GetName() string

func (*RateLimitConfigRef) GetNamespace added in v1.5.0

func (m *RateLimitConfigRef) GetNamespace() string

func (*RateLimitConfigRef) Hash added in v1.5.0

func (m *RateLimitConfigRef) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*RateLimitConfigRef) ProtoMessage added in v1.5.0

func (*RateLimitConfigRef) ProtoMessage()

func (*RateLimitConfigRef) Reset added in v1.5.0

func (m *RateLimitConfigRef) Reset()

func (*RateLimitConfigRef) String added in v1.5.0

func (m *RateLimitConfigRef) String() string

func (*RateLimitConfigRef) XXX_DiscardUnknown added in v1.5.0

func (m *RateLimitConfigRef) XXX_DiscardUnknown()

func (*RateLimitConfigRef) XXX_Marshal added in v1.5.0

func (m *RateLimitConfigRef) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*RateLimitConfigRef) XXX_Merge added in v1.5.0

func (m *RateLimitConfigRef) XXX_Merge(src proto.Message)

func (*RateLimitConfigRef) XXX_Size added in v1.5.0

func (m *RateLimitConfigRef) XXX_Size() int

func (*RateLimitConfigRef) XXX_Unmarshal added in v1.5.0

func (m *RateLimitConfigRef) XXX_Unmarshal(b []byte) error

type RateLimitConfigRefs added in v1.5.0

type RateLimitConfigRefs struct {
	Refs                 []*RateLimitConfigRef `protobuf:"bytes,1,rep,name=refs,proto3" json:"refs,omitempty"`
	XXX_NoUnkeyedLiteral struct{}              `json:"-"`
	XXX_unrecognized     []byte                `json:"-"`
	XXX_sizecache        int32                 `json:"-"`
}

A list of references to `RateLimitConfig` resources. Each resource represents a rate limit policy that will be independently enforced.

func (*RateLimitConfigRefs) Descriptor added in v1.5.0

func (*RateLimitConfigRefs) Descriptor() ([]byte, []int)

func (*RateLimitConfigRefs) Equal added in v1.5.0

func (this *RateLimitConfigRefs) Equal(that interface{}) bool

func (*RateLimitConfigRefs) GetRefs added in v1.5.0

func (m *RateLimitConfigRefs) GetRefs() []*RateLimitConfigRef

func (*RateLimitConfigRefs) Hash added in v1.5.0

func (m *RateLimitConfigRefs) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*RateLimitConfigRefs) ProtoMessage added in v1.5.0

func (*RateLimitConfigRefs) ProtoMessage()

func (*RateLimitConfigRefs) Reset added in v1.5.0

func (m *RateLimitConfigRefs) Reset()

func (*RateLimitConfigRefs) String added in v1.5.0

func (m *RateLimitConfigRefs) String() string

func (*RateLimitConfigRefs) XXX_DiscardUnknown added in v1.5.0

func (m *RateLimitConfigRefs) XXX_DiscardUnknown()

func (*RateLimitConfigRefs) XXX_Marshal added in v1.5.0

func (m *RateLimitConfigRefs) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*RateLimitConfigRefs) XXX_Merge added in v1.5.0

func (m *RateLimitConfigRefs) XXX_Merge(src proto.Message)

func (*RateLimitConfigRefs) XXX_Size added in v1.5.0

func (m *RateLimitConfigRefs) XXX_Size() int

func (*RateLimitConfigRefs) XXX_Unmarshal added in v1.5.0

func (m *RateLimitConfigRefs) XXX_Unmarshal(b []byte) error

type RateLimitRouteExtension

type RateLimitRouteExtension struct {
	// Whether or not to include rate limits as defined on the VirtualHost in addition to rate limits on the Route.
	IncludeVhRateLimits bool `protobuf:"varint,1,opt,name=include_vh_rate_limits,json=includeVhRateLimits,proto3" json:"include_vh_rate_limits,omitempty"`
	// Define individual rate limits here. Each rate limit will be evaluated, if any rate limit
	// would be throttled, the entire request returns a 429 (gets throttled)
	RateLimits           []*v1alpha1.RateLimitActions `protobuf:"bytes,2,rep,name=rate_limits,json=rateLimits,proto3" json:"rate_limits,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
	XXX_unrecognized     []byte                       `json:"-"`
	XXX_sizecache        int32                        `json:"-"`
}

Use this field if you want to inline the Envoy rate limits for this Route. Note that this does not configure the rate limit server. If you are running Gloo Enterprise, you need to specify the server configuration via the appropriate field in the Gloo `Settings` resource. If you are running a custom rate limit server you need to configure it yourself.

func (*RateLimitRouteExtension) Descriptor

func (*RateLimitRouteExtension) Descriptor() ([]byte, []int)

func (*RateLimitRouteExtension) Equal

func (this *RateLimitRouteExtension) Equal(that interface{}) bool

func (*RateLimitRouteExtension) GetIncludeVhRateLimits

func (m *RateLimitRouteExtension) GetIncludeVhRateLimits() bool

func (*RateLimitRouteExtension) GetRateLimits

func (m *RateLimitRouteExtension) GetRateLimits() []*v1alpha1.RateLimitActions

func (*RateLimitRouteExtension) Hash added in v1.2.13

func (m *RateLimitRouteExtension) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*RateLimitRouteExtension) ProtoMessage

func (*RateLimitRouteExtension) ProtoMessage()

func (*RateLimitRouteExtension) Reset

func (m *RateLimitRouteExtension) Reset()

func (*RateLimitRouteExtension) String

func (m *RateLimitRouteExtension) String() string

func (*RateLimitRouteExtension) XXX_DiscardUnknown

func (m *RateLimitRouteExtension) XXX_DiscardUnknown()

func (*RateLimitRouteExtension) XXX_Marshal

func (m *RateLimitRouteExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*RateLimitRouteExtension) XXX_Merge

func (m *RateLimitRouteExtension) XXX_Merge(src proto.Message)

func (*RateLimitRouteExtension) XXX_Size

func (m *RateLimitRouteExtension) XXX_Size() int

func (*RateLimitRouteExtension) XXX_Unmarshal

func (m *RateLimitRouteExtension) XXX_Unmarshal(b []byte) error

type RateLimitVhostExtension

type RateLimitVhostExtension struct {
	// Define individual rate limits here. Each rate limit will be evaluated, if any rate limit
	// would be throttled, the entire request returns a 429 (gets throttled)
	RateLimits           []*v1alpha1.RateLimitActions `protobuf:"bytes,1,rep,name=rate_limits,json=rateLimits,proto3" json:"rate_limits,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                     `json:"-"`
	XXX_unrecognized     []byte                       `json:"-"`
	XXX_sizecache        int32                        `json:"-"`
}

Use this field if you want to inline the Envoy rate limits for this VirtualHost. Note that this does not configure the rate limit server. If you are running Gloo Enterprise, you need to specify the server configuration via the appropriate field in the Gloo `Settings` resource. If you are running a custom rate limit server you need to configure it yourself.

func (*RateLimitVhostExtension) Descriptor

func (*RateLimitVhostExtension) Descriptor() ([]byte, []int)

func (*RateLimitVhostExtension) Equal

func (this *RateLimitVhostExtension) Equal(that interface{}) bool

func (*RateLimitVhostExtension) GetRateLimits

func (m *RateLimitVhostExtension) GetRateLimits() []*v1alpha1.RateLimitActions

func (*RateLimitVhostExtension) Hash added in v1.2.13

func (m *RateLimitVhostExtension) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*RateLimitVhostExtension) ProtoMessage

func (*RateLimitVhostExtension) ProtoMessage()

func (*RateLimitVhostExtension) Reset

func (m *RateLimitVhostExtension) Reset()

func (*RateLimitVhostExtension) String

func (m *RateLimitVhostExtension) String() string

func (*RateLimitVhostExtension) XXX_DiscardUnknown

func (m *RateLimitVhostExtension) XXX_DiscardUnknown()

func (*RateLimitVhostExtension) XXX_Marshal

func (m *RateLimitVhostExtension) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*RateLimitVhostExtension) XXX_Merge

func (m *RateLimitVhostExtension) XXX_Merge(src proto.Message)

func (*RateLimitVhostExtension) XXX_Size

func (m *RateLimitVhostExtension) XXX_Size() int

func (*RateLimitVhostExtension) XXX_Unmarshal

func (m *RateLimitVhostExtension) XXX_Unmarshal(b []byte) error

type ServiceSettings

type ServiceSettings struct {
	Descriptors          []*v1alpha1.Descriptor    `protobuf:"bytes,1,rep,name=descriptors,proto3" json:"descriptors,omitempty"`
	SetDescriptors       []*v1alpha1.SetDescriptor `protobuf:"bytes,2,rep,name=set_descriptors,json=setDescriptors,proto3" json:"set_descriptors,omitempty"`
	XXX_NoUnkeyedLiteral struct{}                  `json:"-"`
	XXX_unrecognized     []byte                    `json:"-"`
	XXX_sizecache        int32                     `json:"-"`
}

API based on Envoy's rate-limit service API. (reference here: https://github.com/lyft/ratelimit#configuration) Sample configuration below:

descriptors:

  • key: account_id descriptors:
  • key: plan value: BASIC rateLimit: requestsPerUnit: 1 unit: MINUTE
  • key: plan value: PLUS rateLimit: requestsPerUnit: 20 unit: MINUTE

func (*ServiceSettings) Descriptor

func (*ServiceSettings) Descriptor() ([]byte, []int)

func (*ServiceSettings) Equal

func (this *ServiceSettings) Equal(that interface{}) bool

func (*ServiceSettings) GetDescriptors

func (m *ServiceSettings) GetDescriptors() []*v1alpha1.Descriptor

func (*ServiceSettings) GetSetDescriptors added in v1.6.0

func (m *ServiceSettings) GetSetDescriptors() []*v1alpha1.SetDescriptor

func (*ServiceSettings) Hash added in v1.2.13

func (m *ServiceSettings) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*ServiceSettings) ProtoMessage

func (*ServiceSettings) ProtoMessage()

func (*ServiceSettings) Reset

func (m *ServiceSettings) Reset()

func (*ServiceSettings) String

func (m *ServiceSettings) String() string

func (*ServiceSettings) XXX_DiscardUnknown

func (m *ServiceSettings) XXX_DiscardUnknown()

func (*ServiceSettings) XXX_Marshal

func (m *ServiceSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*ServiceSettings) XXX_Merge

func (m *ServiceSettings) XXX_Merge(src proto.Message)

func (*ServiceSettings) XXX_Size

func (m *ServiceSettings) XXX_Size() int

func (*ServiceSettings) XXX_Unmarshal

func (m *ServiceSettings) XXX_Unmarshal(b []byte) error

type Settings

type Settings struct {
	RatelimitServerRef *core.ResourceRef `protobuf:"bytes,1,opt,name=ratelimit_server_ref,json=ratelimitServerRef,proto3" json:"ratelimit_server_ref,omitempty"`
	RequestTimeout     *time.Duration    `protobuf:"bytes,2,opt,name=request_timeout,json=requestTimeout,proto3,stdduration" json:"request_timeout,omitempty"`
	DenyOnFail         bool              `protobuf:"varint,3,opt,name=deny_on_fail,json=denyOnFail,proto3" json:"deny_on_fail,omitempty"`
	// Set this is set to true if you would like to rate limit traffic before applying external auth to it.
	// *Note*: When this is true, you will lose some features like being able to rate limit a request based on its auth state
	RateLimitBeforeAuth  bool     `protobuf:"varint,9,opt,name=rate_limit_before_auth,json=rateLimitBeforeAuth,proto3" json:"rate_limit_before_auth,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (*Settings) Descriptor

func (*Settings) Descriptor() ([]byte, []int)

func (*Settings) Equal

func (this *Settings) Equal(that interface{}) bool

func (*Settings) GetDenyOnFail

func (m *Settings) GetDenyOnFail() bool

func (*Settings) GetRateLimitBeforeAuth

func (m *Settings) GetRateLimitBeforeAuth() bool

func (*Settings) GetRatelimitServerRef

func (m *Settings) GetRatelimitServerRef() *core.ResourceRef

func (*Settings) GetRequestTimeout

func (m *Settings) GetRequestTimeout() *time.Duration

func (*Settings) Hash added in v1.2.13

func (m *Settings) Hash(hasher hash.Hash64) (uint64, error)

Hash function

func (*Settings) ProtoMessage

func (*Settings) ProtoMessage()

func (*Settings) Reset

func (m *Settings) Reset()

func (*Settings) String

func (m *Settings) String() string

func (*Settings) XXX_DiscardUnknown

func (m *Settings) XXX_DiscardUnknown()

func (*Settings) XXX_Marshal

func (m *Settings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Settings) XXX_Merge

func (m *Settings) XXX_Merge(src proto.Message)

func (*Settings) XXX_Size

func (m *Settings) XXX_Size() int

func (*Settings) XXX_Unmarshal

func (m *Settings) XXX_Unmarshal(b []byte) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL