Programming/Server

[youtube] [Kubernetes Service] 네이버 클라우드 플랫폼의 개발자들은 컨테이너를 어떻게 사용하고 있을까?

bisi 2020. 4. 23. 11:31

네이버 클라우드 플랫폼의 개발자들은 컨테이너를 어떻게 사용하고 있을까?

https://youtu.be/-WWpJ1ZLQkw

 

 


 

네이버 클라우드 플랫폼의 개발자들은 컨테이너를 어떻게 사용하고 있을까?

 

Contents

NAVER Cloud Platform Container Registry

  1. 상품소개  

  2. 개발 목표 

  3. 쿠버네티스 활용기 

    1) Deployment 

    2) Service 

    3) Ingress

  4. Wrap-up

 

 

 

1. 상품소개

 

Container Registry 특징

> 개발자가 자신의 개발환경에서 컨테이너 이미지를 생성하고 이를 운영 환경에 배포하려는 상황

> 개발 한것을 운영 환경에 옮길때 필요한 중간 매개체가 Container Registry

> Container Registry에 올려놓으면 원격으로 어디든 가져가서 배포 가능하다.  

> Conatiner Image들이 안전하게 보관되기 때문에, 보안이나 확장성 관리포인트 고민안해도 된다.

> 운영환경에서 ReadOnly만 있는 계정을 생성하여 인증키 탈취같은 문제를 최소화 시킬 수 있다. 

 

 

 

 

2. 개발 목표

Container Registry 상품의 개발 목표

> 이런 기능을 제공하기위해 쿠버네티스의 도움을 상당수 받고 있다.

 

> 사용 방법은 Docker CLI와 웹 콘솔 두가지 방법이 있다. 

> 사용자의 요청을 적절한 컴포넌트로 라우트 하기 위해 API Routing 모듈 존재

> Core Service > Backgroud Job: 이미지 삭제와 같은 중요한 작업이어서 비동기로 처리하고 있다. 비동기 작업 처리를 지원하기 위해 Message Queue 사용 

> 이러한 컴포넌트들은 쿠버네티스의 Deployment를 이용하여 배포가 되었다. 

> 각 컴포넌트 기능들이 서로 노출하기 위해선 Service Object를 이용한다.

 

> Deployment : 상태가 없는 앱 배포를 담당, 배포시에 개발자가 운영될 컨테이너 스펙을 입력. Contrroller 역할도 담당

> Service : 클러스터의 내부, 혹은 외부로 노출 시키는 역할. 클러스터 내부에는 하드들에 대한 구분할 수 있는 매개체로 서비스가 이용될 수 도 있다. 

> Ingress : 외부에 라우팅 시키고 싶을때

 

> 쿠버네티스를 사용하는 것과 사용하지 않는 차이점.

 

 

 

3. 쿠버네티스 활용기

 

1) Deployment

> 개발자는 자신의 앱을 배포하기 위해서 컨테이너 이미지와 하드 수를 작성. 

> 이 수치는 쿠버네티스에 대한 기대 상태임. 쿠버는 이 값을 파싱하여 deploy 값과 replica set를 생성.

 

> 자가 치료 법 : 주기적으로 Health Check , config는 yaml 파일 형식으로 관리, 응답이 200이 아니면 서비스에서 제외

 

> 롤링 업데이트(Rolling Update) : 신규 Replica Set 올리는 방법 

> Replica Set 추가로 생성 -> 기존에 관리하던 pod 수를 점진적으로 줄이고 신규로 생성할 pod는 늘려간다. 그래서 서비스 중단 없이 업데이트 가능!

 

> 유용하게 사용하고 있음

> 앱과 설정값을 분리하여 파일처럼 관리 가능, 설정값은 Container에 저장하여 필요시에 import한 예

 

> 실제 사용하고 있는 컨피그 맵에 대한 yml 파일 일부

 

> 컨테이너 시작과 종료 전에 이벤트가 발생하고 이를 감지하는 기법

 

 

2) Service

서비스에서 주목해야할 점은 로드밸런스로서의 역할!

pod는 random ip를 부여받지만, 서비스는 사용자가 원하는 값으로 지정 가능하다. 

> Service도 클러스터 외부와도 노출이 가능하다. 

 

3) Ingress

L4 Layer와 같이 동작하고 pod를 밸런싱하는 역할을 한다. 

라우팅위한 기능을 담아 nginx 개발되어 있다. 

이를 이용하기 위해서 Deployment처럼 컴포넌트들 배포해줘야됨.

이용팁! 사내 시스템과 같은 On-Premise환경에서는 L4 Switch를 이용!

> 왼쪽에는 Container Registry에서 사용하고 있는 설정 값들 일부!

> host의 주소값에 따라 서비스 트래픽 라우팅

 

4. Wrap-up

 

> 앱배포와 앱 노출에 상당부분이 자동화 되어 개발에 집중할 수 있다