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

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

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