[Kubernetes Resources] Deployments

IMKUNYOUNG·2024년 7월 31일
0

KCNA

목록 보기
9/56

이번 글에서는 디플로이먼트를 통해 애플리케이션을 프로덕션 환경에 어떻게 효율적으로 배포하고 관리할 수 있는지 알아보겠습니다.

프로덕션 환경에 대한 고민: 다수의 인스턴스

프로덕션 환경에 웹 서버를 배포할 때, 여러 인스턴스를 운영하는 것은 매우 중요합니다. 이는 서비스의 가용성과 성능을 보장하는 데 필수적입니다. 예를 들어, 하나의 웹 서버 인스턴스에 문제가 생기더라도, 다른 인스턴스가 서비스를 유지할 수 있어야 합니다.

Rolling-Update

Docker 레지스트리에 새로운 애플리케이션 빌드 버전이 추가되면, 이를 서비스에 원활하게 반영해야 합니다. 그러나 모든 인스턴스를 한 번에 업그레이드하는 것은 위험할 수 있습니다. 사용자가 접속 중일 때 갑작스러운 다운타임이 발생할 수 있기 때문입니다. 이러한 상황을 피하기 위해, 롤링 업데이트(Rolling Update) 방식을 사용합니다. 이는 인스턴스를 하나씩 순차적으로 업데이트하여 서비스의 중단을 최소화하는 방법입니다.

Roll-Back

업데이트 과정에서 예상치 못한 오류가 발생할 수 있습니다. 이때 최근 변경 사항을 되돌려야 하는 상황이 올 수 있습니다. Kubernetes의 Deployment는 이러한 상황에 대비한 롤백 기능을 제공합니다. 롤백을 통해 오류 발생 시 빠르게 이전 안정 상태로 돌아갈 수 있습니다.

점진적 적용

프로덕션 환경에서 기본 웹 서버 버전을 업그레이드하거나, 리소스 할당을 조정하는 등의 환경 설정 변경이 필요할 때가 있습니다. 이때 모든 변경 사항을 즉시 적용하는 대신, 먼저 변경 사항을 설정하고, 환경에 일시 정지를 걸어, 필요한 시점에 일괄 적용하는 것이 바람직합니다. 디플로이먼트는 이러한 기능을 제공하여 관리자가 변경 사항을 보다 안전하게 적용할 수 있도록 돕습니다.

디플로이먼트 정의 파일 작성

디플로이먼트의 기본 구성 요소는 다음과 같습니다.

  • apiVersion: "apps/v1"
  • metadata: name과 labels 등
  • spec: 템플릿 복제 및 셀렉터 설정, 템플릿 내부의 팟 정의 등

이 정의 파일을 기반으로 kubectl create 명령어를 사용해 Deployment를 생성할 수 있습니다. 이후 kubectl get deployments 명령어로 새로 생성된 Deployment를 확인할 수 있습니다. Deployment는 자동으로 새로운 ReplicaSet을 생성하며, 이는 다시 팟(Pods)을 생성합니다.

마치며

지금까지 Kubernetes의 디플로이먼트에 대해 살펴보았습니다. 디플로이먼트는 롤링 업데이트, 롤백, 설정 변경의 일시 정지 및 재개 등의 강력한 기능을 제공하여, 프로덕션 환경에서 애플리케이션의 안정적인 배포와 운영을 돕습니다.

마지막으로, 모든 생성된 객체를 한 번에 확인하고 싶다면 kubectl get all 명령어를 사용하면 됩니다. 이를 통해 Deployment, ReplicaSet, 그리고 생성된 팟들을 모두 볼 수 있습니다.

0개의 댓글