반응형
1. YAML 이란?
- 데이터 직렬화에 쓰이는 포맷/양식 중 하나
- 데이터 직렬화란?
- 서비스간에 Data 를 전송할 때 쓰이는 포맷으로 변환하는 작업
- ex) 쿠버네티스 마스터에게 요청을 보낼 때 yaml,json 파일의 형태로 요청을 보내야한다.
- 서비스간에 Data 를 전송할 때 쓰이는 포맷으로 변환하는 작업
- 다른 데이터 직렬화 포맷
- XML, JSON
- 데이터 직렬화란?
- yaml 파일 포맷
- .yaml, .yml
2. YAML 특징
다른 데이터 직렬화와 다르게 yaml 데이터 가독성이 좋다.
가독성
- 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" } ] } }
Widely-use - 다양한 툴에서 yaml 파일로 요청,활용을 한다.
- kubernetes manifests 명세
- docker compose 명세
- ansible playbook 명세
- github action workflow 명세
Strict-Validation - yaml의 자체적인 기능. 검증과정
- 줄 바꿈
- 들여쓰기
- Tab vs Space
- 줄 바꿈이랑 들여쓰기가 통일되어 있지 않다면 yaml 파일 자체에서 invild yaml 파일자체로 인식을 하게되어서 조금 더 안전한 사용을 할 수 있게 된다.
3. 문법
1) Key-Value
- Recursive 한 key-value pair 의 집합
#key : value
apiVersion: v1
kind: Pod
metadata:
name: example # key value pair
spec:
containers:
- name: busybox
image: busybox:1.25
2) 주석
- # 를 줄의 맨 앞에 작성하면 주석 처리됩니다.
# kubernetes pod exmaple 입니다.
apiVersion: v1
kind: Pod
metadata:
name: example
# 중간에 작성해도 됩니다.
spec:
# 여기도 주석을 달 수 있습니다.
containers:
- name: busybox
image: busybox:1.25
#다른 사람과 공유
#까먹을 거 대비하여 설명을 기록해놓는다.
#데이터 파일이 어떤 데이터 파일인지
#이미지 파일이 어떤 이미지인지 설명
#버전이 어떤 버전인지
3) 자료형
string
# 일반적인 문자열은 그냥 작성해도 되고, 따옴표로 감싸도 됩니다.
example: this is 1st string
example: "this is 1st string"
# 반드시 따옴표로 감싸주어야 하는 경우 :
# 1) 숫자를 문자열 타입으로 지정하고 싶은 경우
example: 123
example: "123"
# y, yes, true, false 등의 YAML 예약어와 겹치는 경우
example: "y"
# :, {, }, ,, #, *, =, \\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
4) 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
#key value pair 집합도 가능하다
#string 과 int가 같은 리스트에 넣을 수 있다.
5) Multi-line strings
|
- 중간에 위치한 빈 줄을 \\n 으로 처리하며, 문자열의 맨 마지막에 \\n 을 붙입니다.
- example: | Hello Fast Campus. # "Hello\\nFast\\nCampus.\\n" 으로 처리
>
- 중간에 위치한 빈 줄을 제외하고, 문자열의 맨 마지막에 \\n 을 붙입니다.
- example: > Hello Fast Campus. # "Hello Fast Campus.\\n" 으로 처리
|- , >-
- 각각 |, > 와 동일하되, 문자열의 맨 마지막에 \\n 이 추가되지 않습니다.
6) Multi-document yaml
- --- 라는 구분선을 통해 하나의 yaml 파일에 여러 개의 yaml document 를 작성 가능
apiVersion: v1
kind: Pod
metadata:
name: one
---
apiVersion: v1
kind: Service
metadata:
name: two
---
apiVersion: v1
kind: Deployment
metadata:
name: three
- a.yaml로 저장하고 yaml를 인식할 때는 3 개의 yaml document 로 인식
7) 복습
- 실제로 배포할 수 있는 Pod 의 명세를 작성한 yaml 예시
# key-value pairs
apiVersion: v1
kind: Pod
metadata:
name: example
labels:
hello: bye
spec:
containers:
# list
- name: busybox
image: busybox:1.25
# list
ports:
- containerPort: 80
- name: another-container
image: curlimages/curl
- 선언형 인터페이스를 위해서, Desired State 를 명시하는 용도로 사용
- 쿠버네티스에서는 어떤 pod,resouce를 생성하고 싶은 경우에는 이러한 형태로 desired states을 yaml,json 파일로 작성한 후에 cube api 서버에게 해당 yaml 파일 내용을 담아서 선언형 인터페이스로 요청을 해야한다.
#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기#온라인패키지:머신러닝서비스구축을위한실전MLOps#머신러닝서비스구축을위한실전MLOps온라인패키지Online.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
#패스트캠퍼스 #패캠챌린지 #직장인인강 #직장인자기계발 #패스트캠퍼스후기#온라인패키지:머신러닝서비스구축을위한실전MLOps#머신러닝서비스구축을위한실전MLOps온라인패키지Online.
반응형
'MLops' 카테고리의 다른 글
패스트캠퍼스 챌린지 7일차 (0) | 2022.01.30 |
---|---|
패스트캠퍼스 챌린지 6일차 (0) | 2022.01.29 |
패스트캠퍼스 챌린지 4일차 (0) | 2022.01.27 |
패스트캠퍼스 챌린지 3일차 VM/virtualbox에서 리눅스 우분투 설치하기 (0) | 2022.01.26 |
패스트캠퍼스 챌린지 2일차 (0) | 2022.01.25 |