본문 바로가기

Kubernetes

[Kubernetes] 운영 환경 구성시 고려사항

컨테이너 어플리케이션 배포를 위해 쿠버네티스를 도입 후 PoC를 넘어 운영환경에서 쿠버네티스를 사용하기 위해서는 많은 고려사항이 필요합니다.

 

 

높은 SLA를 만족시키기 위해서 수많은 고려사항이 존재하지만 요약하면 아래와 같습니다.

- 쿠버네티스의 Pod 스케줄링

- 어플리케이션의 배포 및 확장

- 어플리케이션이 잘 동작할 수 있도록 네트워크와 스토리지 사용법에 대한 숙달 

- 서비스 노출 방법

- 서비스 헬스 체크

- 쿠버네티스 및 어플리케이션 환경에 대한 HA 구성 

- 무중단 업그레이드 

 

 

 

쿠버네티스 클러스터 설치 후 운영을 고려할때 확인해야 하는 항목 (Day 2 Operation) 

- 스토리지 및 네트워크 연동

- 쿠버네티스 업그레이드 및 패치를 어떻게 무중단 방식으로 진행할 수 있을지

- 장애 발생 시 신속하게 대처할 수 있도록 모니터링 및 로깅 환경 구축 

- 장애 발생 시 마스터 노드에 대한 장애복구 시나리오 

 

이 외에도 설치 후 실운영 환경 구축을 위해서는 더 많은 솔루션을 구성해야 합니다.  

 

 

 

 

 

아래 글에서는 위에 작성한 항목들에 대해서 좀 더 자세하게 설명해보도록 하겠습니다. 

 

 

 

 

 

 

 

 

1. 클러스터 모니터링 

 

 

클러스터 모니터링 뿐만 아니라 pods 내에 서비스되는 어플리케이션에 대한 모니터링도 포함됩니다.

클러스터와 어플리케이션이 어떻게 자원을 사용하고 있는지 모니터링을 함으로써 장애를 미연에 방지할 수 있으며, 장애를 방지함으로써 불필요한 지출이 생기는 것을 예방할 수 있습니다. 

클러스터 모니터링을 통해 클러스터의 자원들의 사용현황을 파악하며, 리소스들이 소비하는 자원들까지 파악이 가능합니다. 

대표적으로 사용하는 프로젝트로는 Prometheus, Grafana 등이 있습니다.  

 

 

 

 

 

 

2. 클러스터링 로깅 

 

 

 

클러스터의 상태 분석 및 트러블슈팅을 위해 로깅 환경을 구성합니다. 

로깅의 경우 문제가 발생하였을 경우에 이를 추적할 수 있는 기본적인 데이터를 제공합니다. 

쿠버네티스 인프라, 컨테이너가 생성하는 로그들을 모두 수집하여 이를 데이터베이스에 저장해놓아야 합니다. 

로그 데이터들을 잘 보관해놓으면 추후에 트러블슈팅을 할때 요긴하게 사용할 수 있습니다. 

대표적으로 사용하는 프로젝트는 Elasticsearch, Grafana loki 등이 있습니다. 

 

 

 

 

 

 

3. 아티팩트 저장소 

 

 

 

장애 발생 시를 대비하여 어플리케이션이 사용하는 이미지, 어플리케이션을 쿠버네티스에 배포할 수 있는 helm chart를 외부 저장소를 사용하여, 독립적인 자체 저장소를 구축합니다. 

대표적으로 사용하는 프로젝트는 HARBOR, CHART MUSEUM 등이 있습니다. 

 

 

 

 

 

 

4. CI/CD 파이프라인

 

 

쿠버네티스 환경에서 어플리케이션을 제공한다면, 어떻게 어플리케이션을 테스트하고 이를 배포할것인지 그 방식에 따라 무중단으로 안전하게 새로운 어플리케이션을 사용자에게 순차적으로 배포할 수 있습니다.

대표적으로 사용하는 프로젝트는 Spinnaker, ArgoCD 등이 있습니다. 

 

 

 

 

 

 

5. 클러스터 구축과 부하분산 

 

어플리케이션이 실행되는 쿠버네티스 클러스터의 가용성을 확보하기 위해서 분리된 지역에 구성된 멀티 마스터, 멀티 etcd 환경에서 쿠버네티스 클러스터를 구축해야 합니다. 

이렇게 구축된 클러스터 환경에서 어플리케이션을 배포한다면, 어플리케이션 레벨에서 또한 HA가 보장되어야하는데 이에 따라 외부 요청이 들어올때 HA로 처리된 어플리케이션에 어떻게 이를 분산처리 할것인지에 대한 방안도 수립되어야 합니다. 

 

 

 

 

 

 

6. 보안관리

 

 

쿠버네티스 클러스터와 어플리케이션이 외부에 노출되는 경우라면, 클러스터 인프라, 어플리케이션 접근제한이 필수적입니다. 

인증 방식으로는 OAuth, RBAC, KeyCloak이 있습니다. 

접근제한 외에도 어플리케이션 자체의 보안도 필수적으로 수행되어야 합니다. 

컨테이너의 취약점이 존재할 경우 이를 통해 외부에서 클러스터에 접근할 수 있거나, 클러스터의 자원이 원하지 않는 상태로 해킹되어 유출 될 수 있습니다.

이를 위해 어플리케이션에서 사용하는 이미지에 대한 취약점 점검이 필요합니다. 

취약점 점검으로 사용할 수 있는 프로젝트는 CVE Scan, Clair, trivy 등이 있습니다. 

 

 

 

 

 

 

 

 

 

'Kubernetes' 카테고리의 다른 글

[Kubernetes] Kubernetes 클러스터 용량 산정  (0) 2024.05.28