Careful!
You are browsing documentation for a version of Kuma that is not the latest release.
Looking for even older versions? Learn more.
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.kind |
top level | to | from |
---|---|---|---|
Mesh |
✅ | ❌ | ✅ |
MeshSubset |
✅ | ❌ | ✅ |
MeshService |
✅ | ❌ | ✅ |
MeshServiceSubset |
✅ | ❌ | ✅ |
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 dataplane by predefined status code.
httpStatus
- HTTP status code which will be returned to source side, has to be in [100 - 599] rangepercentage
- 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 delayedpercentage
- 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, e.g. 10kbpspercentage
- 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: kuma-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 [..]
.
50.5% of requests to service backend from any service is going to be delayed by 5s
apiVersion: kuma.io/v1alpha1
kind: MeshFaultInjection
metadata:
name: default
namespace: kuma-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 [..]
.
Backend service with a list of faults that are applied for frontend service
apiVersion: kuma.io/v1alpha1
kind: MeshFaultInjection
metadata:
name: default
namespace: kuma-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 [..]
.