Add gated Knative substrate preflight
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 2s

This commit is contained in:
codex 2026-07-26 14:14:29 +02:00
parent 865bcdad02
commit 7bd82b281b
3 changed files with 103 additions and 0 deletions

33
tools/knative-preflight.sh Executable file
View file

@ -0,0 +1,33 @@
#!/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
}'