Skip to content

Operator Performance Testsuite

This testsuite covers performance of the operator.

Prepare cluster / minikube

minikube delete
minikube config set driver hyperkit
minikube config set memory 8192
minikube config set cpus 4
minikube start --addons ingress,dashboard,metrics-server

echo "$(minikube ip) minikube.info operator-spaship.minikube.info simple-dev-spaship-examples.minikube.info simple-prod-spaship-examples.minikube.info advanced-dev-spaship-examples.minikube.info advanced-prod-spaship-examples.minikube.info" | sudo tee -a /etc/hosts

Deploy Operator

kubectl create namespace spaship
# Operator configuration
kubectl create configmap -n spaship spaship-operator-config \
        --from-literal=APP_OPERATOR_ROUTER_MODE=ingress \
        --from-literal=APP_OPERATOR_WEBSITE_DOMAIN=minikube.info
# Operator
kubectl apply -n spaship -f manifests/install.yaml
kubectl apply -n spaship -f manifests/minikube/ingress.yaml

Operator is available under https://operator-spaship.minikube.info/.

Deploy sample website

Deploy Website

kubectl create namespace spaship-examples
kubectl apply -n spaship-examples -f tests/performance/simple/deployment-simple-dev.yaml

And watch:

kubectl get -n spaship-examples websites.spaship.io -w

Prepare Watch Windows

Watch operator deployments:

kubectl get -n spaship deployment -w

Dashboard:

minikube dashboard

Webhook 1 - no matched website or components

Run jmeter

cd tests/performance/operator
$JMETER/bin/jmeter.sh -t perftest-operator-webhook.jmx &

Configuration

  • 1 requests URL: webhook - no matched website or components
  • 10 concurrent requests
  • 10000 loops

500m CPU, 2 replicas

kubectl apply -n spaship -f patch-cpu-500m.yaml
kubectl scale -n spaship --replicas=2 deployment spaship-operator

Website is available under simple-dev-spaship-examples.minikube.info

500m CPU, 4 replicas

kubectl apply -n spaship-examples -f patch-cpu-500m.yaml
kubectl scale -n spaship --replicas=4 deployment spaship-operator

1000m CPU, 2 replicas

kubectl apply -n spaship -f patch-cpu-1000m.yaml
kubectl scale -n spaship --replicas=2 deployment spaship-operator

Cleanup

kubectl delete -n spaship-examples websites.spaship.io --all

Results

2021-03-04

Model Identifier:   MacBookPro16,1
Processor Name: 6-Core Intel Core i7
Processor Speed:    2,6 GHz
Number of Processors:   1
Total Number of Cores:  6
L2 Cache (per Core):    256 KB
L3 Cache:   12 MB
Hyper-Threading Technology: Enabled
Memory: 32 GB
CPU Replicas Webhook 1
500m 2 527
500m 4 800
1000m 2 1200

Result numbers are throughput requests/second.