Infra

Infra/Kubernetes

Kubernetes 2. apple silicon mac에 쉽게 Kubernetes 설치하기

전체 구조설치할 환경은 아래와 같다.컴퓨터에 직접 가상화 환경을 생성할 것이다. 지금 이렇게 진행하지만 추후에 AWS, NCP, GCP 등 다양한 퍼블릭 클라우드를 사용할 수 있다. 만약 퍼블릭 클라우드를 사용한다면, Guest OS 부분이 대체될 것이다.인프라 환경 설치Mac은 Viturl Box를 설치할 수 없다. Mac에서 사용할 수 있는 가상화 환경인 UTM을 다운로드하고, 거기서 Rocky Linux를 실행한다. Rocky Linux에 들어가서 Kubernetes Cluster를 설치하고 Pod를 확인한다. 나의 데스크탑에서 대시보드에 접속한다. UTM + Rocky linux 설치Rocky linux iso 설치https://dl.rockylinux.org/vault/rocky/9.2/isos..

Infra/Kubernetes

Kubernetes 1. Container 한방정리 (Kubelet, Container runtime)

Container와 Container Orchestration의 차이기존 Container는 새로운 버전으로 릴리즈 되면 매번 운영자가 수정해주어야 하지만, Container Orchestration은 업그레이드만 설정하면 알아서 Container Orchestration이 해결해 준다. 이것이 우리가 쿠버네티스를 배워야 하는 이유다. 쿠버네티스는 구글 주도하에 어려 기업들의 배포 운영의 노하우가 담긴 집합체이다. 쿠버네티스를 학습하기 전에, Linux OS의 흐름에 대해 짚고 넘어간다면, 앞으로 쿠버네티스 공식 문서를 볼 때 좀 더 이해가 빠를 것이다.Linux 진화 과정1. 1960년에 UNIX가 탄생했다. 2. 하지만 UNIX는 유료이기에, 이를 무료로 사용할 수 있게 만든(취미로 만들었다고 한다...

Infra/AWS

AWS ECS 무중단 CI/CD Pipeline 5. GitHub Action CI/CD Pipeline 구축

GitAction을 활용한 자동 배포 설정 가이드 지금까지 매번 수동으로 해줘야했던 작업들을 GitAction을 통해서 자동으로 배포하는 과정을 작성해보겠습니다.이번 글에서는 AWS ECS에 배포하는 과정을 GitHub Actions를 통해 자동화하는 방법을 설명하겠습니다. 1. YAML 파일 생성.github/workflows 디렉토리 아래에 YAML 파일을 생성합니다. 예를 들어 deploy.yaml이라는 이름으로 파일을 생성합니다.2. CI - 지속적 통합 (Continuous Integration)CI는 빌드와 테스트를 진행합니다. 아래 예제에서는 주석을 자세히 달아두었습니다.AWS에서 ECR 에 푸쉬할 정책을 생성합니다.jar 파일을 도커로 이미지로 만들어 ECR에 푸시하는 과정입니다.name:..

Infra/AWS

AWS ECS 무중단 CI/CD Pipeline 4. ECS Service 배포, HTTP Redirect

ECS 생성태스크 정의로 서비스 생성이제 대망의 ECS 서비스를 생성할 차례네요. 전에 설정한 태스크 정의대로 서버를 생성합시다.EC2를 사용하여 시간만큼 결제하는 것이 아닌, 사용한 만큼만 낼 것이므로 서버리스 FARGATE를 사용할 것입니다. 그렇기 때문에 용량 공급자는 그대로 FARGATE를 사용하면 됩니다. 참고로 FARGATE_SPOT는 FARGATE와 거의 유사하지만 할인을 70~80% 해주는 것입니다. 하지만 사용자들이 AWS FARGATE 서버에 요청을 많이 할 경우 서버를 빌려가므로 서버가 다운될 수 있으므로 선택하지 않습니다.배포 구성아래와 같이 서비스 이름을 적어주고, 같은 복제본의 태스크 수를 정해줍니다. 기본은 1로 되어있는데, 무중단 CI/CD를 하기 위해선 최소 2개가 필요해요..

Infra/AWS

AWS ECS 무중단 CI/CD Pipeline 3. 로드밸런서와 리스너, 대상그룹

AWS의 근본은 EC2오늘 생성할 로드밸런서, 리스너, 대상그룹은 모두 EC2에 있는 서비스입니다. 저번 글에서 Domain을 구입하여 서브 도메인 설정을 하고, 인증서를 구매하여 HTTPS 배포를 위한 준비를 마쳤습니다.이번 글에서는 로드밸런서와 리스너, 대상그룹을 생성하여 대용량 트래픽에 맞게 분산시켜 배포해볼게요. 로드밸런서, 보안그룹, 대상그룹을 생성해야합니다.가장 먼저 해야할 것은 대상그룹을 생성하는 일입니다.대상그룹 생성 후 로드밸런서 연결, 로드밸런서와 서비스 연결 순입니다.대상그룹 생성태스크들 또한 private IP로 이루어져 있습니다. 이들과 대상그룹을 매핑해줘야하므로 HTTP로 설정하고, 프로토콜 버전은 가장 호환성이 좋은 HTTP1로 생성할게요.상태검사 프로토콜. HTTP? HTT..

Infra/AWS

AWS ECS 무중단 CI/CD Pipeline 2. Route 53 & ACM 🔥😡🔥

이전 글에서 ECR 생성 및 ECR에 푸시할 수 있는 권한, ECR에 이미지를 푸시하는 방법을 다루었습니다.이번 글에서는 HTTPS를 사용하기 위한 인증서 발급하는 과정과 서브 도메인 등록을 설명할게요.내용이 좀 많은데, 차근차근 따라와주세요. Route 53.. 삽질을 참 많이하게 만든 친구입니다.여기서는 도메인을 이미 구입했다고 가정하겠습니다.저는 docker-ecs.net 이라는 도메인을 갖고 있어 이를 사용할게요. Route 53에서 호스팅 영역 생성호스팅 영역 생성 먼저, Route 53에 들어가서 DNS 관리의 호스팅 영역을 생성합니다. 호스팅 영역이란 주 도메인 및 서브 도메인을 관리하는 데이터베이스라고 생각하면 편해요. Route 53에 접속 후 호스팅 영역을 선택하고 호스트 영역 생성 버..

Infra/AWS

AWS ECS 무중단 CI/CD Pipeline 1. ECS 기본 개념, ECR, Task 정의, IAM, CLI

ECSECS.. 처음에 혼자 구축하다보면 절망하는 순간을 많이 만나게됩니다.저도 실제로 2번 새로 구축해봤는데, 매번 할 때마다 순서, 방법 등 다 까먹게 되더라구요.그래서 프로젝트에 했던 배포 계정 말고, 완전 새로운 계정으로 다시 해봤습니다.저도 나중에 ECS 를 구축할 상황이 올 수도 있고 ECS를 처음 배포하시는 분들도 있을텐데 제 글들이 도움이 됐으면 좋겠습니다~~!!혹시나 궁금한 점 있으시면 댓글이나 toychip7@gmail.com으로 메일 주세요!ECS 기본 개념Amazon ECS(Elastic Container Service)는 컨테이너 관리 서비스를 제공하여 애플리케이션을 쉽게 배포하고 확장할 수 있도록 합니다. ECS의 주요 구성 요소인 Cluster, Service, Task의 차이..

Infra/AWS

AWS ECS 무중단 CI/CD Pipeline 0. ECS 배포하게 된 배경

기존 배포 방식기존 배포 방식과 CodeDeploy의 한계처음에는 단일 EC2 인스턴스에 수동으로 애플리케이션을 배포했습니다. 매번 터미널을 통해 파일을 옮기고 명령어를 실행하는 반복적인 작업은 시간이 많이 소요되고, 작은 실수로도 서비스 장애가 발생할 수 있는 위험한 방법이었습니다.이후 AWS CodeDeploy를 도입하여 자동화를 시도했지만, 서버 장애 시 수동으로 재시작해야 했고, 배포 과정에서 예기치 않은 오류들이 빈번히 발생했습니다.CodeDeploy가 서버 상태를 제대로 감지하지 못해 배포 실패가 발생하면 수동으로 재설정해야 했습니다.이로 인해 배포 과정은 여전히 불안정하고 스트레스가 많았습니다.Docker와 ECS로의 전환이 문제를 해결하기 위해 Docker와 AWS ECS(Elastic C..

Infra/Docker

Docker volume 활용한 개발환경 구축

Volume 활용 코드를 저장하자마자 컨테이너에 바로 적용할 수 있는 방법이 있다. docker run -it -p 4000:4000 --env-file .env -v $(pwd)/app:/usr/src/my-app/app express-dev 위와 같이 사용하면되는데 하나씩 살펴보자. -it: 이 옵션은 컨테이너를 대화형 모드로 실행하며 터미널 입력을 가능하게 한다. i는 표준 입력(STDIN)을 열고, t는 가상 터미널을 할당합니다. -p 4000:4000: 이 옵션은 호스트의 포트와 컨테이너의 포트를 매핑한다. 여기서는 호스트의 4000번 포트를 컨테이너의 4000번 포트에 연결한다. 포트매핑에 대해 저번 글에서 다뤘다. 2023.12.10 - [CI-CD/Docker] - Port mapping ..

Infra/Docker

Docker Image 생성과 DockerIgnore를 사용한 .env 관리, 캐싱 활용

우선 컨테이너는 운영체제를 직접 설치하는 것이 아닌 흉내내는 것이다. DockerFile을 생성한다.From - Base Image, 운영체제 작성 Docker File은 설정파일이다.어떤 프로그램이, 어떠한 운영체제로 돌아가고, 어떻게 컨테이너가 켜졌을 때 안에 있는 프로그램을 어떻게 실행할 것인지 등 설정에 대한 파일이다. Docker Cli를 사용하여 Docker build를한다. "docker build ."build가 되면, Docker Server가 Docker Image를 만든다. 하지만 지금 env파일이 Docker에 올라가고 있다.git에 gitignore가 있듯이, docker에 dockerignore가 있다..dockerignore로 생성하여 .env를 적어주자.이렇게하고 docker..

토이 개발 스토리
'Infra' 카테고리의 글 목록