Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We鈥檒l occasionally send you account related emails.

Already on GitHub? Sign in to your account

Helper scripts for NLB performance tests #2292

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
105 changes: 105 additions & 0 deletions test/perf/nlb/10-lb-20-listeners-different-targets.sh
@@ -0,0 +1,105 @@
#!/bin/bash

. ./nlb-functions.sh

apply_svc() {
cat <<EOF | kubectl apply -f -
kind: Service
apiVersion: v1
metadata:
name: $1-svc
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: "nlb-ip"
spec:
ports:
- name: port1
port: 80
targetPort: 80
protocol: TCP
- name: port2
port: 891
targetPort: 81
protocol: TCP
- name: port3
port: 892
targetPort: 82
protocol: TCP
- name: port4
port: 991
targetPort: 83
protocol: TCP
- name: port5
port: 1091
targetPort: 84
protocol: TCP
- name: port6
port: 8080
targetPort: 85
protocol: TCP
- name: port7
port: 8888
targetPort: 86
protocol: TCP
- name: port8
port: 889
targetPort: 87
protocol: TCP
- name: port9
port: 8889
targetPort: 88
protocol: TCP
- name: port10
port: 83
targetPort: 89
protocol: TCP
type: NodePort
selector:
app: $1
EOF
}


main() {
echo_time "Starting Test, create 30 load balancers"
limit=30
deployment="multtlb-targetsame-"
for i in $(seq 1 $limit); do
dep="$deployment"$i
echo_time "Creating Deployment $dep"
create_deployment $dep 10

#wait_until_deployment_ready $dep

echo_time "Creating service"
apply_svc $dep
done

get_lb_name "$deployment"1-svc
echo_time "Deployed loadbalancer $lbName"
query_lb_arn $lbName

get_target_group_arn $lbArn
echo_time "TargetGroup ARN $tgtGrpArn"

check_target_group_health

for i in $(seq 1 $limit); do
svc="$deployment$i"-svc
prov=$(kubectl get svc $svc -ojsonpath='{.status.loadBalancer.ingress[0].hostname}' |awk -F- {'print $1"-"$2"-"$3"-"$4'})
echo_time "Providioned lb $prov for svc $svc"
done

echo "Press any key to proceed with resource deletion"
read anykey

for i in $(seq 1 $limit); do
dep="$deployment"$i
svc="$deployment$i"-svc
echo_time "deleting $dep and $svc"
kubectl delete deploy $dep
kubectl delete svc $svc
done
}

main $@

145 changes: 145 additions & 0 deletions test/perf/nlb/10-lb-20-listeners-same-target.sh
@@ -0,0 +1,145 @@
#!/bin/bash

. ./nlb-functions.sh

apply_svc() {
cat <<EOF | kubectl apply -f -
kind: Service
apiVersion: v1
metadata:
name: $1-svc
annotations:
service.beta.kubernetes.io/aws-load-balancer-type: "nlb-ip"
spec:
ports:
- name: port1
port: 80
targetPort: 80
protocol: TCP
- name: port2
port: 891
targetPort: 80
protocol: TCP
- name: port3
port: 892
targetPort: 80
protocol: TCP
- name: port4
port: 991
targetPort: 80
protocol: TCP
- name: port5
port: 1091
targetPort: 80
protocol: TCP
- name: port6
port: 8080
targetPort: 80
protocol: TCP
- name: port7
port: 8888
targetPort: 80
protocol: TCP
- name: port8
port: 889
targetPort: 80
protocol: TCP
- name: port9
port: 8889
targetPort: 80
protocol: TCP
- name: port10
port: 83
targetPort: 80
protocol: TCP
- name: port11
port: 84
targetPort: 80
protocol: TCP
- name: port12
port: 85
targetPort: 80
protocol: TCP
- name: port13
port: 86
targetPort: 80
protocol: TCP
- name: port14
port: 87
targetPort: 80
protocol: TCP
- name: port15
port: 88
targetPort: 80
protocol: TCP
- name: port16
port: 1231
targetPort: 80
protocol: TCP
- name: port17
port: 1232
targetPort: 80
protocol: TCP
- name: port18
port: 1233
targetPort: 80
protocol: TCP
- name: port19
port: 1234
targetPort: 80
protocol: TCP
- name: port20
port: 1235
targetPort: 80
protocol: TCP
type: NodePort
selector:
app: $1
EOF
}


main() {
echo_time "Starting Test, create 30 load balancers"
limit=30
deployment="multtlb-targetsame-"
for i in $(seq 1 $limit); do
dep="$deployment"$i
echo_time "Creating Deployment $dep"
create_deployment $dep 10

#wait_until_deployment_ready $dep

echo_time "Creating service"
apply_svc $dep
done

get_lb_name "$deployment"1-svc
echo_time "Deployed loadbalancer $lbName"
query_lb_arn $lbName

get_target_group_arn $lbArn
echo_time "TargetGroup ARN $tgtGrpArn"

check_target_group_health

for i in $(seq 1 $limit); do
svc="$deployment$i"-svc
prov=$(kubectl get svc $svc -ojsonpath='{.status.loadBalancer.ingress[0].hostname}' |awk -F- {'print $1"-"$2"-"$3"-"$4'})
echo_time "Providioned lb $prov for svc $svc"
done

echo "Press any key to proceed with resource deletion"
read anykey

for i in $(seq 1 $limit); do
dep="$deployment"$i
svc="$deployment$i"-svc
echo_time "deleting $dep and $svc"
kubectl delete deploy $dep
kubectl delete svc $svc
done
}

main $@

29 changes: 29 additions & 0 deletions test/perf/nlb/1000-pods.sh
@@ -0,0 +1,29 @@
#!/bin/bash

. ./nlb-functions.sh


main() {
echo_time "Starting Test"

echo_time "Creating Deployment"
create_deployment "perf-1000" 1000

wait_until_deployment_ready "perf-1000"

echo_time "Creating service"
create_service "perf-1000" 80 80


get_lb_name "perf-1000-svc"
echo_time "Deployed loadbalancer $lbName"
query_lb_arn $lbName

get_target_group_arn $lbArn
echo_time "TargetGroup ARN $tgtGrpArn"

check_target_group_health
}

main $@

52 changes: 52 additions & 0 deletions test/perf/nlb/1000-targets-pod-readiness.gate.sh
@@ -0,0 +1,52 @@
#!/bin/bash

. ./nlb-functions.sh


main() {
echo_time "Starting Test"
ns=readiness
deployment="perf-1000-scale-pr"

kubectl create namespace $ns
kubectl label namespaces $ns elbv2.k8s.aws/pod-readiness-gate-inject=enabled

sleep 2
echo_time "Creating service"
create_service $deployment 80 80 $ns

# Wait for the service to get reconciled
sleep 2

echo_time "Creating Deployment"
create_deployment $deployment 1 $ns

wait_until_deployment_ready $deployment $ns

get_lb_name "$deployment"-svc $ns
echo_time "Deployed loadbalancer $lbName"
query_lb_arn $lbName

get_target_group_arn $lbArn
echo_time "TargetGroup ARN $tgtGrpArn"

#check_target_group_health

echo_time "Scaling deployment to 1000 replicas"
kubectl scale deployment $deployment -n $ns --replicas=1000
#echo_time "Scaling deployment to 3 replicas"
#kubectl scale deployment $deployment -n $ns --replicas=3
wait_until_deployment_ready $deployment $ns
get_lb_name "$deployment"-svc $ns
echo_time "Deployed loadbalancer $lbName"
query_lb_arn $lbName

get_target_group_arn $lbArn
echo_time "TargetGroup ARN $tgtGrpArn"

check_target_group_health 1000
kubectl delete namespace readiness
}

main $@

60 changes: 60 additions & 0 deletions test/perf/nlb/30-lb.sh
@@ -0,0 +1,60 @@
#!/bin/bash

. ./nlb-functions.sh


main() {
echo_time "Starting Test, create 30 load balancers"
limit=30
deployment="thirtylb-perf-"
for i in $(seq 1 $limit); do
dep="$deployment"$i
echo_time "Creating Deployment $dep"
create_deployment $dep 10

echo_time "Creating service"
create_service $dep 80 80

done


get_lb_name "$deployment"1-svc
echo_time "Deployed loadbalancer $lbName"
query_lb_arn $lbName

get_target_group_arn $lbArn
echo_time "TargetGroup ARN $tgtGrpArn"

check_target_group_health

for i in $(seq 1 $limit); do
dep="$deployment"$i
svc="$deployment$i"-svc
prov=$(kubectl get svc $svc -ojsonpath='{.status.loadBalancer.ingress[0].hostname}' |awk -F- {'print $1"-"$2"-"$3"-"$4'})
echo_time "Providioned lb $prov for svc $svc"
get_lb_name $svc

echo_time "Deployed loadbalancer $lbName"
query_lb_arn $lbName

get_target_group_arn $lbArn
echo_time "TargetGroup ARN $tgtGrpArn"

check_target_group_health
done

echo "Press any key to proceed with resource deletion"
read anykey

for i in $(seq 1 $limit); do
dep="$deployment"$i
svc="$deployment$i"-svc
echo_time "deleting $dep and $svc"
kubectl delete deploy $dep
kubectl delete svc $svc
done

}

main $@