All skills
nodnarbnitram avatar

/kubernetes-health

@1ac816c

Comprehensive Kubernetes cluster health diagnostics using dynamic API discovery. Use when checking cluster health, troubleshooting K8s issues, or running health assessments.

Use this Skill: https://skilld.dev/gh/nodnarbnitram/claude-code-extensions/kubernetes-health

This session only. Nothing lands on disk.

referencesoperator-checks.md

≈2k tokens on demand. Your agent reads this file only when SKILL.md points to it.

Operator Health Checks Reference

Detailed health checks for each supported Kubernetes operator.

Crossplane

Provider Checks

Check kubectl Command Healthy Warning Critical
Provider pods kubectl get pods -n crossplane-system -l pkg.crossplane.io/provider All Running Some not Ready CrashLoopBackOff
Provider status kubectl get providers.pkg.crossplane.io All Healthy Some Unhealthy None Healthy
Provider revisions kubectl get providerrevisions.pkg.crossplane.io Active revision exists Multiple active No active revision

Composition Checks

Check kubectl Command Healthy Warning Critical
Composition status kubectl get compositions All present Some missing resources Composition errors
XRD status kubectl get compositeresourcedefinitions All Established Some Pending Failed

Managed Resource Checks

Check kubectl Command Healthy Warning Critical
Ready status kubectl get managed -A -o jsonpath='{.items[*].status.conditions}' All Ready=True Some Synced=False Ready=False
Sync status Filter for Synced condition All Synced Some not Synced None Synced
Last reconcile Check lastTransitionTime < 5 min ago < 30 min ago > 30 min ago

Claim Checks

Check kubectl Command Healthy Warning Critical
Claim binding kubectl get claims -A All Bound Some Pending Failed
Connection secrets Check secretRef exists All present Some missing None present

ArgoCD

Application Checks

Check kubectl Command Healthy Warning Critical
Sync status kubectl get applications.argoproj.io -A -o jsonpath='{.items[*].status.sync.status}' All Synced OutOfSync Unknown
Health status kubectl get applications.argoproj.io -A -o jsonpath='{.items[*].status.health.status}' Healthy Progressing/Suspended Degraded/Missing
Last sync time Check operationState.finishedAt < 10 min ago < 1 hour ago > 1 hour ago

AppProject Checks

Check kubectl Command Healthy Warning Critical
Project exists kubectl get appprojects.argoproj.io -A All defined Some missing None defined
RBAC configured Check spec.roles Roles defined No roles -

ApplicationSet Checks

Check kubectl Command Healthy Warning Critical
Generator status kubectl get applicationsets.argoproj.io -A All generating Some errors All failing
Generated apps Check status.conditions Apps created Some pending None created

Controller Checks

Check kubectl Command Healthy Warning Critical
Controller pod kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-application-controller Running Restarting CrashLoopBackOff
Server pod kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-server Running Restarting CrashLoopBackOff
Repo server kubectl get pods -n argocd -l app.kubernetes.io/name=argocd-repo-server Running Restarting CrashLoopBackOff

Cert-Manager

Certificate Checks

Check kubectl Command Healthy Warning Critical
Certificate status kubectl get certificates.cert-manager.io -A All Ready=True Some Pending Ready=False
Expiry (days) Check status.notAfter > 30 days 7-30 days < 7 days
Renewal status Check status.renewalTime Scheduled Overdue Failed

Issuer Checks

Check kubectl Command Healthy Warning Critical
Issuer status kubectl get issuers.cert-manager.io -A All Ready=True Some not Ready None Ready
ClusterIssuer status kubectl get clusterissuers.cert-manager.io All Ready=True Some not Ready None Ready
ACME status Check status.acme.uri Registered - Registration failed

CertificateRequest Checks

Check kubectl Command Healthy Warning Critical
Request status kubectl get certificaterequests.cert-manager.io -A All Approved Some Pending Denied
Issuance Check status.conditions Issued Pending Failed

Controller Checks

Check kubectl Command Healthy Warning Critical
Controller pod kubectl get pods -n cert-manager -l app=cert-manager Running Restarting CrashLoopBackOff
Webhook pod kubectl get pods -n cert-manager -l app=webhook Running Restarting CrashLoopBackOff
CA Injector kubectl get pods -n cert-manager -l app=cainjector Running Restarting CrashLoopBackOff

Prometheus Operator

Prometheus Instance Checks

Check kubectl Command Healthy Warning Critical
Prometheus pods kubectl get pods -l app.kubernetes.io/name=prometheus All Running Some not Ready CrashLoopBackOff
Prometheus CR kubectl get prometheus.monitoring.coreos.com -A Reconciled Pending Failed
Target discovery Check status.availableReplicas All available Some unavailable None available

AlertManager Checks

Check kubectl Command Healthy Warning Critical
AlertManager pods kubectl get pods -l app.kubernetes.io/name=alertmanager All Running Some not Ready CrashLoopBackOff
AlertManager CR kubectl get alertmanager.monitoring.coreos.com -A Reconciled Pending Failed
Config valid Check status.paused Not paused - Paused/Invalid

ServiceMonitor Checks

Check kubectl Command Healthy Warning Critical
ServiceMonitors kubectl get servicemonitors.monitoring.coreos.com -A All present Some misconfigured None discovered
Target count Query Prometheus API Targets found Some down All down

PrometheusRule Checks

Check kubectl Command Healthy Warning Critical
Rules status kubectl get prometheusrules.monitoring.coreos.com -A All loaded Some errors All failed
Rule evaluation Query Prometheus API Evaluating Some failing All failing

Operator Checks

Check kubectl Command Healthy Warning Critical
Operator pod kubectl get pods -n monitoring -l app.kubernetes.io/name=prometheus-operator Running Restarting CrashLoopBackOff

Common Patterns

Condition Checking

Most Kubernetes resources use standard conditions:

# Get all conditions for a resource
kubectl get <resource> -o jsonpath='{.items[*].status.conditions}'

# Check specific condition
kubectl get <resource> -o jsonpath='{.items[?(@.status.conditions[?(@.type=="Ready")].status=="True")].metadata.name}'

Age/Freshness Checking

# Get last transition time
kubectl get <resource> -o jsonpath='{.items[*].status.conditions[*].lastTransitionTime}'

# Compare against current time in script

Error Detection

# Get events for errors
kubectl get events --field-selector type=Warning -A

# Get pod logs for errors
kubectl logs -l app=<label> --tail=100 | grep -i error

Source: SKILL.md on GitHub

1 warning17d5 checks · Risk SAFE
  • Gen Agent Trust Hub17d

    This skill performs diagnostics on Kubernetes clusters by discovering installed operators and aggregating health scores. It is safe for its intended purpose but has a minor risk of indirect prompt injection due to its handling of untrusted data from cluster APIs.

  • Socket17d

    No alerts

  • Snyk17d

    Risk: LOW · No issues

  • Runlayer7mo

    8/8 files flagged

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at 1ac816c. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 2 months ago.

Steadyupdated 6 months ago
What it can do
Reads files Runs commands
All 5 allowed tools
ReadGrepGlobBashTask

README badge

README badge for nodnarbnitram/claude-code-extensions/kubernetes-health