728x90
728x90

YAML(YAML Ain't Markup Language)

개념

  • 쿠버네티스에서는 YAML 파일을 사용한다.
  • YAML 파일데이터 직렬화에 쓰이는 포맷(양식) 중 하나이다.
    • 데이터 직렬화란, 서비스 간에 데이터를 전송할 때 쓰이는 포맷으로 변환하는 작업을 의미한다.
    • 예를 들어, 쿠버네티스 마스터에게 요청을 보낼 때 YAML을 사용한다.
  • 데이터 직렬화에 쓰이는 다른 파일 포맷으로 XML, JSON이 있다.
  • YAML 파일의 포멧은 .yaml 또는 .yml이다.
데이터 직렬화와 역직렬화의 예
Data Serialization

YAML Logo

 

특징

가독성

  • YAML사람이 읽기 쉽도록 디자인되어 있다.

 

YAML 포맷
apiVersion: v1
kind: Pod
metadata:
name: example
spec:
containers:
- name: busybox
image: busybox:1.25

 

JSON 포맷
{
"apiVersion": "v1",
"kind": "Pod",
"metadata": {
"name": "example"
},
"spec": {
"containers": [
{
"name": "busybox",
"image": "busybox:1.25"
}
]
}
}

 

문법

① Key-Value

  • YAML은 Recursive한 Key-Value Pair의 집합이다.
apiVersion: v1
kind: Pod
metadata:
name: example
spec:
containers:
- name: busybox
image: busybox:1.25

 

② 주석

  • #을 줄의 맨 앞에 작성하면 주석 처리가 된다.
# 쿠버네티스 Pod Example 입니다.
apiVersion: v1
kind: Pod
metadata:
name: example
# 중간에 작성해도 됩니다.
spec:
# 여기에도 주석을 달 수 있습니다.
containers:
- name: busybox
image: busybox:1.25

 

③ 자료형

string

  • 가독성을 위해서 따옴표로 감싸는 방법을 사용하는 것이 권장된다.
# 일반적인 문자열은 그냥 작성해도 되고, 따옴표로 감싸도 된다.
example: this is 1st string
example: "this is 1st string"

 

  •  다음과 같은 경우에는 반드시 따옴표로 감싸주어야 한다.
# 1) 숫자를 문자열 타입으로 지정하고 싶은 경우
example: 123
example: "123"
# 2) y, yes, true 등의 YAML 예약어와 겹치는 경우
example: "y"
# 3) :, {, }, ,, #, *, =, \n 등의 특수 문자를 포함한 경우
example: "a : b"
example: "a#bc*"

 

integer

# integer type
example: 123
# hexadecimal type: 0x로 시작
example: 0x1fff

 

float

# float type
example: 99.9
# exponential type
example: 1.23e+03 # 1.23 x 10^{3} = 1230

 

boolean

# True
example: true
example: yes
example: on
# False
example: false
example: no
example: off

 

④ List

# - 를 사용하여 List를 명시할 수 있다.
examples:
- ex_one: 1
- ex_two: 2
# [ ]로 입력해도 된다.
examples: ["1", "2", "3"]
# List의 원소는 어떤 자료형이든 가능하다.
spec:
containers:
- name: busybox
image: busybox:1.25
- name: ubuntu
image: ubuntu
commands:
- sleep
- 3600
- name: python
image: python:3.9

 

⑤ Multi-line Strings

|

  • 중간에 위치한 빈 줄\n으로 처리하며, 문자열의 맨 마지막에 \n을 붙인다.
example: |
Hello
Fast
World.
# "Hello\nFast\nWorld.\n"으로 처리

 

>

  • 중간에 위치한 빈 줄을 제외하고, 문자열의 맨 마지막에 \n을 붙인다.
example: >
Hello
Fast
World.
# "Hello Fast World.\n"으로 처리

 

|-, >-

  • 각각 |, >와 동일하되, 문자열의 맨 마지막에 \n이 추가되지 않는다.
example: |-
Hello
Fast
World.
# "Hello\nFast\nWorld."으로 처리
example: >-
Hello
Fast
World.
# "Hello Fast World."으로 처리

 

⑥ Multi-document YAML

  • --- 라는 구분선을 통해 하나의 YAML 파일에 여러 개의 YAML Document를 작성할 수 있다.
apiVersion: v1
kind: Pod
metadata:
name: one
---
apiVersion: v2
kind: Service
metadata:
name: two
---
apiVersion: v3
kind: Deployment
metadata:
name: three
# 3개의 YAML Document로 인식한다.

 

공식 문서

 

YAML Syntax — Ansible Documentation

© Copyright Ansible project contributors. Last updated on Mar 30, 2023.

docs.ansible.com

 

참고 사이트

 

YAML - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. YAML은 XML, C, 파이썬, 펄, RFC2822에서 정의된 e-mail 양식에서 개념을 얻어 만들어진 '사람이 쉽게 읽을 수 있는' 데이터 직렬화 양식이다. 2001년에 클라크 에반스가

ko.wikipedia.org

 

YAML - 나무위키

일반적으로 설정파일로 사용하기에 더할 나위없이 좋은 형식이기 때문에 여러 프레임워크나 CI툴에서 설정파일로 쓰이고 있다. Flutter: dart패키지를 관리하기 위해 pubspec.yaml에 설정을 저장한다.d

namu.wiki

 

YAML이란?

YAML은 구성 파일 작성에 자주 사용되는 데이터 직렬화 언어입니다. YAML은 사람이 읽을 수 있기 때문에 프로그래밍 언어 중에서도 인기가 높습니다.

www.redhat.com

728x90
728x90

'DevOps > Kubernetes' 카테고리의 다른 글

[Kubernetes] 쿠버네티스(Kubernetes)  (0) 2023.05.27

YAML(YAML Ain't Markup Language)개념특징가독성문법① Key-Value② 주석③ 자료형stringintegerfloatboolean④ List⑤ Multi-line Strings|>|-, >-⑥ Multi-document YAML공식 문서참고 사이트