[AWS] AWS ECS와 ECR을 활용한 CI/CD 구현
·
BackEnd/DEVOPS
AWS의 ECS(Elastic Container Service)와 ECR(Elastic Container Registry)를 활용해 CI/CD를 구성하면, Docker 컨테이너 기반의 애플리케이션을 효율적으로 빌드하고 배포할 수 있습니다. 이번 글에서 Spring Boot 애플리케이션을 Docker 이미지로 빌드하여 ECR에 저장하고 저장된 이미지를 ECS를 통해 배포하는 방법을 다루었습니다. ECR과 ECS를 이용한 CI/CD 파이프라인 워크플로의 전체 흐름은 다음과 같습니다.  ECR-ECS 전체 파이프라인 워크플로 흐름코드 변경 → GitHub에 푸시 GitHub Action 실행GitHub 저장소에 코드가 푸시되면 GitHub Actions 워크플로가 실행Docker 이미지 빌드 : 빌드된 애플리..
[ArgoCD] ArgoCD 설치
·
BackEnd/DEVOPS
ArgoCD를 설치하고 GitOps 환경에서 애플리케이션을 배포하는 과정입니다. ArgoCD를 통해 코드 변경 사항이 자동으로 쿠버네티스 클러스터에 반영되도록 설정해줍니다. 1. ArgoCD 설치 및 설정1-1. ArgoCD 네임스페이스 생성먼저 ArgoCD가 배포될 네임스페이스를 생성합니다.kubectl create namespace argocd 1-2. ArgoCD 설치공식 ArgoCD YAML 파일을 사용하여 ArgoCD를 설치합니다.kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml이 명령어를 통해 ArgoCD의 기본 구성 요소가 argocd 네임스페이스에 ..
[Kubernetes] Master Node, Worker Node 연결
·
BackEnd/DEVOPS
AWS EC2 인스턴스 두 개를 사용하여 각각 쿠버네티스 마스터 노드와 워커 노드를 구성하고 연결하는 과정입니다. 이 과정을 통해 쿠버네티스 클러스터를 구성하고, 각 노드가 원활히 통신할 수 있도록 설정할 수 있습니다.  1. EC2 인스턴스 설정마스터 노드 및 워커 노드 생성  1. AWS EC2 콘솔에서 인스턴스 두 개를 생성합니다. 하나는 마스터 노드(Master Node), 다른 하나는 워커 노드(Worker Node)로 설정합니다.구분마스터 노드 (Master Node)워커 노드 (Worker Node)역할클러스터 제어 및 관리애플리케이션 컨테이너 실행EC2 인스턴스 타입t2.mediumt2.micro 또는 t2.small 등CPU (vCPU)2 vCPU 이상1 vCPU메모리4GB 이상1GB 이..
[Kubernetes] Spring Boot 애플리케이션 배포: CNI, SDN, NodePort 서비스 설정
·
BackEnd/DEVOPS
Kubernetes 네트워킹과 SDN 개념을 활용해 Kubernetes 클러스터 환경에서 Spring Boot 애플리케이션을 Docker 이미지로 만들어 배포하고, NodePort로 외부에서 접근할 수 있도록 설정하는 과정에 대해 다루었습니다. 1. CNI와 데이터 공유1) 컨테이너 네트워크 인터페이스(CNI)CNI는 쿠버네티스 파드들이 클러스터 내에서 서로 통신할 수 있도록 해주는 네트워크 플러그인입니다. 이를 통해 파드 간 통신은 물론 클러스터 외부와의 네트워크 연결도 가능해집니다. 쿠버네티스 파드 간의 일관성 있는 네트워크 연결을 보장하고 파드는 네트워크 내부에서 생성과 삭제가 반복되며, CNI는 파드가 쉽게 접근 가능하도록 IP를 동적으로 관리합니다.2) 볼륨을 통한 데이터 공유Kubernetes..
[Kubernetes] 쿠버네티스 클러스터 구성 및 관리
·
BackEnd/DEVOPS
Kubernetes 클러스터 구성과 관련된 설정, 배포, 모니터링, Pod 관리 및 리소스 관리 등에 대해 다룹니다. 1. Kubernetes 클러스터 설정 (KIND & kubectl 설치) KIND 설치KIND는 Docker 위에서 Kubernetes 클러스터를 간단히 구성할 수 있게 해 주는 도구입니다. (Docker가 사전 설치되어 있어야 합니다.)[ $(uname -m) = x86_64 ] && curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.24.0/kind-linux-amd64chmod +x ./kindsudo mv ./kind /usr/local/bin/kind kubectl 설치kubectl은 쿠버네티스 클러스터와 통신하기 위한 필수 CLI 도구입니다...
[Spring Boot] Docker + Github Actions CI/CD 구축
·
BackEnd/JAVA SPRING
Spring Boot 프로젝트를 Docker와 Github Actions를 사용하여 EC2 서버에 자동으로 배포하는 과정입니다.CI/CD 구축은 기존 수동 배포 방식을 자동화하여, 코드 변경 시마다 매번 서버에 직접 접속해 작업하는 불편함을 줄이고 배포 속도를 높일 수 있습니다.  기존 배포 방법의 문제점기존에는 CI/CD를 구축하지 않고, 수동으로 Spring Boot 프로젝트를 빌드한 후, jar 파일을 EC2에 FileZilla 를 이용하여 전송한 다음 java -jar 명령어를 통해 애플리케이션을 실행했습니다.nohup java -jar Tiing-BE-0.0.1-SNAPSHOT.jar & 기존 배포 방법1. Spring Boot 프로젝트를 로컬에서 빌드하여 .jar 파일 생성2. EC2 서버로 ..