AS-IS현재 상황에서 인식한 문제점과 해결하고자 하는 내용입니다.문제상황 인지 EC2에서 Docker와 Nginx를 통해 MLflow 서버를 실행하고 있음. MLflow 서버에 별도의 인증 절차가 없어 누구나 접속 가능한 보안 문제가 발생. 보안 그룹 설정은 있지만 근본적으로 접근 통제를 위한 추가적인 보안이 필요함.Challenge문제를 해결하기 위해 고민하고 기술적으로 접근한 과정입니다.문제 해결을 위해 고민한 내용 Nginx에서 인증 절차를 구현하기 위한 방법을 찾아야 함. 검색을 통해 Nginx에서 사용자 인증을 제공하는 htpasswd 방법을 발견함. 참고한 자료: htpasswd로 ID, 패스워드 생성시에 SHA 암호화방식으로 암호생성하기htpasswd 설치 방법 htpasswd..
WEB(Django) CI/CD 아키텍처1. 개요해당 아키텍처는 CI/CD 파이프라인을 통해 애플리케이션 코드를 자동으로 빌드 및 배포하는 과정을 설명합니다. 개발자가 코드를 푸시하면 GitHub Actions가 Docker 이미지를 빌드하고 Amazon ECR에 푸시합니다.이후 ECS를 통해 Django 애플리케이션이 포함된 컨테이너를 배포하고 서비스를 갱신합니다.2. 주요 컴포넌트2.1 개발자역할: 애플리케이션 소스코드를 개발하고 GitHub에 푸시합니다.2.2 GitHub역할: 버전 관리 시스템으로 코드 변경 사항을 관리합니다.주요 동작:개발자의 코드 푸시를 감지하고 GitHub Actions를 트리거합니다.2.3 GitHub Actions역할: CI/CD 파이프라인의 핵심 자동화 도구입니다. ..
Amazon ECS(Elastic Container Service)란?Amazon ECS(Amazon Elastic Container Service)는 AWS에서 제공하는 컨테이너 관리 서비스로, Docker 컨테이너를 손쉽게 실행, 관리 및 확장할 수 있도록 설계된 완전 관리형 서비스임. 개발자가 클러스터를 생성하고 애플리케이션을 배포하며, 클러스터에서 컨테이너를 관리할 수 있는 환경을 제공함.ECS는 서버리스 기반으로 작동할 수 있는 Fargate와 EC2 인스턴스를 사용하는 두 가지 실행 모드를 지원하며, Kubernetes 기반의 EKS와 함께 AWS의 컨테이너 관리 포트폴리오의 핵심 서비스 중 하나임.Amazon ECS의 주요 특징1. 컨테이너 관리컨테이너 워크로드를 효율적으로 관리하고 배포할 ..
AWS ECR(Amazon Elastic Container Registry)이란?AWS ECR(Amazon Elastic Container Registry)은 Amazon Web Services(AWS)에서 제공하는 완전 관리형 Docker 컨테이너 레지스트리 서비스임. Docker 이미지를 안전하게 저장하고 관리하며, 빠르고 쉽게 배포할 수 있는 환경을 제공함. 특히, Amazon ECS(Elastic Container Service), EKS(Elastic Kubernetes Service), 그리고 다른 AWS 서비스와 긴밀히 통합되어 컨테이너 기반 애플리케이션 개발과 배포를 간소화함.AWS ECR의 주요 특징1. 완전 관리형 서비스사용자가 직접 컨테이너 레지스트리를 설치하거나 유지 관리할 필요 없..
Kubernetes의 역할과 사용자 역할 비교Kubernetes는 컨테이너화된 애플리케이션의 배포와 관리를 자동화하는 플랫폼으로, 이를 성공적으로 사용하기 위해서는 사용자와 Kubernetes가 각각의 역할을 명확히 이해해야 함. 이 글에서는 Kubernetes가 어떤 작업을 수행하며, 사용자가 무엇을 준비하고 설정해야 하는지 정리함.Kubernetes가 수행하는 역할 (What Kubernetes Will Do)객체 생성 및 관리 사용자가 정의한 객체(예: Pods)를 생성하고 이를 관리함.Pod 모니터링 및 복구 Pod를 지속적으로 모니터링하고, 문제가 발생하면 재생성하며, 필요 시 자동으로 확장(Scale)함.클라우드 리소스 활용 사용자가 정의한 설정 및 목표에 맞춰 클라우드 리소스를 활용하고..
Kubernetes: 무엇이고, 무엇이 아닌가?Kubernetes는 현대 애플리케이션 배포와 관리를 위한 강력한 도구임. 하지만 많은 사람들이 Kubernetes의 본질에 대해 오해하거나 잘못된 기대를 가지기도 함. 아래는 Kubernetes가 무엇인지, 그리고 무엇이 아닌지를 명확히 정리한 내용임.Kubernetes는 무엇이 아닌가?:클라우드 서비스 제공자가 아님 Kubernetes는 특정 클라우드에 종속되지 않는 오픈 소스 프로젝트임.클라우드 서비스 제공자의 독점 서비스가 아님 Kubernetes는 모든 클라우드 서비스 제공자에서 사용 가능함.특정 클라우드 서비스에 제한되지 않음 Kubernetes는 어떤 클라우드 환경에서도 사용할 수 있도록 설계되었음.단순히 머신에서 실행되는 소프트웨어가 아님..
Docker tty와 stdin_open 옵션에 대해 알아보기Docker를 사용하다 보면 tty와 stdin_open 옵션을 접할 수 있음. 이 두 옵션은 컨테이너 실행 시 인터랙티브 터미널 환경과 관련이 있으며, 개발 및 디버깅 환경에서 중요한 역할을 함.1. tty 옵션tty는 pseudo-TTY(pseudo-terminal)를 할당하기 위한 옵션임. 이는 Docker 컨테이너 내부에서 터미널 세션을 활성화하여 사용자가 명령어를 입력하고 결과를 출력할 수 있도록 도와줌.주요 기능tty 옵션이 활성화되면, Docker 컨테이너는 사용자와 상호작용할 수 있는 터미널 세션을 제공함.일반적으로, 배치 프로세스(Background Process)보다 대화형 세션이 필요한 작업에 사용됨.리눅스 환경에서 dock..
Docker Volume과 Mount 개념 정리Docker는 애플리케이션을 컨테이너로 실행할 때 데이터를 효율적으로 관리하기 위해 다양한 방법을 제공함. 그중에서 Volume과 Mount는 데이터를 저장하고 공유하는 데 중요한 역할을 함. 이 글에서는 Volume과 Mount의 개념, 차이점, 사용법을 간결하게 정리함.1. Docker VolumeVolume은 Docker에서 데이터를 저장하고 관리하기 위한 기본적인 메커니즘임. 컨테이너와 독립적으로 데이터를 관리하며, Docker 엔진이 이를 제어함.컨테이너 간 데이터 공유: 동일한 Volume을 여러 컨테이너에서 공유 가능함.호스트 독립성: 호스트 파일 경로에 의존하지 않으며, Docker가 데이터를 관리함.데이터 지속성: 컨테이너 삭제 시에도 데이터..