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로 인식한다.
공식 문서
참고 사이트
728x90
728x90
'DevOps > Kubernetes' 카테고리의 다른 글
[Kubernetes] 쿠버네티스(Kubernetes) (0) | 2023.05.27 |
---|