JSONPath란?
JSONPath는 JSON 데이터 구조 내에서 원하는 데이터를 식별하기 위한 경로 표현 방법입니다.
주로 Kubernetes나 다양한 API 응답에서 원하는 데이터를 추출하거나 쿼리하는 데 사용됩니다.
JSONPath 패턴
- $.store.book[0].title
- JSON 데이터 구조에서 store 객체 안의 book 배열의 첫 번째 요소의 title 값에 대한 경로
- $..author
- 모든 author 키에 해당하는 값 반환
- $.store.*
- store 객체 안의 모든 키와 값 반환
- $.store..price
- store 객체 내부의 모든 price 키에 해당하는 값 반환
- $.store.book[?(@.price < 10)] :
- **price**가 10 미만인 책에 해당하는 값들을 반환합니다.
이를 통해 JSON 데이터를 쉽게 쿼리하고 원하는 데이터를 추출할 수 있습니다.
kubectl 명령어와 jsonpath를 이용하여 보고싶은 쿠버네티스 데이터 확인하기
각 노드의 이름과 노드의 CPU 수 출력
controlplane ~ ➜ kubectl get nodes -o=jsonpath='{range .items[*]}{.metadata.name}{"\\t"}{.status.capacity.cpu}{"\\n"}{end}'
서비스 이름과 해당 서비스의 노출된 포트 출력
controlplane ~ ➜ kubectl get services -o=jsonpath='{range .items[*]}{"Service Name: "}{.metadata.name}{"\\t"}{"Ports: "}{range .spec.ports[*]}{.port}{" "}{end}{"\\n"}{end}'
서비스 이름과 해당 서비스의 클러스터 IP 출력
controlplane ~ ➜ kubectl get services -o=jsonpath='{range .items[*]}{"Service Name: "}{.metadata.name}{"\\t"}{"Cluster IP: "}{.spec.clusterIP}{"\\n"}{end}'
모든 네임스페이스의 이름과 해당 네임스페이스의 상태 출력
controlplane ~ ➜ kubectl get namespaces -o=jsonpath='{range .items[*]}{"Namespace Name: "}{.metadata.name}{"\\t"}{"Phase: "}{.status.phase}{"\\n"}{end}'
'DevOps > k8s' 카테고리의 다른 글
2023-12-25 CKA 기출 feat. CKA 합격 (2) | 2023.12.28 |
---|---|
HoneyComb 오픈텔레메트리를 위한 모니터링 Tool (0) | 2023.12.14 |
[CKA] Namespace 내에 Service Account 생성 → Role 생성→ RoleBinding (0) | 2023.11.16 |
[CKA] ETCD 백업 및 복구 테스트 (0) | 2023.11.08 |
[K8s]LivenessProbe 실습할 때 생길 수 있는 트러블 슈팅 (0) | 2023.07.27 |