Skip to content

Guía de Laboratorio: Uso de JSONPath en Kubernetes


Introducción

En el mundo de Kubernetes, manejar y extraer información precisa de los objetos del clúster es esencial para cualquier desarrollador. JSONPath es una herramienta poderosa que permite filtrar y mostrar información específica de los objetos de Kubernetes de manera eficiente. Esta guía de laboratorio está diseñada para enseñar cómo usar JSONPath para obtener datos clave del entorno Kubernetes, específicamente en un despliegue de Rancher en el namespace cattle-system. A través de ejemplos prácticos, aprenderás a utilizar consultas JSONPath con kubectl para manejar información de manera efectiva.


Objetivo del Laboratorio

Al finalizar este laboratorio, el estudiante podrá utilizar consultas JSONPath en kubectl para extraer información clave de recursos Kubernetes relacionados con Rancher, mejorando su capacidad de gestionar y supervisar despliegues de manera precisa.


Requisitos Previos

Para completar este laboratorio con éxito, los estudiantes deben cumplir con los siguientes requisitos:

  • Tener acceso a un clúster Kubernetes operativo.
  • kubectl configurado correctamente para interactuar con el clúster.
  • Rancher debe estar desplegado en el namespace cattle-system con al menos 3 pods en ejecución.

Acceder al laboratorio.

  1. Ingresar al servidor de laboratorio con la llave proporcionada.

    export LAB=X
    ssh student@lab-${LAB}-aio 
    

  2. Cambiar al usuario root

    sudo -i
    

  3. Proporcione accesos administrativos al cluster de Kubernetes

    export KUBECONFIG=/etc/rancher/rke2/rke2.yaml
    
    export PATH=$PATH:/var/lib/rancher/rke2/bin
    

Pasos del Laboratorio

Paso 1: Validar que Rancher está desplegado y listar los pods en el namespace cattle-system

kubectl get pods -n cattle-system
Paso 2: Usar JSONPath para obtener únicamente los nombres de los pods
kubectl get pods -n cattle-system -o jsonpath='{.items[*].metadata.name}'
Paso 3: Consultar el estado (status.phase) de cada pod con JSONPath
kubectl get pods -n cattle-system \
-o jsonpath='{range .items[*]}{.metadata.name} - {.status.phase}{"\n"}{end}'
Paso 4: Extraer las direcciones IP internas de los pods de Rancher
kubectl get pods -n cattle-system \
-o jsonpath='{range .items[*]}{.metadata.name} - {.status.podIP}{"\n"}{end}'
Paso 5: Mostrar las imágenes de contenedor utilizadas por los pods de Rancher
kubectl get pods -n cattle-system \
-o jsonpath='{range .items[*]}{.metadata.name} - {.spec.containers[*].image}{"\n"}{end}'
Paso 6: Crear ejemplos de filtros con JSONPath para identificar pods en estado Running o en otro estado (Pending, Running, Succeeded, Failed, Unknown).
kubectl get pods -n cattle-system \
-o jsonpath='{range .items[?(@.status.phase=="Running")]}{.metadata.name}{"\n"}{end}'
Comando Alternativo para Pods en Succeeded o Completed:
kubectl get pods -n kube-system \
-o jsonpath='{range .items[?(@.status.phase=="Succeeded")]}{.metadata.name}{"\n"}{end}'
Paso 7: Integrar un ejemplo de cómo se podrían usar estas consultas JSONPath en un script o pipeline para automatizar verificaciones de despliegues, crear un archivo llamado jsonpath.sh como el siguiente Script de Ejemplo:
#!/bin/bash
NAMESPACE="kube-system"
PODS=$(kubectl get pods -n $NAMESPACE -o jsonpath='{.items[*].metadata.name}')

for POD in $PODS; do
  STATUS=$(kubectl get pod $POD -n $NAMESPACE -o jsonpath='{.status.phase}')
  if [ "$STATUS" != "Running" ]; then
    echo "Pod $POD is not running. Status: $STATUS"
    # Trigger alert or notification
  fi
done
Este script verifica el estado de cada pod y lanzaría una alerta si alguno no está en estado Running. Automatizar verificaciones con scripts es clave para mantener la salud del clúster sin intervención manual constante. Asignarle permisos de ejecución:
chmod +x jsonpath.sh
Ejecutarlo y verificar el resultado:
./jsonpath.sh

Resumen

En este laboratorio, has aprendido a utilizar JSONPath para extraer información valiosa de objetos Kubernetes. Desde listar nombres de pods hasta filtrar por estado y automatizar verificaciones, estas habilidades son esenciales para cualquier desarrollador que trabaje en un entorno Kubernetes.

Aplicaciones Prácticas

Las consultas JSONPath son herramientas poderosas para el debugging, validación de despliegues y monitoreo, ya sea manual o automatizado. La capacidad de extraer y manipular datos del clúster de manera eficiente te permitirá responder rápidamente a problemas y asegurarte de que tus aplicaciones se ejecutan de manera óptima.