쿠버네티스가 클라우드 환경에서 쉽고 간편하게 개발을 도와주는 플랫폼으로 자리 잡으며 쿠버네티스 관련 시장도 커지고 관심도 많아졌다. 이 포스팅에서는 쿠버네티스에 대해 담아 보려고 한다. 쿠버네티스를 이해하기 위해서는 먼저 클라우드 네이티브
개념을 이해해야 한다.
클라우드 네이티브란 클라우드의 이점을 최대로 활용할 수 있도록 애플리케이션을 구축하고 실행하는 방식이다. 클라우드 네이티브 애플리케이션의 방법론은 사진처럼 4가지가 있다.
CI
, 즉 지속적인 통합(Continuous Integration)이란 개발자가 작업한 코드를 자동으로 테스트하고 테스트에 통과하면 코드를 통합하여 저장한다. 정리하여 빌드 - 테스트 - 통합
의 과정을 자동화하는 과정이다.
CD
, 지속적인 배포(Continuous Delivery)는 작업한 코드 및 변경 사항들이 테스트를 거쳐 레포지토리에 업로드되고 실제 서비스 배포로 릴리즈까지 자동화되는 것이다. 정리하자면 빌드 - 테스트 - 통합 - 레포지토리에 자동으로 병합 - 프로덕션 환경에 자동으로 배포
의 과정을 자동화하는 과정이다.
DevOps
애플리케이션 개발-운영 간의 협업 프로세스를 자동화하는 것을 말한다. 결과적으로 애플리케이션의 개발과 개선 속도를 빠르게 한다.
Microservices
애플리케이션을 구성하는 서비스들을 독립적인 작은 단위로 분해하여 구축하고 각 구성 요소들을 네트워크로 통신하는 아키텍처로 서비스 안정성과 확장성을 지원한다.
Container
가상화 기술 중 하나로, 시스템을 가상화하는 것이 아니라 애플리케이션을 구동할 수 있는 컴퓨팅 작업을 패키징하여 가상화한 것이다.
출처 ✨ 코드 블로그
쿠버네티스는 오픈 소스 컨테이너 오케스트레이션 플랫폼이다. 컨테이너 오케스트레이션이란 컨테이너의 배포, 관리, 확장 및 네트워킹을 자동화하는 것을 의미한다. 즉 쿠버네티스는 컨테이너화된 애플리케이션의 관리를 자동화할 수 있도록 도와주는 플랫폼이다.
다양한 컨테이너 런타임 기술이 존재하지만 그중에 도커가 사실상 표준으로 여겨지고 있다. 도커 컨테이너로 서비스를 하게 되면 하나의 도커 이미지 안에 서비스 운영에 필요한 모든 것들이 들어 있어 개발자들이 손쉽게 협업을 할 수 있다.
하지만 이렇게 컨테이너화된 애플리케이션도 역시 관리를 해야 한다. 예를 들어 컨테이너화된 애플리케이션이 다운 되면 개발자가 직접 재실행시켜야 한다. 전통적인 방식과 VM보다 관리가 용이하지만 컨테이너의 수가 많아지게 되면 그 모든 것을 관리해야 하는 어려움이 있다. 이때 쿠버네티스가 사용된다.
출처 ✨ 코드 블로그
쿠버네티스는 이러한 워크로드를 위해 규모에 맞는 컨테이너를 배포하는 데 필요한 오케스트레이션 및 관리 기능을 제공한다. 쿠버네티스 오케스트레이션을 사용하면 여러 컨테이너에 걸쳐 애플리케이션 서비스를 구축하고, 클러스터 전체에서 컨테이너의 일정을 계획하고, 이러한 컨테이너를 확장하여 컨테이너의 상태를 지속적으로 관리할 수 있다.