33 lines
1.4 KiB
Bash
Executable file
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
|
|
}'
|