trivy_activar.sh
#!/usr/bin/env bash
# Reactiva Trivy Operator con la configuración de poca carga de seguridad/trivy-operator.yaml.
#
# ./scripts/trivy_activar.sh actualiza CRDs y release, y espera a que arranque
# ./scripts/trivy_activar.sh parar lo vuelve a parar al momento (si carga demasiado un nodo)
# ./scripts/trivy_activar.sh estado pods, escaneos en curso e informes
set -euo pipefail
NS=trivy-system
RELEASE=trivy-operator
CHART=aqua/trivy-operator
VERSION=0.37.0
RAIZ="$(cd "$(dirname "$0")/.." && pwd)"
estado() {
kubectl -n "$NS" get pods -o wide
echo
echo "Escaneos en curso: $(kubectl -n "$NS" get jobs --no-headers 2>/dev/null | wc -l)"
echo "Informes de vulnerabilidades: $(kubectl get vulnerabilityreports.aquasecurity.github.io -A --no-headers 2>/dev/null | wc -l)"
}
case "${1:-activar}" in
activar)
echo "1/3 CRDs del chart $VERSION (Helm no las actualiza solo)"
TMP=$(mktemp -d)
helm repo update aqua >/dev/null
helm pull "$CHART" --version "$VERSION" -d "$TMP" --untar
kubectl apply --server-side --force-conflicts -f "$TMP/trivy-operator/crds/" >/dev/null
rm -rf "$TMP"
echo "2/3 helm upgrade $VERSION con seguridad/trivy-operator.yaml"
helm -n "$NS" upgrade "$RELEASE" "$CHART" --version "$VERSION" \
-f "$RAIZ/seguridad/trivy-operator.yaml" --wait --timeout 10m >/dev/null
echo "3/3 Reiniciar el operador (solo lee su configuración al arrancar) y estado"
kubectl -n "$NS" rollout restart deploy/trivy-operator >/dev/null
kubectl -n "$NS" rollout status deploy/trivy-operator --timeout=5m
kubectl -n "$NS" rollout status statefulset/trivy-server --timeout=10m
estado
echo
echo "✓ Trivy activo. El primer escaneo completo tarda unas horas (uno a la vez)."
echo " Si un nodo se carga demasiado: ./scripts/trivy_activar.sh parar"
;;
parar)
kubectl -n "$NS" scale deploy/trivy-operator --replicas=0
kubectl -n "$NS" delete jobs --all --wait=false
echo "✓ Trivy parado (el servidor y los informes se conservan)"
;;
estado) estado ;;
*) sed -n '2,7p' "$0"; exit 64 ;;
esac