You are browsing unreleased documentation.
See the latest documentation here.
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
Sidecar
Builtin Gateway
Delegated Gateway
targetRef |
Allowed kinds |
targetRef.kind |
Mesh , MeshSubset , MeshService , MeshServiceSubset
|
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
namespace: kong-mesh-system
labels:
kuma.io/mesh: default # optional, defaults to `default` if it isn't configured
spec:
targetRef:
kind: MeshService
name: backend
from:
- targetRef:
kind: MeshSubset
tags:
kuma.io/service: frontend
default:
http:
- abort:
httpStatus: 500
percentage: 50
Apply the configuration with kubectl apply -f [..]
.
type: MeshFaultInjection
mesh: default
name: default-fault-injection
spec:
targetRef:
kind: MeshService
name: backend
from:
- targetRef:
kind: MeshSubset
tags:
kuma.io/service: frontend
default:
http:
- abort:
httpStatus: 500
percentage: 50
Apply the configuration with kumactl apply -f [..]
or with the HTTP API.
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
namespace: kong-mesh-system
labels:
kuma.io/mesh: default # optional, defaults to `default` if it isn't configured
spec:
targetRef:
kind: MeshService
name: backend
from:
- targetRef:
kind: MeshSubset
tags:
kuma.io/service: frontend
default:
http:
- delay:
percentage: "50.5"
value: 5s
Apply the configuration with kubectl apply -f [..]
.
type: MeshFaultInjection
mesh: default
name: default-fault-injection
spec:
targetRef:
kind: MeshService
name: backend
from:
- targetRef:
kind: Mesh
name: default
default:
http:
- delay:
percentage: "50.5"
value: 5s
Apply the configuration with kumactl apply -f [..]
or with the HTTP API.
Backend service with a list of faults that are applied for frontend service
apiVersion: kuma.io/v1alpha1
kind: MeshFaultInjection
metadata:
name: default
namespace: kong-mesh-system
labels:
kuma.io/mesh: default # optional, defaults to `default` if it isn't configured
spec:
targetRef:
kind: MeshService
name: 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
Apply the configuration with kubectl apply -f [..]
.
type: MeshFaultInjection
mesh: default
name: default-fault-injection
spec:
targetRef:
kind: MeshService
name: 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
Apply the configuration with kumactl apply -f [..]
or with the HTTP API.
All policy options