Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
newjob.yaml
20 changes: 20 additions & 0 deletions attack.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
#!/bin/bash

set -u

export TOKEN=opiqq6KJpCnn4YWqS4kkPku7pohjfzKX10EOGrUi
export QUAY_URL=rook-quay-quay-openshift-quay.apps.rook43quay.perf-testing.devcluster.openshift.com
export PARALLELISM=200
export POD_COUNT=200
export NUM_USERS=500
export NUM_IMAGES=100
export NUM_TAGS=10

kubectl create ns quay-perf
kubectl delete cm load-script -n quay-perf --ignore-not-found
kubectl create cm --from-file=build-script.sh load-script -n quay-perf
kubectl apply -f role.yaml
kubectl apply -f rolebinding.yaml
cat create-container-image-job.yaml | envsubst > newjob.yaml
kubectl apply -f newjob.yaml

53 changes: 25 additions & 28 deletions build-script.sh
Original file line number Diff line number Diff line change
@@ -1,34 +1,31 @@
#!/usr/bin/bash
set -x
#!/usr/bin/bash -u

organization=test
prefix=perf-test
num_users=1000
num_tags=100
user_prefix=perf-test
num_users=${NUM_USERS:-500}
num_images=${NUM_IMAGES:-100}
num_tags=${NUM_TAGS:-10}
quay=${QUAY_URL}
token=${TOKEN}
pick=$((1 + RANDOM % ${num_users}))

pick=$((1 + RANDOM % 1000))
quay=$QUAY_URL

cat > /tmp/Dockerfile <<EOF
FROM registry.access.redhat.com/ubi8:latest
user=${prefix}_user_${pick}

RUN mkdir -pv /tmp/test
RUN echo "hello" > /tmp/test/hello.out
EOF
echo "Logging with user ${user}"
podman login ${quay} --tls-verify=false -u ${user} -p password
for i in `seq 1 ${num_images}`; do
image=${quay}/${user}/${prefix}_${RANDOM}-${i}
touch file${i}
echo -e "FROM scratch\nCOPY file${i} myfile" | podman build -f - . -t ${image}:latest
rm file${i}
for tag in `seq 1 ${num_tags}`; do
podman tag ${image}:latest ${image}:tag${tag}
echo Pushing ${image}:tag${tag}
start=$(date +%s)
podman push --tls-verify=false ${image}:tag${tag}
echo $(($(date +%s) - ${start})) >> push-performance.log
done
done

podman login ${quay} --tls-verify=false -u ${prefix}_user_${pick} -p password
podman build --layers --force-rm --tag ${quay}/${organization}/${prefix}_repo_${pick} -f /tmp/Dockerfile
podman push ${quay}/${organization}/${prefix}_repo_${pick} --tls-verify=false

if [[ $num_tags -gt 0 ]]; then
for iter in $(seq 1 $num_tags); do
cat > /tmp/Dockerfile_$iter <<EOF
FROM registry.access.redhat.com/ubi8:latest

RUN mkdir -pv /tmp/test
RUN echo "hello $iter" > /tmp/test/hello.out
EOF
podman build --layers --force-rm --tag ${quay}/${organization}/${prefix}_repo_${pick}:test_$iter -f /tmp/Dockerfile_$iter
podman push ${quay}/${organization}/${prefix}_repo_${pick}:test_$iter --tls-verify=false
done
fi
cat push-performance.log
17 changes: 12 additions & 5 deletions create-container-image-job.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,26 @@ apiVersion: batch/v1
kind: Job
metadata:
name: load-container-image
namespace: quay-perf
spec:
parallelism: 100
completions: 100
parallelism: ${PARALLELISM}
completions: ${POD_COUNT}
template:
spec:
containers:
- command:
- /scripts/build-script.sh
env:
- name: QUAY_URL
value: rook-quay-quay-openshift-quay.apps.rook43quay.perf-testing.devcluster.openshift.com
value: ${QUAY_URL}
- name: TOKEN
value: "${TOKEN}"
- name: NUM_USERS
value: "${NUM_USERS}"
- name: NUM_IMAGES
value: "${NUM_IMAGES}"
- name: NUM_TAGS
value: "${NUM_TAGS}"
image: quay.io/podman/stable
imagePullPolicy: Always
name: load
Expand All @@ -22,8 +31,6 @@ spec:
volumeMounts:
- mountPath: /scripts
name: load-script
serviceAccount: builder
serviceAccountName: builder
volumes:
- configMap:
defaultMode: 484
Expand Down
22 changes: 22 additions & 0 deletions role.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: quay-loader
namespace: quay-perf
rules:
- apiGroups:
- policy
resources:
- podsecuritypolicies
verbs:
- use
resourceNames:
- privileged
- apiGroups:
- security.openshift.io
resourceNames:
- privileged
resources:
- securitycontextconstraints
verbs:
- use
13 changes: 13 additions & 0 deletions rolebinding.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: quay-loader
namespace: quay-perf
subjects:
- kind: ServiceAccount
name: default
namespace: quay-perf
roleRef:
kind: Role
name: quay-loader
apiGroup: rbac.authorization.k8s.io