YAML 입문

YAML (YAML Ain't Markup Language)

YAML은 가독성이 뛰어난 데이터 직렬화 언어로 설정 파일을 기술할 때 많이 사용된다.

nginx-pod.yaml
apiVersion: v1
kind: Pod
metadata:
    name: nginx
spec:
    containers:
    - name: nginx
      image: nginx:latest

apiVersion은 키이고, v1은 값이다.

pyhon 실습

yaml-reader.py
import yaml                            ## 라이브러리 임포트
f = open("nginx-pod.yaml", "r+")       ## 파일 열기
data = yaml.load(f)                    ## YAML 파일 읽어서 변수 data에 적재

print(data["apiVersion"])
print(data["Kind"])
print(data["metadata"]

키와 값이 출력 되고 metadata의 경우 밑에 name 이 있다는 계층 구조를 표현한 것이다.

name 앞에 하이픈은 containers가 배열임을 의미하여 하이픈으로 시작하는 줄은 배열의 한 요소가 시작됨을 의미한다.

이어지는 하이픈이 없는 줄들은 하이픈이 있는 줄과 같은 요소에 포함된다.

위 YAML을 읽으면 dog, cat, bird는 각각 containers라는 배열의 한 요소가 된다.

배열의 특정 요소에 접근하기 위해서 위와 같이 몇 번째 요소인지를 지정한다.

이에 반해 하이픈이 없는 경우에는 이전 요소에 포함된다.

앞의 예에서는 dog와 cat이 배열의 0번째 요소에 포함된다.

따라서 매니페스트에서 키 name과 image는 같은 배열의 요소다.

위의 경우 containers 배열의 인덱스 0에 접근하면 위와 같이 2개의 키값 쌍이 출력된다.

하나의 파드에 2개 이상의 컨테이너를 배치하는 사이드카 패턴의 매니페스트에는 containers에 여러 개의 컨테이너를 정의한다.

들여쓰기를 하면 위와 같다. 배열을 의미하는 [ ] 안에 {}가 2개 있음을 알 수 있다.

매니페스트 YAML 작성 포인트

1. 콜론( : )의 왼쪽은 키, 오른쪽은 값

  • "apiVersion: v1"에서 apiVersion이 키, v1이 값

  • "containers"의 경우 containers가 키고 그 밑에 이어지는 내용들이 값이 된다.

2. 들여쓰기로 복합적 데이터 구조를 표현한다.

  • 키 metadata 밑에 name의 키와 값을 기술한다.

  • 키 spec 밑에 containers, volumes 등의 키와 값을 기재한다.

3. 하이픈으로 시작하는 줄은 배열의 요소가 된다. 이어서 하이픈이 없는 줄은 윗 줄과 같은 배열의 요소로 취급된다.

YAML 의 구조

Last updated