MeshFaultInjection
With the MeshFaultInjection policy you can easily test your microservices against resiliency.
This policy uses a new policy matching algorithm.
Do not combine with FaultInjection .
targetRef support matrix
targetRef
Allowed kinds
targetRef.kind
Mesh, Dataplane, MeshSubset(deprecated)
from[].targetRef.kind
Mesh, MeshSubset, MeshServiceSubset
targetRef
Allowed kinds
targetRef.kind
Mesh, MeshGateway, MeshGateway with listener tags
to[].targetRef.kind
Mesh
MeshFaultInjection isn’t supported on delegated gateways.
To learn more about the information in this table, see the matching docs .
Configuration
MeshFaultInjection allows configuring a list of HTTP faults. They execute in the same order as they were defined.
default :
http :
- abort :
httpStatus : 500
percentage : " 2.5"
delay :
value : 5s
percentage : 5
responseBandwidth :
limit : " 50Mbps"
percentage : 50
- abort :
httpStatus : 500
percentage : 10
- delay :
value : 5s
percentage : 5
It’s worth mentioning that percentage of the next filter depends on the percentage of previous ones.
http :
- abort :
httpStatus : 500
percentage : 70
- abort :
httpStatus : 503
percentage : 50
That means that for 70% of requests, it returns 500 and for 50% of the 30% that passed it returns 503.
Abort
Abort defines a configuration of not delivering requests to destination service and replacing the responses from destination data plane by
predefined status code.
httpStatus - HTTP status code which will be returned to source side, has to be in [100 - 599] range
percentage - a percentage of requests on which abort will be injected, has to be in [0.0 - 100.0] range. If the value is a double number, put it in quotes.
Delay
Delay defines a configuration of delaying a response from a destination.
value - the duration during which the response will be delayed
percentage - a percentage of requests on which abort will be injected, has to be in [0.0 - 100.0] range. If the value is a double number, put it in quotes.
ResponseBandwidth limit
ResponseBandwidth defines a configuration to limit the speed of responding to requests.
limit - represented by value measure in Gbps, Mbps, kbps, or bps, for example 10kbps
percentage - a percentage of requests on which abort will be injected, has to be in [0.0 - 100.0] range. If the value is a double number, put it in quotes.
Examples
Service backend returns 500 for 50% of requests from frontend service
apiVersion : kuma.io/v1alpha1
kind : MeshFaultInjection
metadata :
name : default-fault-injection
namespace : kuma-demo
labels :
kuma.io/mesh : default
spec :
targetRef :
kind : Dataplane
labels :
app : backend
from :
- targetRef :
kind : MeshSubset
tags :
kuma.io/service : frontend
default :
http :
- abort :
httpStatus : 500
percentage : 50
type : MeshFaultInjection
mesh : default
name : default-fault-injection
spec :
targetRef :
kind : Dataplane
labels :
app : backend
from :
- targetRef :
kind : MeshSubset
tags :
kuma.io/service : frontend
default :
http :
- abort :
httpStatus : 500
percentage : 50
50.5% of requests to service backend from any service is going to be delayed by 5 seconds
apiVersion : kuma.io/v1alpha1
kind : MeshFaultInjection
metadata :
name : default-fault-injection
namespace : kuma-demo
labels :
kuma.io/mesh : default
spec :
targetRef :
kind : Dataplane
labels :
app : backend
from :
- targetRef :
kind : Mesh
name : default
default :
http :
- delay :
percentage : ' 50.5'
value : 5s
type : MeshFaultInjection
mesh : default
name : default-fault-injection
spec :
targetRef :
kind : Dataplane
labels :
app : backend
from :
- targetRef :
kind : Mesh
name : default
default :
http :
- delay :
percentage : ' 50.5'
value : 5s
Backend service with a list of faults that are applied for frontend service
apiVersion : kuma.io/v1alpha1
kind : MeshFaultInjection
metadata :
name : default-fault-injection
namespace : kuma-demo
labels :
kuma.io/mesh : default
spec :
targetRef :
kind : Dataplane
labels :
app : backend
from :
- targetRef :
kind : MeshSubset
tags :
kuma.io/service : frontend
default :
http :
- abort :
httpStatus : 500
percentage : ' 2.5'
- abort :
httpStatus : 500
percentage : 10
- delay :
value : 5s
percentage : 5
type : MeshFaultInjection
mesh : default
name : default-fault-injection
spec :
targetRef :
kind : Dataplane
labels :
app : backend
from :
- targetRef :
kind : MeshSubset
tags :
kuma.io/service : frontend
default :
http :
- abort :
httpStatus : 500
percentage : ' 2.5'
- abort :
httpStatus : 500
percentage : 10
- delay :
value : 5s
percentage : 5
See also
All policy options
TargetRef is a reference to the resource the policy takes an effect on. The resource could be either...
show more
Kind of the referenced resource
Values: Mesh | MeshSubset | MeshGateway | MeshService | MeshExternalService | MeshMultiZoneService | MeshServiceSubset | MeshHTTPRoute | Dataplane
Name of the referenced resource. Can only be used with kinds: `MeshService`, `MeshServiceSubset` and...
show more
Namespace specifies the namespace of target resource. If empty only resources in policy namespace wi...
show more
Labels are used to select group of MeshServices that match labels. Either Labels or Name and Namespa...
show more
SectionName is used to target specific section of resource. For example, you can target port from Me...
show more
Mesh is reserved for future use to identify cross mesh resources.
ProxyTypes specifies the data plane types that are subject to the policy. When not specified, all da...
show more
Tags used to select a subset of proxies by tags. Can only be used with kinds `MeshSubset` and `MeshS...
show more
From list makes a match between clients and corresponding configurations
TargetRef is a reference to the resource that represents a group of destinations.
Kind of the referenced resource
Values: Mesh | MeshSubset | MeshGateway | MeshService | MeshExternalService | MeshMultiZoneService | MeshServiceSubset | MeshHTTPRoute | Dataplane
Name of the referenced resource. Can only be used with kinds: `MeshService`, `MeshServiceSubset` and...
show more
Namespace specifies the namespace of target resource. If empty only resources in policy namespace wi...
show more
Labels are used to select group of MeshServices that match labels. Either Labels or Name and Namespa...
show more
SectionName is used to target specific section of resource. For example, you can target port from Me...
show more
Mesh is reserved for future use to identify cross mesh resources.
ProxyTypes specifies the data plane types that are subject to the policy. When not specified, all da...
show more
Tags used to select a subset of proxies by tags. Can only be used with kinds `MeshSubset` and `MeshS...
show more
Default is a configuration specific to the group of destinations referenced in 'targetRef'
Http allows to define list of Http faults between dataplanes.
Abort defines a configuration of not delivering requests to destination service and replacing the re...
show more
HTTP status code which will be returned to source side
Percentage of requests on which abort will be injected, has to be either int or decimal represented ...
show more
Delay defines configuration of delaying a response from a destination
Percentage of requests on which delay will be injected, has to be either int or decimal represented ...
show more
The duration during which the response will be delayed
ResponseBandwidth defines a configuration to limit the speed of responding to the requests
Limit is represented by value measure in Gbps, Mbps, kbps, e.g. 10kbps
Percentage of requests on which response bandwidth limit will be either int or decimal represented a...
show more
To list makes a match between clients and corresponding configurations
TargetRef is a reference to the resource that represents a group of destinations.
Kind of the referenced resource
Values: Mesh | MeshSubset | MeshGateway | MeshService | MeshExternalService | MeshMultiZoneService | MeshServiceSubset | MeshHTTPRoute | Dataplane
Name of the referenced resource. Can only be used with kinds: `MeshService`, `MeshServiceSubset` and...
show more
Namespace specifies the namespace of target resource. If empty only resources in policy namespace wi...
show more
Labels are used to select group of MeshServices that match labels. Either Labels or Name and Namespa...
show more
SectionName is used to target specific section of resource. For example, you can target port from Me...
show more
Mesh is reserved for future use to identify cross mesh resources.
ProxyTypes specifies the data plane types that are subject to the policy. When not specified, all da...
show more
Tags used to select a subset of proxies by tags. Can only be used with kinds `MeshSubset` and `MeshS...
show more
Default is a configuration specific to the group of destinations referenced in 'targetRef'
Http allows to define list of Http faults between dataplanes.
Abort defines a configuration of not delivering requests to destination service and replacing the re...
show more
HTTP status code which will be returned to source side
Percentage of requests on which abort will be injected, has to be either int or decimal represented ...
show more
Delay defines configuration of delaying a response from a destination
Percentage of requests on which delay will be injected, has to be either int or decimal represented ...
show more
The duration during which the response will be delayed
ResponseBandwidth defines a configuration to limit the speed of responding to the requests
Limit is represented by value measure in Gbps, Mbps, kbps, e.g. 10kbps
Percentage of requests on which response bandwidth limit will be either int or decimal represented a...
show more