5.4 첫 애플리케이션 배포해보기

지금까지 우리는 로컬 환경에 쿠버네티스 클러스터를 구축하는 두 가지 방법, 즉 Rancher Desktop을 이용하는 방법과 K3s를 직접 설치하는 방법을 모두 경험하며 탄탄한 기반을 마련했습니다. 이제 드디어 이 멋진 무대 위에 우리의 첫 번째 배우, 즉 첫 번째 애플리케이션을 직접 배포해 볼 시간입니다. 이번 섹션 5.4에서는 이론으로만 접했던 쿠버네티스의 강력함을 실제로 체감하고, 컨테이너화된 애플리케이션이 어떻게 쿠버네티스 위에서 생명을 얻고 세상과 소통하게 되는지 그 기본적인 흐름을 직접 경험하게 될 것입니다. 이 과정은 앞으로 더 복잡한 클라우드 네이티브 애플리케이션을 다루기 위한 매우 중요한 첫걸음이 될 것입니다.

먼저, 우리는 비교적 간단하면서도 널리 사용되는 Nginx 웹서버를 쿠버네티스 클러스터에 배포(5.4.1)하는 실습을 진행합니다. Nginx는 가볍고 성능이 뛰어나 웹서버나 리버스 프록시 등으로 자주 활용되는 오픈소스 소프트웨어입니다. 우리는 이미 컨테이너 형태로 패키징되어 있는 공식 Nginx 이미지를 사용하여, 쿠버네티스에게 “이 Nginx 컨테이너를 실행시켜줘!”라고 요청할 것입니다. 이 과정에서 쿠버네티스의 핵심 워크로드 리소스인 디플로이먼트(Deployment)를 사용하여 Nginx 애플리케이션의 원하는 상태(예: 몇 개의 복제본을 실행할 것인지)를 선언하고, 쿠버네티스가 어떻게 이 상태를 유지하는지 간략하게 살펴볼 것입니다. kubectl 명령어를 사용하여 배포 상태를 확인하고, 실제로 Nginx 파드(Pod)가 클러스터 내에서 실행되고 있는지 점검하는 방법도 배우게 됩니다.

하지만 단순히 클러스터 내부에 Nginx 웹서버를 실행하는 것만으로는 우리가 직접 웹 브라우저를 통해 접속할 수 없습니다. 쿠버네티스 클러스터 내부는 기본적으로 외부와 격리된 네트워크 환경이기 때문입니다. 따라서 다음 단계에서는 이렇게 배포된 Nginx 웹서버를 클러스터 외부, 즉 여러분의 컴퓨터에 있는 웹 브라우저에서 접근 가능하도록 노출(5.4.2)시키는 방법을 배웁니다. 이를 위해 쿠버네티스의 또 다른 핵심 리소스인 서비스(Service) 객체를 활용할 것입니다. 서비스는 실행 중인 파드 그룹에 안정적인 네트워크 엔드포인트(IP 주소와 포트)를 제공하는 역할을 합니다. 다양한 서비스 타입 중에서 우리는 특히 로컬 환경에서 간단하게 외부 노출을 테스트해 볼 수 있는 NodePort 타입을 사용하여, 클러스터 노드의 특정 포트를 통해 Nginx 서비스에 접근하는 방법을 실습합니다. NodePort 서비스가 생성되면, 여러분은 마침내 웹 브라우저 주소창에 특정 주소와 포트 번호를 입력하여 “Welcome to nginx!” 메시지를 직접 눈으로 확인하는 짜릿한 순간을 경험하게 될 것입니다.

이 섹션 5.4를 마치고 나면, 여러분은 단순히 로컬 쿠버네티스 클러스터를 가지고 있는 것을 넘어, 그 위에 실제 애플리케이션을 배포하고 외부에서 접속해보는 가장 기본적인 엔드-투-엔드(End-to-End) 경험을 완성하게 됩니다. 이는 쿠버네티스가 어떻게 애플리케이션의 배포와 네트워킹을 관리하는지에 대한 구체적인 이해를 제공하며, 앞으로 더 복잡한 클라우드 네이티브 아키텍처를 배우고 구축하는 데 있어 든든한 자신감을 심어줄 것입니다. 자, 그럼 이제 Nginx와 함께 쿠버네티스에서의 첫 항해를 시작해 볼까요?