#!/bin/bash set -uo pipefail REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)" TALOSCONFIG="${REPO_ROOT}/talos/clusterconfig/talosconfig" KUBECONFIG_PATH="${HOME}/.kube/config" echo "## 5. Kubernetes Платформа & Нагрузки" echo "### Участники кластера Talos (OS-level):" echo '```text' timeout 5s talosctl --talosconfig="${TALOSCONFIG}" -n 10.0.20.10 -e 10.0.20.10 get members 2>&1 || echo "Talos API недоступен" echo '```' echo "### Ноды кластера K8s:" echo '```text' timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" get nodes -o wide 2>&1 || echo "K8s API недоступен" echo '```' echo "### Топологические лейблы нод (Proxmox-CSI topology):" echo '```text' timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" get nodes -L topology.kubernetes.io/zone,topology.kubernetes.io/region 2>&1 || echo "Не удалось получить лейблы нод" echo '```' echo "### Статус ExternalSecrets (Синхронизация из Vault):" echo '```text' timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" get clustersecretstores,externalsecrets -A 2>&1 || echo "Не удалось получить ExternalSecrets" echo '```' echo "### Сетевой ingress, сертификаты TLS и L2 Fast-Path VIP:" echo '```text' timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" get certificates,ingresses -A 2>&1 || echo "Не удалось получить Ingress/TLS" echo '' timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" -n kube-system get ciliuml2announcementpolicies,ciliumloadbalancerippools 2>&1 || echo "Не удалось получить Cilium L2" echo '' timeout 3s curl -k -s -o /dev/null -w "Traefik VIP (10.0.30.200:443) HTTP Status: %{http_code}\n" https://10.0.30.200 2>&1 || echo "Traefik VIP недоступен" echo '```' echo "### Диски и тома (PVC / PV):" echo '```text' timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" get pvc,pv -A 2>&1 || echo "Не удалось получить PVC" echo '```' echo "### Статус DaemonSet Proxmox-CSI Node:" echo '```text' timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" -n kube-system get daemonset proxmox-csi-plugin-node 2>&1 || echo "Не удалось получить DaemonSet CSI" echo '```' echo "### Статус пространства мониторинга (VictoriaMetrics & Grafana):" echo '```text' timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" -n monitoring get statefulsets,pods,pvc 2>&1 || echo "Не удалось получить мониторинг" echo '```' echo "### Логи ошибок Proxmox CSI Plugin (последние строки):" echo '```text' timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" -n kube-system logs -l app.kubernetes.io/name=proxmox-csi-plugin --tail=15 --prefix=true 2>&1 || echo "Нет логов CSI" echo '```' echo "### Синхронизация GitOps (FluxCD):" echo '```text' timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" get gitrepositories,kustomizations,helmreleases -A 2>&1 || echo "Flux не установлен или недоступен" echo '```' echo "### Проблемные поды (Non-Running):" echo '```text' timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" get pods -A --field-selector=status.phase!=Running 2>&1 || echo "Все поды в статусе Running" echo '```' echo "### Последние события-предупреждения (Warning Events):" echo '```text' timeout 5s kubectl --kubeconfig="${KUBECONFIG_PATH}" get events -A --field-selector type=Warning --sort-by='.lastTimestamp' 2>&1 | tail -n 15 || echo "Нет предупреждений" echo '```' echo "### Реальный объем данных OpenCloud (/var/lib/opencloud-users):" echo '```text' timeout 10s kubectl --kubeconfig="${KUBECONFIG_PATH}" -n storage exec statefulset/opencloud -c opencloud -- du -sh /var/lib/opencloud-users 2>&1 || echo "Не удалось получить размер данных OpenCloud" echo '```'