본문 바로가기

Cloud/Docker | K8s + CI, CD18

Github Actions를 이용한 CI 빌드, 테스트 자동화 Github Actions는 Github에서 제공하는 CI/CD 툴이다. 예전에 스터디에서 CircleCi, ArgoCD를 공부한 적이 있다. (Travis Ci도 Github 연동이 편해서 많이 쓰더라) 이때 개인 프로젝트에서 위와 같은 CI/CD 툴은 공부하기 어려웠고, CircleCi는 ㅎ 실습하다가 망해서 github repo에 private으로 영원히 묻어뒀다. 언젠간 열어줄게. 댕청해 보여서 마음에 드는 argo와 circleci에 고통받는 나의 모습을 본 스터디원.. 👤 : 정윤님!! Github Actions가 세상 편한데! 이걸로 하면 금방 하실 수 있어요!! 🐰 : CI/CD 늪에서 꺼내줘!!! 그렇게 작년부터는 계속 Github Actions를 쓰고 있다! 오늘은 Github Acti.. 2023. 5. 6.
컨테이너(Container) 너 좀 멋있다? 작년에 데엔/데옵 스터디를 하면서 인프라에 대해서 많이 공부했다. 그런데... 사람의 기억력이란.. 실습했던 자료는 남아있어서 괜찮은데 개념은 가물가물.. 작년에 깃허브 TIL, 블로그, 노션 여기저기 정리해서 찾아보기도 헷갈렸당 다시 공부해 보자! 출발~ 1. Virtualization (가상화) 넓은 의미: 컴퓨터 리소스(CPU, MEM 등)의 추상화 좁은 의미: 단일 컴퓨터의 리소스를 가상 머신(VM)이라고 하는 다수의 가상 컴퓨터로 분할하는 것 장점 리소스 효율성: 새로운 서비스를 위해 서버를 구매하지 않아도 된다. VM을 위한 컴퓨터는 필요. 관리 편의성: Infrastructure as Code(Iac), 자동화 가동 중단 시간 최소화: VM을 여러 개 두어, High Availability를.. 2023. 3. 3.
[CI/CD] GitHub Actions + AWS Elastic Beanstalk를 활용한 자동화 파이프라인 구축 (정성가득♥️) 웹 애플리케이션 및 서비스를 간편하게 배포하고 조정할 수 있는 서비스인 AWS Elastic Beanstalk를 만드는 법을 포스팅으로 따로 정리한 적 있다. 👉 [AWS] Elastic Beanstalk(EB) 사용해서 웹 애플리케이션 배포하기 또한 이전에 CI,CD 중 Jenkins와 Circle CI를 공부한 적이 있다. 젠킨스는 아래와 같은 이유로 공부했는데 따로 호스팅을 해야하는 등 서비스 운영을 위한 리소스 비용을 발생하여 부담이 되었다. 무료 사용 방대한 양의 플로그인 다양한 적용사례 및 풍부한 레퍼런스 🍀 그래서 이번에는 최근 현업에서 많이 사용하는 GitHub Actions를 이용하여 CI/CD 파이프라인을 구축하고 AWS Elastic Beanstalk로 배포 및 관리해보겠다. 1. A.. 2022. 10. 2.
[Kubernetes] 쿠버네티스란? 1.쿠버네티스 시작하기 01. VM vs Container [서버 관리] 다른 버전의 node.js 를 같은 서버에서 써야한다. 등등 한 서버에서 여러가지 버전을 잘 돌리고 싶다. 그래서 등장! VM (가상머신) : 서버 하나에 가상머신 여러개. But 여러가지 클라우드 환경에서 (multi) 사용하기 어렵고, 느리다. Hypervisor 존재 그런데!! 뚜둥 Docker 등장 🐳 [도커 등장] 모든 실행환경을 컨테이너로 환경을 격리화 시키는 방법이다. VM과 비교해서 Guest OS가 없어서 OS 가상화 보다 오버헤드가 적고, 효율적으로 동작한다. 어플리케이션을 OS 환경에 종속적이지 않게 동작할 수 있다. [컨테이너 특징] - 가상머신과 비교하여 컨테이너 생성이 쉽고 효율적 - 컨테이너 이미지를 이용.. 2022. 7. 20.
Cloud Computing 0. 개요 주요 구성 요소 컴퓨팅 기능, 초고속 네트워크망, 가상화 기술 서버 가상화 기술 자유도의 차이 클라우드 응용 SW SaaS (Software as a Service) 클라우드 플랫폼 PaaS (Platform as a Service) 클라우드 인프라 IaaS (Infrastructure as a Service) Public/Private/Hybrid Private Cloud (OpenStack) 클라우드를 사용하기 원하는 기업에서 자체적으로 전용망을 이용하여 구축 하는 클라우드 Multi Cloud 멀티 클라우드는 2곳 이상의 클라우드 벤더가 제공하는 2개 이상의 퍼블릭 또는 프라이빗 클라우드로 구성된 클라우드 접근 방식 1. Cloud .. 2022. 7. 12.
[Docker] Flask로 NLP 모델 서빙하기 나는 현재 '💊 Pill my rhythm' 이라는 서비스 명을 가진 AI 웹서비스를 진행하고 있다. 우리 서비스의 메인 기능은 '자신의 증상을 문장으로 작성하면 영양제 추천을 해주는 서비스'이다. 나는 백엔드 포지션으로 프론트에서 인공지능 모델을 돌려 결과값을 반환받기 위해서 인공지능 모델을 서빙하려고 한다. 모델은 python 코드로 작성되어 python 서버를 위해서 Flask를 사용했다. 📌 [관련 포스팅] 파이썬 가상 환경(virtualenv)과 Flask 서버 구축 [AI] 자연어처리, konlpy 설치 1. 가상환경 우선 코드 작성에 앞서 파이썬 가상 환경을 구성해야한다. 가상 환경 구성에 대한 내 포스팅은 따로 확인해볼 수 있다. 👉 파이썬 가상 환경(virtualenv)과 Flask 서버.. 2022. 6. 25.
[Docker] TypeScript + Node, Dockerfile 작성 및 build 우선 Docker Container를 run 하기 위해서는 Docker Image가 필요하다. Docker Image를 생성하는 방법은 두 가지가 있다. container를 대상으로 commit 명령어 실행 Dockerfile을 작성해서 build 명령어 실행 이때 나는 이미 사용하고 있는 container가 없기 때문에 Dockerfile을 이용해서 Image를 build 했다. 1. Image (이미지) ✔️ 도커 이미지는 컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있는 것이다. 다음과 같은 이미지 파일을 만들기 위해서 Dockerfile을 작성해보자. 2. Dockerfile FROM : 어떤 리눅스를 사용할 것인지에 대한 것 COPY : 파일 복사 현재 디렉토리 밑에 /app에 복사 (/.. 2022. 6. 25.
[CI/CD][#2] Jenkins를 활용한 자동화 파이프라인 구축 본격적으로 Jenkins로 CI/CD 파이프라인을 구축해보자. 📌 지난 포스팅 [CI/CD][#0] Docker, K8s, CI/CD 활용해 무중단 배포하기 - Intro [CI/CD][#1] EC2(ubuntu)에 Jenkins 설치하기 1. Jenkins에 Git 연결 'Dashboard > Jenkins 관리 > Security' 로 들어가 'Manage Credentials'를 선택한다. 그 다음 'Jenkins > Global credentials'를 차례로 누른다. 그 다음 'Add Credentials'를 클릭해서 추가해준다. 1) Git에서 Access Token 발급 나는 기존에 발급받은 토큰을 그대로 사용했다. username: Github 아이디 password: GitHub 토큰 i.. 2022. 5. 24.
[CI/CD][#1] EC2(ubuntu)에 Jenkins 설치하기 0. 개요 우선 많은 CI,CD 중 Jenkins를 사용한 이유는 다음과 같다. 무료 사용 방대한 양의 플로그인 다양한 적용사례 및 풍부한 레퍼런스 ✔️ tool 종류 더보기 Jenkins : Buildkite GitHub Actions GitLab CI/CD CircleCI Argo CD 📌 지난 포스팅 [CI/CD][#0] Docker, K8s, CI/CD 활용해 무중단 배포하기 - Intro 1. EC2(ubuntu)에 Jenkins 설치하기 Window인 로컬에서 하는 것보다 EC2 인스턴스에서 실습하는 것이 용이할 것이라 판단하여 EC2 인스턴스 위에 Jenkins를 설치해보자. 📌 설치 관련 Jenkins 공식문서 1) Jenkins 서버를 위한 인스턴스 생성 Jenkins 서버를 위한 인스턴.. 2022. 5. 23.
[CI/CD][#1] CircleCI 를 활용한 자동화 파이프라인 구축 0. 실습을 위한 GitHub Repo 구성 2차 프로젝트의 back 코드만 가지고 실습을 위한 GitHub 레퍼지토리를 생성했다. 1. CircleCI 1) 접속하기 📌 CircleCI 홈페이지 바로가기 깃허브로 로그인을 한다. 로그인을 하면 CircleCI 콘솔에 접속할 수 있다. 이때 이미 ./circleci/config.yml 파일을 생성해뒀다면 Set up Project 버튼이 비활성화 되어 있을 것이다. 나는 'CircleCI-practice' 레포 옆의 Set up Project를 클릭했다. config.yml 파일을 선택하는 다양한 방법이 있는데 그 중에서 나는 Faster인 새로운 브렌치에 커밋하는 방법을 선택했다. Success라고 되면 완성된 것이다. 깃허브에 들어가보면 자동으로 co.. 2022. 5. 17.
[CI/CD][#0] Docker, K8s, CI/CD 활용해 무중단 배포하기 - Intro 0. 개요 👉 GitHub Repo 확인하기 지난 3주간 2차 웹서비스 프로젝트를 진행했다. 이때, 1차 프로젝트 이후 학습한 Docker를 사용하여 배포를 진행했다. 확실히 1차 때 배포보다 좀 더 편리해졌다. 하지만 여기서 멈추면 안돼! 여전히 불편한 점이 있다. 자동화! Docker를 사용하여 좀 더 배포 과정이 쉬워지기는 했지만 프로젝트 중간중간 소스코드가 업데이트 되면 내가 다시 수동으로 image를 새로 빌드하고 docker hub에 push하고 업데이트된 버전으로 다시 docker-compose를 띄웠다. 새로운 컨테이너를 올리기 위해 배포 과정을 중단해야했고 이 과정에서 나는 중단하지 않고 자동으로 release할 방법이 필요했다. 또한, 여러 명의 개발자가 작업을 집중해서 하다보면 많은 .. 2022. 5. 14.
[#4] GCP GKE에서 Kubernetes로 컨테이너 관리하기 2탄 지난 실습에서 Container Registry에 이미지를 push 했다. Container Registry에 저장함으로써 Docker Hub와 같은 Public Registry가 아닌 Private Registry를 구축해 보았다. 이제 GKE로 본격 실습을 시작하자 1. 클러스터 생성 우선 클러스터를 생성하자. GKE에서 만든 클러스터로 컨테이너화된 웹 애플리케이션을 배포하고 관리할 수 있다. 지난 GKE 시작하기 포스팅에서는 console을 이용했지만 CLI를 사용하는 방법도 실습해보겠다. ( 해당 실습은 로컬에서 GCP를 사용하고 있으므로 로컬 사용을 위해서는 SDK를 설치하고 로그인하여 권한을 부여해야 한다.) 📑 지난 포스팅 [GCP] GKE에서 Kubernetes 시작하기 1) 옵션 설정 g.. 2022. 4. 18.
[Docker] 프로젝트에 도입 22/03/15 (화) ~ 22/03/26 (토) 약 2주간 포트폴리오 공유 웹 서비스를 진행했다. 이때, 마지막 배포에서 VM을 사용했을 때 두 가지 불편한 점을 겪었다. 1. 받아온 코드를 front, back 폴더 별로 이동해 모듈 설치하고 실행시켜야 하는 점. 2. 코드가 버전업 되어 원래 app의 소스를 고쳐 배포를 하게 되는 과정이 복잡하고 다시 배포하는 과정에서 에러 발생. (로컬 서버는 윈도우 OS 이지만 운영 서버는 ubuntu OS로 어플리케이션을 OS 환경에 종속적이지 않게 만들 필요가 있었다.) 그래서 팀프로젝트가 끝난 후 Docker에 대해 공부하기 시작했다. Docker 환경이라면 로컬에서 운영 환경 image를 만들어 registry에 배포하고 기존 컨테이너를 내리고 새로운 컨.. 2022. 4. 16.
[#3] GCP GKE에서 Kubernetes로 컨테이너 관리하기 1탄 현재 K8s를 실습하는 나는 이전에 진행했던 프로젝트를 이미지로 build하여 docker-hub에 push하였고, docker compose로 배포까지 진행했다. 이제 배포된 시스템을 관리하는 컨테이너 오케스트레이션에 대해서 공부하려 한다. 이전에는 AWS EC2를 사용했지만 쿠버네티스 실습은 글로벌 클라우드 중 GCP를 사용한다. 1. Docker 이미지 빌드 우선 지난 실습을 통해 Dockerfile은 구성되어 있다. 오늘은 우선 node-app 부터 실습해보겠다. 1) Dockerfile 작성 2) Image Build * GCP 프로젝트 아이디는 환경변수화 해서 사용할 수 있다. export PROJECT_ID="GCP 프로젝트 아이디" 프로젝트 아이디는 GCP console에서 확인할 수 있다.. 2022. 4. 16.
[GCP] GKE에서 Kubernetes 시작하기 컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼 쿠버네티스는 Amazon에서는 EKS, Elastic Kubernetes Service / Azure에서는 AKS / Google에서는 GKE, Kubernetes Engine을 제공한다. 나는 AWS 프리티어를 사용하고 있지만 EKS는 프리티어에서 제공하고 있지 않아 GCP의 GKE를 사용해서 실습을 진행할 것이다. ( AWS EC2에서 설치하여 사용할 수 있지만 GCP가 k8s 클러스터들 가장 잘 제공한다는 것을 보고 GCP에서 시작하기로 결정했다. ) 쿠버네티스에 대한 개념은 공식문서를 통해 계속 추가적으로 공부해나갈 예정이다. 많은 새로운 Tool들을 공식문서를 통해 배우고 익혀 프로젝트에 적용하는 과정 또한 현업에서 앞으로.. 2022. 4. 16.
반응형