본문 바로가기

Deploy/kubernates

yaml 파일에 대하여

데이터를 표현할 수 있는 형식에는 3가지가 있다. 
흔히 볼 수 있는 JSON 파일, XML, 그리고 Yaml 파일이 있다. 흔히 야믈 파일이라고 부른다. 

 

Yaml 파일의 어원은 Yaml Ain't Markup Language 라는 뜻으로, Yaml 파일은 마크업 언어라는 뜻이 담겨있다. 데이터를 나타내는 언어이기 때문에 마크업 언어가 아니라는 것을 나타낸다. 

출처 : openXmlDeveloper

 

Docker 파일이나 Kubernates를 사용할때 yaml(또는 yml) 파일을 접하게 되는데, yml 파일은 데이터를 직렬화로 나타낸 파일이라고 보면 된다.

 

yml 파일의 List 형태 

 

yml 파일은 타 시스템 간의 데이터를 주고받을 때의 문법을 중요시 여긴다. 가독성은 좋은 것 같다. 

Key-Value쌍으로 구성되어 있으며 띄어쓰기로 데이터를 구분한다. 

 

위의 사진에서 만약 

- Apple 

  - Banana 이런 식으로 띄어쓰기가 맞지 않으면 Syntax Erorr를 발생시킨다. 

 

그리고 yaml 파일을 정의할 때 신기했던 것은 바로 콤마가 없다는 것이다.

주로 JSON 형태의 데이터로 response type 등을 정의했는데 yaml의 경우에는 콤마가 없어서 뭔가 살짝 빠진 느낌이랄까.. yaml 파일을 연습하면서 Apple, 했다가 바로 에러가 나는 상황이 있었다. 엄청 간결하게 데이터를 나타낸다는 것을 느낄 수 있었다. 

 

 

또 다른 예시를 보자면, Employee에는 Jacob에 대한 정보를 담고 있다.

 

여기서 Name, Sex, Age, Title, Projects는 서로 독립된 객체이므로 한 줄에 정보를 써준다.

그리고 Jacob이 담당하는 업무가 Automation과 Support라면 Projects 하위에서 2가지 일을 하므로, Projects 하위에 Automation과 Support 라는 데이터를 지정해 주는 것이다. 다시 말해 Automation과 Suppor가 Projects에 포함되는데, 그 포함 관계를 들여쓰기를 통해 나타낼 수 있다. 

 

또한, Projects는 2가지의 데이터를 담고 있으므로 배열인데,

이 배열 안의 데이터에 대해서는 - (하이픈)로 각각의 데이터를 나타낸다.

 

보다 복잡한 배열의 경우 하이픈 + key:value의 조합으로 적어준다. 

Employee:
  Name: Jacob
  Sex: Male
  Age: 30
  Title: Systems Engineer
  Projects:
    - Automation
    - Support
  Payslips: 
    - Month: June 
      Wage: 4000 
    - Month: July 
      Wage: 4500 
    - Month: August 
      Wage: 4000

여기서 Projects와 Payslips는 하이픈 - 뒤에 key:value 구조가 오므로 객체를 포함한 배열이다. 

 

 

 

위와 같은 형태가 key-value 쌍이 없고 단순하게 Fruits와 Vegetables에 해당하는 데이터만 - 하이픈을 이용하여 나타냈기 때문에 단순 원소 배열의 형태인 것이다. 

 

참고 https://inpa.tistory.com/entry/YAML-%F0%9F%93%9A-yaml-%EA%B0%9C%EB%85%90-%EB%AC%B8%EB%B2%95-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-%F0%9F%92%AF-%EC%B4%9D%EC%A0%95%EB%A6%AC