Phase5 k8s-deployment-validator

K8s Deployment Validator Skill

install
source · Clone the upstream repo
git clone https://github.com/SyedaNabila559/phase5
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/SyedaNabila559/phase5 "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/k8s-deployment-validator" ~/.claude/skills/syedanabila559-phase5-k8s-deployment-validator && rm -rf "$T"
manifest: .claude/skills/k8s-deployment-validator/skill.md
source content

K8s Deployment Validator Skill

Purpose

This skill provides a comprehensive validation checklist and commands to verify successful Kubernetes deployments, including checking pod status, services, deployments, logs, and functionality testing for frontend and backend components including chatbot functionality.

Capabilities

  • Generate comprehensive deployment validation checklist
  • Execute kubectl commands to check pods, services, and deployments
  • Analyze application logs for errors or warnings
  • Test connectivity via curl and port-forward
  • Verify frontend and backend functionality
  • Validate chatbot functionality specifically
  • Generate validation reports

Implementation Details

Deployment Status Checks

  • Verify all pods are running and ready
  • Check service availability and endpoints
  • Confirm deployment rollout status
  • Validate replica counts match expectations
  • Check resource allocations

Log Analysis

  • Examine pod logs for errors or warnings
  • Look for startup success messages
  • Identify any recurring error patterns
  • Check for application-specific health indicators
  • Validate that no crash loops are occurring

Connectivity Testing

  • Test frontend accessibility via curl or browser
  • Verify backend /api/health endpoints
  • Check inter-service communication
  • Validate external service access
  • Test load balancer/service exposure

Chatbot Functionality Validation

  • Verify chatbot interface loads correctly
  • Test basic chat functionality
  • Validate API endpoints for chat features
  • Check for proper authentication/integration
  • Ensure message sending and receiving works

Usage

Complete Validation Checklist:

1. Basic Resource Status

# Check all pods status
kubectl get pods

# Check all services
kubectl get svc

# Check all deployments
kubectl get deploy

# Check all replicasets
kubectl get rs

# Check all daemonsets (if applicable)
kubectl get ds

2. Detailed Resource Information

# Get detailed pod information
kubectl get pods -o wide

# Check pod descriptions for events
kubectl describe pods

# Check service details
kubectl describe svc

# Check deployment details
kubectl describe deploy

3. Log Analysis

# Check logs for all pods in default namespace
kubectl get pods --no-headers -o custom-columns=":metadata.name" | xargs -I {} kubectl logs {}

# Check logs for specific application pods
kubectl logs -l app={app-name}

# Check previous container logs (useful for crashed containers)
kubectl logs -l app={app-name} --previous

# Follow logs in real-time
kubectl logs -l app={app-name} -f

4. Service Connectivity Tests

# Port forward to frontend
kubectl port-forward svc/{frontend-service-name} 3000:3000

# In another terminal, test frontend access
curl http://localhost:3000

# Port forward to backend
kubectl port-forward svc/{backend-service-name} 8000:8000

# Test backend health endpoint
curl http://localhost:8000/api/health

5. End-to-End Functionality Tests

# Test API endpoints
curl http://localhost:8000/api/

# Test specific chatbot endpoints
curl http://localhost:8000/api/chat

# Test chatbot functionality with sample request
curl -X POST http://localhost:8000/api/chat -H "Content-Type: application/json" -d '{"message": "Hello"}'

Automated Validation Script Template:

#!/bin/bash

NAMESPACE="{namespace}"
APP_NAME="{app-name}"

echo "Starting deployment validation for $APP_NAME in $NAMESPACE..."

# Check if all pods are running
echo "Checking pod status..."
POD_STATUS=$(kubectl get pods -n $NAMESPACE --no-headers | awk '{print $3}' | uniq)
if [[ "$POD_STATUS" == *"Running"* ]]; then
  echo "✓ All pods are running"
else
  echo "✗ Some pods are not running: $POD_STATUS"
  exit 1
fi

# Check if all pods are ready
echo "Checking pod readiness..."
NOT_READY=$(kubectl get pods -n $NAMESPACE --no-headers | awk '$2 != $1 {print $0}')
if [[ -z "$NOT_READY" ]]; then
  echo "✓ All pods are ready"
else
  echo "✗ Some pods are not ready:"
  echo "$NOT_READY"
  exit 1
fi

# Check deployment status
echo "Checking deployment status..."
DEPLOY_STATUS=$(kubectl get deploy -n $NAMESPACE --no-headers | awk '{print $2 "/" $2}')
if [[ "$DEPLOY_STATUS" =~ ^([0-9]+)/\1$ ]]; then
  echo "✓ All deployments have correct replica counts"
else
  echo "✗ Deployments have incorrect replica counts: $DEPLOY_STATUS"
  exit 1
fi

# Test service connectivity
echo "Testing service connectivity..."
FRONTEND_SVC=$(kubectl get svc -n $NAMESPACE -l app=$APP_NAME-frontend --no-headers | awk '{print $1}')
BACKEND_SVC=$(kubectl get svc -n $NAMESPACE -l app=$APP_NAME-backend --no-headers | awk '{print $1}')

if [[ ! -z "$FRONTEND_SVC" ]]; then
  echo "Testing frontend service: $FRONTEND_SVC"
  # Test can be performed if service is accessible
fi

if [[ ! -z "$BACKEND_SVC" ]]; then
  echo "Testing backend service: $BACKEND_SVC"
  # Port forward and test health endpoint
  kubectl port-forward -n $NAMESPACE svc/$BACKEND_SVC 8000:8000 &
  PORT_FWD_PID=$!
  sleep 5  # Give time for port forward to establish

  HEALTH_RESPONSE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8000/api/health)
  if [[ "$HEALTH_RESPONSE" == "200" ]]; then
    echo "✓ Backend health check passed"
  else
    echo "✗ Backend health check failed with status: $HEALTH_RESPONSE"
    kill $PORT_FWD_PID
    exit 1
  fi

  kill $PORT_FWD_PID
fi

echo "✓ All validation checks passed!"

Chatbot-Specific Validation Commands:

# Verify chatbot service is running
kubectl get svc -l app={chatbot-app-name}

# Check if chatbot pods are healthy
kubectl get pods -l app={chatbot-app-name} -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.phase}{"\t"}{.status.containerStatuses[0].ready}{"\n"}'

# Test chatbot API endpoint
kubectl exec -it $(kubectl get pods -l app={chatbot-app-name} -o jsonpath='{.items[0].metadata.name}') -- curl -s localhost:{port}/api/health

# Port forward and test chatbot functionality
kubectl port-forward svc/{chatbot-service-name} 3000:3000
# Then test in browser or with curl

Validation Report Template:

Deployment Validation Report
============================

Timestamp: {timestamp}
Environment: {environment}
Application: {application}

1. Resource Status:
   ✓ Pods: All {count} pods running and ready
   ✓ Services: All {count} services available
   ✓ Deployments: All {count} deployments with correct replicas

2. Log Analysis:
   ✓ No critical errors found in application logs
   ✓ Startup completed successfully
   ✓ No crash loops detected

3. Connectivity Tests:
   ✓ Frontend accessible via service
   ✓ Backend /api/health returning 200
   ✓ Cross-service communication functional

4. Chatbot Functionality:
   ✓ Chat interface loads correctly
   ✓ Message sending/receiving working
   ✓ API endpoints responding appropriately

Status: VALIDATION PASSED