ArgoCD — алерт когда приложение drift-нулось от git-state
Кто-то сделал `kubectl edit` напрямую на cluster — manifest расходится с git. ArgoCD показывает OutOfSync, но auto-sync выключен. Манифест дальше расходится, drift накапливается.
Рецепт
#!/usr/bin/env bash
# /etc/cron.d/argocd-drift
# */10 * * * * root /opt/argocd-drift.sh
ARGO=${ARGOCD_URL:-https://argocd.internal}
TOKEN=${ARGOCD_TOKEN}
OOS=$(curl -fsS -H "Authorization: Bearer $TOKEN" "$ARGO/api/v1/applications" \
| jq -r '[.items[] | select(.status.sync.status != "Synced") | .metadata.name]')
COUNT=$(echo "$OOS" | jq 'length')
if [ "${COUNT:-0}" -gt 0 ]; then
NAMES=$(echo "$OOS" | jq -r '.[]' | head -10 | tr '\n' ',')
curl -fsS "$HEARTBEAT_URL" --data-urlencode "out_of_sync=$COUNT,apps=$NAMES"
exit 2
fi
echo "OK (all apps Synced)"
То же самое в Enterno.io
Заверните в Enterno heartbeat — daily-report «что drift-нулось вчера» поможет команде быстро восстанавливать gitops-инвариант.
Похожие рецепты
Readiness-probe внутри пода есть, но никто не видит, что LB отказался роутить трафик на новый deploy.
CrashLoopBackOff в одном пространстве имён — kubectl показывает restart-count = 47, но никто не видит. Хочется endpoint, который вернёт high когда счётчик прыгает.
etcd в кластере K8s переизбирает лидера каждые 30 сек — kube-apiserver лагает, controller-manager не успевает применять reconcile. Это видно только в etcd-метриках.