본문 바로가기

DevOps8

HPA와 Metrics Server HPA 일반적으로 Deployment나 Statefulset 같은 워크로드를 사용하면 레플리카 수를 지정하여 가용성 있게 운영할 수 있게 해 준다. 그러나 레플리카 수를 과도하게 지정하여 리소스 낭비를 하는 경우가 발생하고 반대로 서비스에 과부하가 걸려 지정한 레플리카 수로 처리하기 벅찬 경우가 발생한다. 그래서 쿠버네티스에서는 워크로드 내에서 발생하는 메트릭 값을 기준으로 레플리카 수를 동적으로 조정하는 기능인 HPA를 제공하고 있다. HPA는 K8s에서 워크로드에 대한 부하가 발생하면 워크로드에 해당하는 파드의 개수를 수요에 맞게 늘려준다. 특징 HPA는 간헐적으로 컨트롤 루프 형태로 구현. → 기본적으로 15초마다 지정된 워크로드의 리소스를 확인한다. 주기적으로 scaleTargetRef에 정의된 .. 2022. 10. 10.
Infrastructure Provisioning Tool, Terraform 과거 인프라 관리 과거에는 대부분의 인프라 관리를 온프레미스로 진행했다. 네트워크, 컴퓨팅, 냉각 설비 등의 인프라 리소스를 모두 구매하여 데이터 센터에 위치시키고 OS를 설치하거나 어플리케이션 구동에 맞게 설정하는 등의 복잡한 수동적인 절차가 필요했다. 인프라 관리에는 다음과 같은 문제가 발생했다. 각 인프라 분야의 엔지니어를 고용하는 비용과 서로 다른 분야의 인프라 엔지니어들이 소통하는 비용이 크게 발생했다. 갑작스럽게 인프라 리소스가 필요지면 해당 인프라를 데이터 센터까지 가져오고 환경 설정하는 작업이 오래 걸렸고 심지어 회사의 규모가 커질수록 여러 부서의 승인 절차까지 기다려야 하기 때문에 서비스 수요에 맞춰 빠르게 대응할 수 없었다. 인프라 성능에 대한 모니터링이 어려웠다. 인프라 단에 장애가 .. 2022. 9. 18.
쿠버네티스 패키지 매니저 Helm 현재 쿠버네티스는 가장 많이 사용하고 있는 오픈소스 컨테이너 오케스트레이션 툴이다. 다양한 리소스, 워크로드를 YAML 형태에서 쉽게 정의하여 컨테이너화 된 애플리케이션을 효율적으로 배포 및 운영할 수 있게 도와준다. 이를 통해 변화에 대응하여 신속하게 애플리케이션을 배포하거나 가동 중인 애플리케이션에 대해 스케일 인/아웃을 하는 등 계속되는 변화를 전제로 설계된 높은 유연성과 확장성을 제공하고 있다. 그러나 쿠버네티스를 사용하려면 매니페스트를 작성해야 하는데 매니페스트에는 몇 가지 아쉬움이 존재한다. 1. 매니페스트에서 개발 환경, 프로덕션 환경에 대해 일부분만 달라도 배포할 때마다 매니페스트를 수정해야 하는가? 2. 여러 개의 매니페스트를 하나의 프로덕트로 제공할(받을) 수 없는가? 3. 가동 중인 .. 2022. 8. 17.
Skaffold와 Cloud Code 일반적으로 쿠버네티스를 포함한 환경에서 개발을 한다면 수정된 코드를 테스트하기란 복잡한 절차가 따른다. 그러나 이를 효과적으로 단축하여 개발 효율성을 향상할 수 있는 방법이 있는데 바로 Skaffold이다. 이번 글에서는 Skaffold와 추가적으로 Skaffold를 효과적으로 사용할 수 있게 도와주는 IDE Extension인 Cloud Code에 대해서도 소개해보려고 한다. Skaffold란? Skaffold는 구글에서 개발한 Command Line Tool로 쿠버네티스 어플리케이션을 위한 지속적인 배포를 쉽게 가능하게 해 준다. 즉, 내가 개발한 애플리케이션의 빌드, 푸시, 배포 등의 워크로드를 다루는 툴이며, 코드를 작성하는 것만 집중할 수 있도록 도와준다. Skaffold와 일반 개발과정 차이 .. 2022. 7. 4.