일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 컴퓨터공학
- AWS
- k8s
- next.js
- 타입스크립트
- CSS
- BFS
- 웹
- 가상화
- kubernetes
- 이슈
- 클라우드
- 백준
- 솔리디티
- docker
- JavaScript
- HTML
- 자바스크립트
- react
- 알고리즘
- TypeScript
- 백엔드
- 쿠버네티스
- 이더리움
- 블록체인
- VUE
- es6
- 프론트엔드
- 파이썬
- 리액트
Archives
- Today
- Total
즐겁게, 코드
jsonpath를 활용해 json에서 특정 데이터만 추출하기 본문
쿠버네티스에서 파드 내 컨테이너의 이미지 이름만 알아내고 싶었던 경우가 있었습니다.
이를 위해 --ouput
플래그를 활용해 결과값을 json 또는 yaml로 포맷팅해 상세 정보를 확인할 수도 있지만, 대부분의 템플릿은 너무나도 방대한 양의 정보를 담고 있어 원하는 정보를 찾기 쉽지 않습니다.
- 디플로이먼트를 yaml 포맷으로 출력할 경우
apiVersion: apps/v1
kind: Deployment
metadata:
...
spec
...
template:
metadata:
creationTimestamp: null
labels:
app: first-app
spec:
# 약 50줄 가까이의 yaml 템플릿 안에서 찾는 내용을 발견해야 합니다.
containers:
- image: spacesangsoo/k8s-first-app:v3
imagePullPolicy: Always
여기서 원하는 속성만을 출력하는 좋은 방법이 있는데요, 바로 json 객체를 탐색하기 위한 표준 방법인 jsonPath를 활용하는 것입니다.
JsonPath
jsonPath 문법은 대부분의 언어에서 객체 / 구조체에 접근하는 방식과 유사합니다.
예를 들어 $.metadata.name
을 사용하면 'metadata' 속성의 자식 'name' 속성을 참조하게 되는데요, 더 다양한 조건 적용 방법은 공식 문서 를 참고해 보시면 좋을 것 같습니다.
Tip. 쿠버네티스에서는 $(루트 노드를 의미하는 지시자) 를 생략해도 됩니다.
$.metadata.name (✅)
.metadata.name (✅)
metadata.name (❌)
이제 이를 응용하면 원하는 속성만을 추출해 출력할 수 있게 됩니다.
- 전체 yaml 포맷의 템플릿 대신 이미지 이름만을 출력하는 모습
매번 찾고자 하는 요소를 루트부터 찾아나가기 다소 까다로운 상황에서는, ..
연산자를 사용해 원하는 속성 이름만을 재귀적으로 찾아 출력할 수도 있습니다.
- creationTimestamp 라는 속성만을 출력하는 모습
하지만 이렇게 데이터가 여럿이라 출력이 고르지 않은 상황에서는, range... end
함수와 '\n' 문자를 사용해 개행을 줄 수도 있습니다.
- 여러 creationTimestamp 속성에 개행을 준 모습
반응형
'☁️ 클라우드 > Kubernetes' 카테고리의 다른 글
안정적인 운영을 위한 Graceful Termination 활용하기 (0) | 2022.05.17 |
---|---|
컨테이너야 잘 지내니? - 프로브 활용하기 (0) | 2022.05.15 |
쿠버네티스 사용 시 편리한 커맨드 팁 정리 (0) | 2022.05.08 |
쿠버네티스 베스트 프랙티스 - 02. 네임스페이스 활용하기 (0) | 2022.05.08 |
쿠버네티스 베스트 프랙티스 - 01. 작은 이미지 활용하기 (0) | 2022.05.07 |
Comments
소소한 팁 : 광고를 눌러주시면, 제가 뮤지컬을 마음껏 보러다닐 수 있어요!
와!! 바로 눌러야겠네요! 😆