TIL

30일차 docker, yaml

김영재0412 2022. 5. 30. 13:47

Amazon ECS(Elastic Container Service)

 

  • 클러스터에서 컨테이너를 쉽게 실행, 중지 및 관리할 수 있게 해주는 컨테이너 관리 서비스 입니다.
  • 간단한 API 호출을 사용하여 컨테이너 기반 애플리케이션을 시작하고 중지할 수 있습니다.

 

 

 

 

 

 

1. Amozon ECR : Amazon에서 제공하는 컨테이너 이미지 저장소 입니다. ECR 리포지토리에서 이미지 URI를 이용해 빌드한 이미지를 푸쉬하고 가져올 수 있습니다.

리포지토리에 이미지를 푸쉬할 수 있다.

 

2. Task Definition(작업 정의) : 작업 정의는 애플리케이션을 구성하는 컨테이너를 설명하는 텍스트(JSON) 입니다.

  • 시작 유형 호환성 선택(Fargate | EC2 | External)
  • 사용할 컨테이너 이미지 설정
  • 애플리케이션을 위해 개방할 포트 설정
  • CPU/메모리 리소스 할당 설정
  • 작업의 컨테이너에 사용할 데이터 볼륨 설정

 

3. Task(작업) : 작업 정의에서 정의된 설정으로 인스턴스화 하는 것입니다. Task는 Cluster에 속한 컨테이너 인스턴스(EC2 인스턴스)나 Fargate에 배포하게 됩니다.

 

 

4. Service : 클러스터에서 지정된 수의 작업을 동시에 실행하고 관리할 수 있게 해주는 구성입니다. 서비스는 Task를 포함하며, Task와 관련된 Auto Scaling과 Load Balancing을 관리합니다.

  • 시작 유형 선택(Fargate | EC2 | External)
  • 작업 정의 선택
  • 클러스터 선택
  • 서비스 이름 설정
  • 작업 개수 설정
  • 배포 유형 설정(롤링 | 블루/그린 배포)
  • 네트워크 구성(VPC, 서브넷, 보안그룹)
  • Load Balancing 설정
  • Auto Scaling 설정

 

 

 

5. Cluster(클러스터) : 작업 또는 서비스의 논리적 그룹입니다. 클러스터를 실행하여 작업을 실행할 수 있습니다.

  • 클러스터 템플릿 선택(Fargate | EC2 | External)
  • 클러스터 이름 설정

 

 

* 시작 유형

Fargate : 컨테이너를 배포하고 관리할 수 있는 서버리스 컴퓨팅 엔진
EC2 : 컨테이너를 배포하고 관리할 수 있는 클라우드 컴퓨팅 플랫폼
External : 컨테이너를 배포하고 관리할 수 있는 온프레미스 서버 또는 가상 머신

 

 

출처)https://tech.cloud.nongshim.co.kr/2021/08/30/%EC%86%8C%EA%B0%9C-amazon-ecs%EB%9E%80/

 

[소개] Amazon ECS란?

Amazon ECS(Elastic Container Service) 란? 클러스터에서 컨테이너를 쉽게 실행, 중지 및 관리할 수 있게 해주는 컨테이너 관리 서비스 입니다.간단한 API 호출을 사용하여 컨테이너 기반 애플리케이션을

tech.cloud.nongshim.co.kr

 

 


 

 

 

YAML: YAML Ain't Markup Language

 

 

구조를 가진 데이터 표현 양식의 한 종류이다.(XML,JSON 등)

데이터를 포멧에 맞게 사용하는 이유는 데이터를 주고 받을 때 서로 이해하기 쉽게 하고 타 시스템과 연동할때 생기는 문제를 미연에 방지하기 위해서이다.
예를들어 데이터를 자기만의 규칙으로 "김코딩-185-75kg" 이렇게 표현하면 작성한 당사자는 "이름-키-몸무게"라고 바로 이해할 수 있지만 규칙을 모르는 상태로 해당 데이터를 전달받은 누군가는 쉽게 이해할 수 없다.

 

위와같이 개인적으로 정의된 데이터를 서로 전달받을때마다 규칙을 함께 전달하기엔 너무 번거롭고, 데이터마다 규칙을 따로 관리하기에는 문서가 너무 많아질 수 있기에 사람들은 가독성이 높고 많은 사람들이 쓰는 데이터 형식으로 저장한다.

 

YAML은 최근 들어 많이 활용되고 있는 데이터 형식이며, 사람이 읽고 이해하기 쉬운 형태를 가지고 있다. DevOps 직군에서는 다양한 설정 파일들을 YAML 형식으로 작성하는 경우가 많으며 이때 파일 확장자는 .yml 또는 .yaml 을 사용합니다.

 

 

YAML 문법

 

1. 데이터 정의

YAML은 기본적으로 데이터를 정의 할 때, key: value 형태로 데이터를 정의한다. 이때 콜론 : 뒤에는 키와 값을 구분하기 위해 반드시 공백문자(whitespace)가 있어야 한다.

 

사용가능한 데이터 타입으로는 Number, String, Boolean이 있으며, 문자열(String)에 \n , @ 등의 특수 문자가 포함된 경우에만 따옴표(" ")를 사용하여 작성한다. Boolean 값은 True/False 외에도 On/Off, Yes/No 로 작성할 수 있다.

#주석 
Fruit: Apple
Quantity: 5
Origin: Chungju

그 뿐만 아니라, YAML 파일에서 주석을 작성해야 할 때는 해당 줄의 맨 앞에 # 을 작성한다.

 

 

2. Array / Lists

배열이나 리스트 구조의 데이터를 표현하고 싶을 때는 - 을 사용한다. - 는 배열의 한 요소를 가리킵니다. 이때 각 요소들의 순서가 중요하고1번과 2번은 각기 다른 YAML 파일이다. 또한 -를 이용하여 Array/Lists를 표현할 수도 있지만, 같은 의미로 [ ]도 사용되며 [ ]가 사용된 경우, 대괄호 안의 요소가 문자열(String)이라면 " " 를 사용한다.

순서가 다르기 때문에 각자 다른 파일이다

 

3. Dictionary / Map

계층 구조를 표현하고 싶은 경우, 기본적으로 2칸 혹은 4칸의 들여쓰기를 사용한다. 들여쓰기를 사용할 때, 각 아이템에 대해서 꼭 같은 수의 공백문자를 사용하여 들여쓰기를 해야하며 위의 Array/List 형식과는 다르게 요소들의 순서가 중요하지 않습니다.

#YAML

Fruits: 
	Name: Apple
	Quantity: 5
	Origin: Chungju

Vegetables:
	Name: Lettuces
	Quantity: 10
	Origin: Daekwan

위의 예시에서 Name, Quantity, Origin은 같은 수만큼의 들여쓰기를 했기 때문에 같은 계층으로 각각 Fruits와 Vegetables에 속한다. 이와 같이 들여쓰기를 통해 어떤 계층에 속하는지 달라지기 때문에, 들여쓰기에 주의해야한다.

 

 

 

4. Advanced

위의 데이터 구조를 섞어서 사용할 수도 있다. 아래의 예시는 Dictionary 구조를 포함하고 있는 배열의 형태를 표현하고 있으며 YAML로 작성된 것을 JSON으로 작성한 것과 비교해보면, 가독성 면에서 구조화된 데이터를 쉽게 표현할 수 있는 방법이 무엇인지 알 수 있습니다.

#YAML

Fruits:
	- Banana:
			Calories: 105
			Fat: 0.4g
			Carbs: 27g

	- Grape:
			Calories: 62
			Fat: 0.3g
			Carbs: 15g
#JSON 

{
  "Fruits": [
    {
      "Banana": {
        "Calories": 105,
        "Fat": "0.4g",
        "Carbs": "27g"
      }
    },
    {
      "Grape": {
        "Caloreis": 62,
        "Fat": "0.3g",
        "Carbs": "15g"
      }
    }
  ]
}

 

 

 

5. Multi-lines

값으로 여러 행의 문장을 작성할 때 기본적으로는 \n 을 사용한다. 예를 들면 다음과 같다.

example: "this is multiline string \n and this is nextline \n and nextline \n"

하지만 \n 을 사용하지 않고, |, >를 사용하여 줄바꿈을 할 수도 있으며 각각의 특징은 다음과 같다.

> : 이 문자는 한 줄을 모두 비웠을 때만 줄바꿈으로 인식을 하고, 그냥 줄바꿈을 할 때에는 공백문자로 인식한다.

#YAML

example1: >
  this is multiline string 
  and this is nextline 
  and nextline

example2: >
  this is multiline string 

  and this is nextline 
  and nextline
#JSON 

{
  "example1": "this is multiline string  and this is nextline  and nextline\n"
}


{
  "example2": "this is multiline string \nand this is nextline  and nextline\n"
}

 

| : 이 문자는 모든 줄바꿈을 인식하며, 마지막 문장의 끝도 마찬가지로 줄바꿈으로 인식한다.

#YAML

example1: |
  this is multiline string 
  and this is nextline 
  and nextline
JSON 

{
  "example1": "this is multiline string \nand this is nextline \nand nextline\n"
}

 

xml, json 유효성 검사

 

yaml 유효성 검사

'TIL' 카테고리의 다른 글

32일차 지속적 통합  (0) 2022.05.30
31일차 yaml  (0) 2022.05.30
29일차 docker  (0) 2022.05.30
28일차 Docker  (0) 2022.05.30
27일차 aws  (0) 2022.05.30