주간 랩업/[SCC] Docker 기반 CI&CD 파이프라인 구축하기 14

5. 아직 한 발 남았다! Next Step 생각하기 +후기

5주차 목표🥳 강의에서 배운 내용 총 정리🥳 학습 후기 ✍️ 복습하기애플리케이션 라이브러리, 빌드 시스템, 런타임, 툴, 운영체제에서 제공하는 PID, USER, Volume, IPC, Network까지 함께 패키징 해서 만든 도커 이미지로 어디에서든 동일한 동작을 하는 애플리케이션을 배포할 수 있다AWS 클라우드의 다양한 상품을 알아보았고 GitLab을 통해 자동으로 클라우드로 배포해보았다. 이번 실습에서는 AWS의 EC2, ECR, ECS, ELB를 사용해 보았다 Docker 기반 CI/CD 파이프라인 구축하기 강의를 통해서 개념으로만 알고 있었던 CI/CD를 직접 다루는 것이 좋았다. 강의 초반에 이런저런 오류가 많아서 하나씩 해결하면서 실습하느라 시간이 오래 걸렸다. (가상 머신에서 복붙하는 ..

4. “진짜” 배포를 위해 파이프라인 확장하기

✍️ 4주차 목표💡파이프라인에 드 리뷰, 머지 요청, 승인 절차를 넣어서 실무적인 환경 구축하기💡파이프라인 과정이 Slack으로 전달되는 메시지 시스템 구축하기 1. Group과 Member로 프로젝트 관리하기 2. Feature 브랜치 파이프라인 조건 수정하기 + 머지 요청 승인하기feature branch가 머지될 때마다 빌드, 배포 스테이지가 실행되면 안 되기 때문에 only: 설정을 이용해서 특정 브랜치에서만 job이 실행되도록 한다. 파이프라인 예외 조건은 다양한 방식이 있는데 특정 확장자에 대한 조건을 설정할 수도 있다. 이렇게 각 파이프라인과 멤버 권한에 따라서 유연한 수정이 가능하다!   3. Slack 연동하기원활한 소통과 협업 환경을 위해서 Slack과 GitLab을 연동해서 CIC..

3-3. Docker 어플리케이션 배포하기

Amazon ECS 서비스에서 클러스터를 생성한다 태스크 정의를 생성한다 생성된 클러스터에서 컨테이너를 실행할 서비스를 생성한다  🔥 이제 GitLab Runner를 이용해서 자동으로 배포해보자! 🔽 자동으로 배포하기 위해 Makefile과 .gitlab-ci.yml 파일을 변경한다.   🔽 GitLab으로 변경사항을 커밋하면 파이프라인에서 정상적으로 CICD가 되는지 확인할 수 있다.  🔽 curl과 웹 브라우저를 통해서 변경된 프로그램이 잘 실행되는 것을 확인해보았다. 과금 이슈로 로드밸런싱을 삭제한 상태라 Public IP로 접근했다.

3-2. Amazon ECS란?

🔽 3주차 목표 💡 ECR에 푸시한 도커 이미지를 배포하기💡 AWS ECS는 AWS에서 제공하는 docker container 실행 서비스로 ECR에 있는 docker image를 ECS에 배포해서 “인터넷 사용자가 접속할 수 있도록” 하기  GitLab에 코드가 push 되면 Docker Image 가 만들어지고 ECR에 Push를 하게 됩니다. ECR에 Push를 하면 GitLab은 “deploy stage”의 job을 실행하는데, 이 job은 ECS를 이용해서 Docker Image를 PULL 해서 docker container 실행하게 됩니다. 이제 사용자는 웹 브라우저를 이용해서 서비스를 사용할 수 있게 됩니다.AWS는 API를 이용해서 ECS에 새로운 docker container 서비스..

2-10. CI/CD 구성 살펴보기

✨ GitLab 파이프라인 구성 🔵 .gitlab-ci.yml 은 프로젝트의 CI / CD 파이프라인 설정 정보를 담고 있는 파일이다. 이 파일에 각 스테이지별 작업 스크립트를 작성한다.🔵 Makefile은 make (소프트웨어 빌드 프로세스를 자동화하기 위해 사용하는 프로그램)가 사용하는 빌드 규칙이 담겨있는 파일이다.   .gitlab-ci.yml 을 다음과 같이 수정해서 개발자가 직접 명령을 내리지 않고 자동으로 push까지 하도록 만든다.stages: # List of stages for jobs, and their order of execution - build - test - sec - deploybuild-job: # This job runs in the..

2-8. GitLab을 이용한 Push 자동화하기

GitLab을 사용해서 개발자의 코드를 읽고 자동화 스크립트를 실행하여 도커 빌드, 로그인, 푸시, 그리고 디플로이까지 포함한 프로세스를 자동화한다  깃랩 CI 구성요소 - GitLab은 GitLab CI와 GitLab Runner로 구성되어 있으며, CI가 Runner를 작동시켜 자동화 프로세스를 진행한다- GitLab CI는 사용자 관리, 저장소 확인 등 관리적 기능을 제공하는 반면, GitLab Runner는 코드를 실행하는 역할- GitLab Runner는 Git 저장소에서 빌드할 코드를 가져와 GitLab CI 설정에 따라 파이프라인 스크립트를 실행하여 배포 깃랩 러너 설치 및 등록  깃랩 파이프라인 구성

2-6. 프로젝트 코드 작업 이해하기

💡 그룹 및 프로젝트를 생성하고 소스 코드 업로드, 도커 및 메이크 파일을 설정하여 도커 이미지 빌드하기 ➡️ Docker 파일은 도커 이미지를 만들기 위한 사양과 명령어를 포함➡️ Makefile은 빌드를 도와주는 도구 💡  AWS 클라우드에 도커 이미지를 푸시하여 애플리케이션 배포를 위한 준비하기  GitLab에서 새로운 Group과 git 프로젝트 만들기   도커파일 살펴보기FROM python:3.9-slim//Base Image : '파이썬' 개발 환경을 이미 갖추고 있는 만들어진 이미지를 재사용 -> 개발 환경 구축 시간 단축WORKDIR /opt/app//컨테이너가 실행된 후의 작업 디렉토리COPY . /opt/app//현재 디렉토리의 모든 파일을 workdir로 복사RUN pip ins..

2. GitLab 한 스푼으로 소스코드 다스리기

🔥2주 차 학습 목표💡CI/CD는 개발에서 배포까지의 파이프라인을 설계하고 자동으로 실행하는 과정입니다. 이 과정을 수행하기 위해서는 설계 및 자동화를 위한 툴이 필요합니다. CI/CD를 위한 여러 툴 중 가장 널리 사용되는 툴 중 하나인 GitLab을 살펴봅니다.💡Docker 형태의 애플리케이션을 배포하게 됩니다. 예제 애플리케이션을 Docker image로 build하고 직접 실행해 봅니다. 이렇게 빌드된 docker image를 가상 머신, 로컬 PC, 클라우드에 배포하기 위해서는 docker image 저장소인 docker image registry에 등록해야 합니다. AWS에서 제공하는 docker image registry에 등록하고 이 과정을 GitLab을 이용해서 자동화하겠습니다. ✅..

1-10. Docker란?

🤔 도커는 클라우드 네이티브 개발의 필수 도구로, 애플리케이션을 패키징하여 다양한 환경에서 동일한 조건으로 실행할 수 있게 합니다. 이로 인해 개발자 간의 협업이 원활해지고, 실행 시 버전 불일치 문제를 최소화합니다. 마지막으로, 컨테이너 오케스트레이션 툴과의 통합을 통해 효율적인 운영과 협업을 가능하게 합니다. 왜 Docker를 해야 하나요? ✅ Kubernetes는 소프트웨어 산업의 사실상 표준으로 Docker 기반의 플랫폼입니다. 이제 모든 개발은 Docker를 염두에 두고 개발을 합니다. 가볍고, 빠르고, 모든 의존성을 포함하고 있어서 개발과 배포를 용이하게 하기 때문입니다. Docker에 대해 ✅ 도커는 패키징 하는 기술이다✅ 타 패키징 툴과 비교해서 애플리케이션 실행에 필요한 라이브러리, 런..

1-8. Linux 코드 작성 환경 준비하기, 생성한 EC2 인스턴스에 연결하기

🔥 Ubuntu 환경에서 VS Code를 설치하고 환경 설정을 해보자!  VS Code 설치하기 다운로드 디렉토리에서 dpkg -i 명령어로 설치한다  아무 파일을 생성해준 후 code -파일명-을 입력하면 VS 편집기가 열리고 편하게 파일을 작성/수정할 수 있다.   ✅ Python 설치하기Python이 기본적으로 다운로드 돼있지 않은 경우패키지 목록을 업데이트 합니다. sudo apt updatePython을 설치합니다 (Python 3.x 버전) sudo apt install python3설치 확인 python3 --versionpython3로 설치 했을 경우 관련 명령어 입력 시 python3로 입력 pip가 기본적으로 설치되어 있지 않거나 명령어 사용이 불가한 경우 sudo apt insta..