- Aula 08: nginx-ingress TCP passthrough gitlab→gitea, comments
- Aula 09: add-client.sh API GitLab→Gitea
- Aula 11: node-bugado deployment image registry.kube.quest→gitea.kube.quest
- Aula 12: setup.sh/cleanup.sh API GitLab→Gitea, ArgoCD repoURL
- Aula 13: k8s manifests, benchmarks: registry.kube.quest→gitea.kube.quest,
gitlab-registry→gitea-registry, GITLAB_TOKEN→GITEA_TOKEN
- Aula 14: comments GitLab→Gitea
- README raiz: arquitetura, tabela, DNS
130 lines
4.0 KiB
Bash
Executable File
130 lines
4.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# =============================================================================
|
|
# Benchmark de PULL: eStargz vs Traditional
|
|
# =============================================================================
|
|
#
|
|
# Mede apenas o tempo de PULL das imagens (não espera container ficar Ready)
|
|
# Executa em node limpo sem cache.
|
|
#
|
|
# =============================================================================
|
|
|
|
set -e
|
|
|
|
NAMESPACE="benchmark-pull"
|
|
ESTARGZ_IMAGE="gitea.kube.quest/factory/postgresql:17"
|
|
TRADITIONAL_IMAGE="postgres:17-alpine"
|
|
TARGET_NODE="worker-pool-6bea48339a15ab6e" # Node 128.140.11.113 - sem cache
|
|
|
|
echo "========================================================================"
|
|
echo "Benchmark de PULL: eStargz vs Traditional"
|
|
echo "========================================================================"
|
|
echo ""
|
|
echo "Target node: $TARGET_NODE (sem cache)"
|
|
echo ""
|
|
|
|
# Setup
|
|
kubectl delete namespace $NAMESPACE --ignore-not-found=true --wait=true 2>/dev/null || true
|
|
kubectl create namespace $NAMESPACE
|
|
kubectl create secret docker-registry gitea-registry \
|
|
--docker-server=gitea.kube.quest \
|
|
--docker-username=root \
|
|
--docker-password="${GITEA_TOKEN:-glpat-dummy}" \
|
|
-n $NAMESPACE 2>/dev/null || true
|
|
|
|
echo ""
|
|
echo "========================================================================"
|
|
echo "TESTE 1: Pull de Imagem Tradicional (gzip)"
|
|
echo "========================================================================"
|
|
|
|
cat <<EOF | kubectl apply -f -
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: test-traditional
|
|
namespace: $NAMESPACE
|
|
spec:
|
|
nodeName: $TARGET_NODE
|
|
restartPolicy: Never
|
|
containers:
|
|
- name: postgres
|
|
image: $TRADITIONAL_IMAGE
|
|
imagePullPolicy: Always
|
|
command: ["sleep", "infinity"]
|
|
env:
|
|
- name: POSTGRES_PASSWORD
|
|
value: test
|
|
EOF
|
|
|
|
echo "Aguardando pull..."
|
|
sleep 2
|
|
while true; do
|
|
PULLED=$(kubectl get events -n $NAMESPACE --field-selector involvedObject.name=test-traditional,reason=Pulled -o jsonpath='{.items[0].message}' 2>/dev/null)
|
|
if [ -n "$PULLED" ]; then
|
|
echo "RESULTADO: $PULLED"
|
|
break
|
|
fi
|
|
PULLING=$(kubectl get events -n $NAMESPACE --field-selector involvedObject.name=test-traditional,reason=Pulling -o jsonpath='{.items[0].message}' 2>/dev/null)
|
|
if [ -n "$PULLING" ]; then
|
|
echo -n "."
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
echo ""
|
|
echo "========================================================================"
|
|
echo "TESTE 2: Pull de Imagem eStargz (lazy pulling)"
|
|
echo "========================================================================"
|
|
|
|
cat <<EOF | kubectl apply -f -
|
|
apiVersion: v1
|
|
kind: Pod
|
|
metadata:
|
|
name: test-estargz
|
|
namespace: $NAMESPACE
|
|
spec:
|
|
nodeName: $TARGET_NODE
|
|
restartPolicy: Never
|
|
imagePullSecrets:
|
|
- name: gitea-registry
|
|
containers:
|
|
- name: postgres
|
|
image: $ESTARGZ_IMAGE
|
|
imagePullPolicy: Always
|
|
command: ["sleep", "infinity"]
|
|
env:
|
|
- name: POSTGRES_PASSWORD
|
|
value: test
|
|
EOF
|
|
|
|
echo "Aguardando pull..."
|
|
sleep 2
|
|
while true; do
|
|
PULLED=$(kubectl get events -n $NAMESPACE --field-selector involvedObject.name=test-estargz,reason=Pulled -o jsonpath='{.items[0].message}' 2>/dev/null)
|
|
if [ -n "$PULLED" ]; then
|
|
echo "RESULTADO: $PULLED"
|
|
break
|
|
fi
|
|
PULLING=$(kubectl get events -n $NAMESPACE --field-selector involvedObject.name=test-estargz,reason=Pulling -o jsonpath='{.items[0].message}' 2>/dev/null)
|
|
if [ -n "$PULLING" ]; then
|
|
echo -n "."
|
|
fi
|
|
sleep 1
|
|
done
|
|
|
|
echo ""
|
|
echo "========================================================================"
|
|
echo "RESUMO"
|
|
echo "========================================================================"
|
|
echo ""
|
|
echo "Todos os eventos de pull:"
|
|
kubectl get events -n $NAMESPACE --sort-by='.lastTimestamp' \
|
|
-o custom-columns='TIME:.lastTimestamp,REASON:.reason,POD:.involvedObject.name,MESSAGE:.message' \
|
|
| grep -E "Pull|pull"
|
|
|
|
echo ""
|
|
echo "Status dos pods:"
|
|
kubectl get pods -n $NAMESPACE -o wide
|
|
|
|
echo ""
|
|
echo "Para limpar: kubectl delete namespace $NAMESPACE"
|