Cloud Engineering/Kubernetes ⚙️

[Kubernetes] YAML 문법과 Manifest 파일 형식

minjiwoo 2023. 2. 9. 10:33
728x90

YAML

  • 데이터를 표현하기 위한 언어

흔히 서버에서 데이터를 보낼때 사용하는 JSON 처럼 데이터를 표현하는데 사용된다.

쿠버네티스에서는 YAML 과 JSON 둘 다 사용할 수 있는데, 보통 object를 정의하기 위한 Manifestfile을 작성할 때는 YAML로 작성한다.

YAML 자료형 문법 

1. 스칼라 / 스트링 : 문자열 데이터를 하나로 묶어서 사용할 수 있다. ‘’ , "" 와 같이 따옴표로 묶지 않아도 YAML에서는 문자열로 사용할 수 있다. 

kubernetes
'kubernetes'
hello kubernetes

2. 리스트 / 배열

리스트의 element들을 - 을 앞에 붙여서 표현한다. 

- apple
- banana
- cat

3. 해시 / 딕셔너리 

key, value 형식으로 데이터를 다루는 형식이다. key: value 형식으로 쓰며 : 뒤에 한칸 띄어쓰기를 해주어야 한다. 

name: Kubernetes
department: Software Engineering
address: Seoul

4. 해시들의 리스트 

-name: minjee
 age: 26
-name: leo 
 age: 27 
-name: google
 age: 33

5. 리스트를 가지는 해시 

Computer Scince:
 - Algorithm 
 - Data Structure 
 - Database 
Japanese Literature:
 - Grammar
 - Conversation

 

YAML 문법 특징

  • YAML 문자열은 유니코드 문자로 처리된다.
  • 공백 문자로 들여쓰기를 통해 계층을 구분한다. 또한 들여쓰기를 하는 공백 문자의 길이를 맞춰주어야 한다. 이를 쉽게 하기 위해서 파일을 설정할 수 있다.
  • 하나의 스트림에 있는 YAML 파일을 구분하기 위해서 시작하는 부분을 —-, 끝나는 부분을 … 로 구분한다.
    단, 이 구분은 필수적인 것은 아니며 명확하게 문서를 이해하기 위해서 표시해주는 것이다.
---
- americano
- latte
- cocoa
...
  • 주석처리는 Python처럼 #로 표시한다 
  • 확장자는 .yml 또는 .yaml 이다. 

YAML auto indent 파일 작성하기 

vim 에디터로 yaml 파일 작성시에 인덴트, 하이라이트, 들여쓰기 기능을 사용해서 작성할 수 있다.

~/.vimrc 파일에 다음과 같은 형식으로 작성한다 

syntax on
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab autoindent

 

manifest 문서의 규격

apiVersion: v1
kind: Pod
metadata:
  name: OBJECT_NAME
  labels:
    LABEL_KEY1: VALUE1
spec:
  containers:
    - name: NAME
      image: IMAGE_REPO:TAG

object를 정의하는 파일인 manifest file은 다음과 같은 형식으로 작성한다. 

728x90