728x90
728x90
YAML(YAML Ain't Markup Language)
개념
- 쿠버네티스에서는 YAML 파일을 사용한다.
- YAML 파일은 데이터 직렬화에 쓰이는 포맷(양식) 중 하나이다.
- 데이터 직렬화란, 서비스 간에 데이터를 전송할 때 쓰이는 포맷으로 변환하는 작업을 의미한다.
- 예를 들어, 쿠버네티스 마스터에게 요청을 보낼 때 YAML을 사용한다.
- 데이터 직렬화에 쓰이는 다른 파일 포맷으로 XML, JSON이 있다.
- YAML 파일의 포멧은
.yaml
또는.yml
이다.
![]() |
![]() |

특징
가독성
- 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 |
---|