diff --git a/scripts/smoke-check-tailnet-services.sh b/scripts/smoke-check-tailnet-services.sh index c800ba2..1c9c158 100644 --- a/scripts/smoke-check-tailnet-services.sh +++ b/scripts/smoke-check-tailnet-services.sh @@ -203,10 +203,36 @@ check_service() { echo "HTTP status OK for $url" } +check_flux_ui_service() { + local namespace="flux-system" + local service_name="weave-gitops-tailscale" + local hostname="flux.silverside-gopher.ts.net" + + echo "Checking $namespace/$service_name -> $hostname" + if ! retry 18 10 service_proxy_ready "$namespace" "$service_name"; then + echo "Tailscale proxy did not become Ready for $namespace/$service_name; restarting proxy and retrying" >&2 + restart_service_tailscale_proxy "$namespace" "$service_name" + if ! retry 6 10 service_proxy_ready "$namespace" "$service_name"; then + echo "Tailscale proxy pod is Ready but service condition is still stale for $namespace/$service_name; continuing with endpoint checks" >&2 + "${KUBECTL[@]}" -n "$namespace" get svc "$service_name" -o yaml >&2 || true + fi + fi + + retry 18 10 assigned_hostname_matches "$namespace" "$service_name" "$hostname" + retry 18 10 dns_resolves "$hostname" + retry 18 10 tailscale_ping_succeeds "$hostname" + "${KUBECTL[@]}" -n "$namespace" rollout status deployment/flux-system-weave-gitops --timeout=300s + "${KUBECTL[@]}" -n "$namespace" get endpointslice -l kubernetes.io/service-name="$service_name" \ + -o jsonpath='{.items[0].endpoints[0].conditions.ready}' | grep -qx 'true' + + echo "Resolved hostname: $(getent hosts "$hostname" | awk '{print $1}' | head -1)" + echo "Flux UI backend and Tailnet proxy are ready for $hostname" +} + wait_for_tailscale_operator 1200 restart_unhealthy_tailscale_proxies check_service "cattle-system" "rancher-tailscale" "rancher.silverside-gopher.ts.net" "https://rancher.silverside-gopher.ts.net/" check_service "observability" "grafana-tailscale" "grafana.silverside-gopher.ts.net" "http://grafana.silverside-gopher.ts.net/" check_service "observability" "prometheus-tailscale" "prometheus.silverside-gopher.ts.net" "http://prometheus.silverside-gopher.ts.net:9090/" -check_service "flux-system" "weave-gitops-tailscale" "flux.silverside-gopher.ts.net" "http://flux.silverside-gopher.ts.net/" +check_flux_ui_service