Mini Project #3 (ECS Fargate, GitHub Actions)
·
Project
Mini Project #3 (ECS Fargate, GitHub Actions)소규모 기업을 위한 그룹웨어 애플리케이션을 AWS 기반으로 클라우드에 배포하고, CI/CD 파이프라인까지 직접 구축해본 인프라 프로젝트입니다. 기존 Java 기반의 WAR 파일을 Docker 이미지로 컨테이너화한 후, ECS Fargate를 활용해 서버리스 환경에서 애플리케이션을 배포하였고, RDS(MySQL)를 데이터베이스로 연동하여 실서비스처럼 구동되도록 구성하였습니다. 또한 GitHub Actions를 이용해 코드 수정 시 자동으로 Docker 이미지 빌드 → ECR 업로드 → ECS 서비스 업데이트까지 이어지는 자동화된 배포 파이프라인(CI/CD)을 구현했습니다. 서비스 접근은 Route 53과 퍼블릭 인증서(ACM)..
Kubernetes - GitOps 기반 배포 자동화 Argo CD
·
Kubernetes
Argo CDArgo CD는 쿠버네티스에서 사용하는 GitOps 도구로,Git 저장소의 YAML 정의를 기준으로 쿠버네티스 리소스를 자동 배포 및 동기화GitOpskubectl apply 대신 Git에 변경사항을 커밋하면 자동 배포코드 상태와 실제 클러스터 상태를 일치시키는 운영 방식Argo CD의 주요 기능Git 저장소와 연동하여 리소스를 자동으로 관리배포 현황을 웹 UI에서 실시간 확인이전 상태로 간단히 롤백 가능여러 클러스터 동시 관리 가능멀티 네임스페이스 지원 Argo CD 설치네임스페이스 생성kubectl create namespace argocdArgo CD 설치kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo..
Kubernetes - nginx 파드 배포와 서비스로 외부 연결
·
Kubernetes
쿠버네티스를 구성하는 핵심 리소스Node쿠버네티스 클러스터에서 파드(Pod)를 실행하는 실제 컴퓨터다.Minikube에서는 하나의 노드만 존재하며, 그 안에서 모든 리소스가 실행된다.Pod컨테이너를 실행하기 위한 최소 실행 단위로, 컨테이너를 감싸는 껍데기다.보통 하나의 파드에는 하나의 컨테이너가 들어간다.컨테이너가 꺼지면 함께 없어지기 때문에, 파드를 통해 컨테이너를 관리한다.ReplicaSet파드를 여러 개 유지하는 역할을 한다.예: nginx 파드를 항상 2개 실행 상태로 유지하도록 관리직접 만들 일은 거의 없고, Deployment가 내부적으로 자동으로 생성한다.Deployment우리가 가장 많이 사용하는 리소스이며, 파드의 설정과 개수, 업데이트 전략을 모두 정의한다.실제 파드는 Deployme..
Kubernetes - 기초 개념과 클러스터 구조 이해
·
Kubernetes
쿠버네티스란?쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션을 자동으로 배포, 확장, 복구, 관리할 수 있도록 도와주는 오픈소스 플랫폼보통 Docker로 만든 컨테이너를 개별적으로 실행하는 데에는 한계가 있어, 수십 개 이상의 컨테이너를 운영할 때는 이들을 조율할 수 있는 시스템이 필요 --> 이 역할을 쿠버네티스가 수행쿠버네티스의 구성요소클러스터: 마스터 노드 + 워커 노드로 구성마스터 노드: 클러스터 제어 (스케줄링, 상태관리 등)워커 노드: 실제 컨테이너(Pod)가 실행되는 서버Pod: 컨테이너가 배포되는 가장 작은 단위Minikube 기반 쿠버네티스 클러스터로컬 환경에서 minikube를 이용해 단일 노드 쿠버네티스 클러스터를 구성별도의 가상머신 생성 없이도 간단히 테스트용 클러스터를 ..
Docker - 네트워크와 Compose로 컨테이너 연결하기
·
Docker
네트워크와 Compose로 컨테이너 연결하기Docker에서는 컨테이너 간 통신을 위해 네트워크를 구성합니다.특히 사용자 정의 브리지 네트워크를 활용하면 컨테이너 이름으로 통신이 가능하고,Docker Compose를 사용하면 여러 컨테이너 서비스를 효율적으로 관리할 수 있습니다.도커 네트워크 my-network라는 사용자 정의 브리지 네트워크를 생성합니다.docker network ls 명령어로 네트워크 목록을 확인할 수 있습니다.사용자 정의 네트워크는 컨테이너 이름 기반 통신을 지원합니다.컨테이너 간 통신 container-b에서 container-a로 이름 기반 ping 테스트를 수행합니다.container-a, container-b를 동일 네트워크(my-network)에 연결해 실행합니다.ping ..
Docker - 데이터 관리(Volume, Bind Mount)
·
Docker
Docker - 데이터 관리 (Volume, Bind Mount, 파일 공유, 읽기 전용)Docker에서 컨테이너는 기본적으로 휘발성 환경입니다. 컨테이너가 삭제되면 데이터도 함께 사라집니다.이를 해결하기 위해 Docker는 다음과 같은 데이터 관리 기능을 제공합니다.Volume 볼륨을 사용하는 컨테이너 실행docker container run -it --name myvolumecontainer -v myvolume:/temp ubuntu컨테이너 내부에서 파일 생성echo hello, volume >> /temp/hello_volumels /tempctrl + p + q로 detach 모드로 빠져나오기동일한 볼륨을 사용하는 새 컨테이너 실행내부에서 동일한 파일 확인컨테이너가 달라도 동일한 볼륨을 사용하면..