Flagger's load testing service is based on rakyll/hey and bojand/ghz. It can be used to generate HTTP and gRPC traffic during canary analysis when configured as a webhook.
- Kubernetes >= 1.19
Add Flagger Helm repository:
helm repo add flagger https://flagger.app
To install the chart with the release name flagger-loadtester
:
helm upgrade -i flagger-loadtester flagger/loadtester
The command deploys loadtester on the Kubernetes cluster in the default namespace.
Tip: Note that the namespace where you deploy the load tester should have the Istio, App Mesh, Linkerd or Open Service Mesh sidecar injection enabled
The configuration section lists the parameters that can be configured during installation.
To uninstall/delete the flagger-loadtester
deployment:
helm delete flagger-loadtester
The command removes all the Kubernetes components associated with the chart and deletes the release.
The following tables lists the configurable parameters of the load tester chart and their default values.
Parameter | Description | Default |
---|---|---|
image.repository |
Image repository | ghcr.io/fluxcd/flagger-loadtester |
image.pullPolicy |
Image pull policy | IfNotPresent |
image.tag |
Image tag | <VERSION> |
replicaCount |
Desired number of pods | 1 |
serviceAccountName |
Kubernetes service account name | none |
resources.requests.cpu |
CPU requests | 10m |
resources.requests.memory |
Memory requests | 64Mi |
tolerations |
List of node taints to tolerate | [] |
affinity |
node/pod affinities | node |
nodeSelector |
Node labels for pod assignment | {} |
service.type |
Type of service | ClusterIP |
service.port |
ClusterIP port | 80 |
cmd.timeout |
Command execution timeout | 1h |
cmd.namespaceRegexp |
Restrict access to canaries in matching namespaces | "" |
logLevel |
Log level can be debug, info, warning, error or panic | info |
appmesh.enabled |
Create AWS App Mesh v1beta2 virtual node | false |
appmesh.backends |
AWS App Mesh virtual services | none |
istio.enabled |
Create Istio virtual service | false |
istio.host |
Loadtester hostname | flagger-loadtester.flagger |
istio.gateway.enabled |
Create Istio gateway in namespace | false |
istio.tls.enabled |
Enable TLS in gateway ( TLS secrets should be in namespace ) | false |
istio.tls.httpsRedirect |
Redirect traffic to TLS port | false |
podPriorityClassName |
PriorityClass name for pod priority configuration | "" |
securityContext.enabled |
Add securityContext to container | "" |
securityContext.context |
securityContext to add | "" |
podDisruptionBudget.enabled |
A PodDisruptionBudget will be created if true |
false |
podDisruptionBudget.minAvailable |
The minimal number of available replicas that will be set in the PodDisruptionBudget | 1 |
Specify each parameter using the --set key=value[,key=value]
argument to helm upgrade
. For example,
helm upgrade -i flagger-loadtester flagger/loadtester \
--set "appmesh.enabled=true" \
--set "appmesh.backends[0]=podinfo" \
--set "appmesh.backends[1]=podinfo-canary"
Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example,
helm install flagger/loadtester --name flagger-loadtester -f values.yaml
Tip: You can use the default values.yaml