railiance-cluster/tools/knative-preflight.sh
codex 7bd82b281b
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 2s
Add gated Knative substrate preflight
2026-07-26 14:14:29 +02:00

33 lines
1.4 KiB
Bash
Executable file

#!/usr/bin/env bash
set -euo pipefail
# Read-only substrate probe. It never reads Secret resources.
context="$(kubectl config current-context)"
kubectl auth can-i get nodes >/dev/null
server_version="$(kubectl version -o json | jq -r '.serverVersion.gitVersion')"
node_count="$(kubectl get nodes -o json | jq '.items | length')"
ready_nodes="$(kubectl get nodes -o json | jq '[.items[] | select(any(.status.conditions[]; .type == "Ready" and .status == "True"))] | length')"
knative_crds="$(kubectl get crd -o name | grep -c 'knative.dev' || true)"
ingress_classes="$(kubectl get ingressclass -o json | jq '[.items[].metadata.name]')"
storage_classes="$(kubectl get storageclass -o json | jq '[.items[].metadata.name]')"
jq -n \
--arg context "$context" \
--arg server_version "$server_version" \
--argjson node_count "$node_count" \
--argjson ready_nodes "$ready_nodes" \
--argjson knative_crds "$knative_crds" \
--argjson ingress_classes "$ingress_classes" \
--argjson storage_classes "$storage_classes" \
'{
schema_version: "railiance.knative-preflight/v1",
collected_at: (now | todateiso8601),
collector: "railiance-cluster/tools/knative-preflight.sh",
context: $context,
kubernetes_server_version: $server_version,
nodes: {total: $node_count, ready: $ready_nodes},
knative_crd_count: $knative_crds,
ingress_classes: $ingress_classes,
storage_classes: $storage_classes,
secret_values_collected: false
}'