어쩌다 IT
article thumbnail
반응형

리뷰 (Review)

더보기

Helm Chart

  • Kubernetes Cluster 상에 Application을 패키지 형태로 관리해주는 도구
  • Helm 패키지를 구성하기 위한 정보를 담고 있는 YAML 형식의 파일들을 chart라고 한다.

 

Chart 생성

  • helm create <chart 이름>

 

Chart 디렉토리 구조

  • Chart.yaml - chart에 대한 이름, 버전, 설명 등을 정의한 파일
  • values.yaml -  chart 설치 시 사용할 환경 변수, 값을 정의한 파일
  • charts/ - chart에서 사용하는 종속 chart들이 압축 파일(.tgz)로 존재
  • template/ - 설치할 resource들의 기본 틀을 정의한 Manifest YAML 파일
  • _helpers.tpl - template manifest 파일들에서 공유하는 변수 정의

 

Chart 검사

  • helm lint 명령을 이용하여 chart 문법에 오류가 없는지 검사
    • helm lint <chart 이름>
  • helm template 명령을 이용하여 template 디렉토리의 파일에서 사용하는 변수 참조가 실제 리소스 배포 시
    어떻게 대체되는지 미리 보기
    • helm template <chart 이름>

 

Chart 패키징

  • chart 파일을 압축 파일 (.tgz) 형태로 만드는 과정
  • helm package <chart 경로>

CI/CD 개요 및 파이프라인

 

Application 개발 및 배포 과정

  • 문제 선정 - 제공하려는 서비스에 대한 결정
  • 문제 정의 - 제공하려는 서비스에 따른 기능 명세
  • 설계 - Algorithm 설계와 DataBase 설계, 화면 설계 (UI, User Interface)
  • 구현 - 프로그래밍 언어를 이용하여 구현 (coding)
    • build - 구현된 프로그램을 binary 형태로 변경하는 과정
  • 테스트
    • 단위 테스트 - 기능 (함수, function) 단위 테스트
    • 통합 테스트 - 전체 기능에 대한 테스트
    • 인수 테스트 - 문제 정의에 기반하여 최종적인 테스트
  • 운영 (배포) - 유지 보수 수행
    • Application bug 수정
    • 사용자 요구 사항 변화에 대한 반영

 

Software 개발 생명 주기

  • SDLC - Software Development LifeCycle
  • 문제 정의 → 설계 → 구현 → 테스트 → 유지 보수

 

현재 Application 개발 과정은 협업에 의해 진행

  • 여러 개발자에 의해서 기능을 나누어서 개발
  • 역할별 구분
    • PM - Project Manager
    • 분석가 - 문제 정의
    • 설계가 - System 설계 / Application 설계
    • 프로그래머 (개발자) - 구현, 단위 테스트
    • 테스터 - Application 테스트, 통합 테스트
    • 유지 보수 담당자 - 유지 보수
  • 협업 시 문제점
    • 공유 문제 - 결과물에 대한 공유
    • 프로그램 코드 통합 시 많은 문제 발생
  • 협업 시 오는 문제를 해결하기 위하여 공유 도구 사용
    • 형상 관리 도구 (버전 관리 도구) - Git
  • 개발자와 운영자 간의 문제
    • 개발자 - Application 개발에 대한 책임
    • 운영자 - Application 배포 및 운영에 대한 책임
    • 개발자와 운영자 사이의 시각 차이에 따른 문제
  • 시스템 구성
    • 개발 서버 (빌드 서버) - 개발자 사용, build 환경 구성
    • 배포 서버 (타겟 서버) - Application 배포, Application 배포 환경 구성
    • 운영 서버 - 운영 목적, 운영 환경 구성

 

지속적 통합, CI (Continuous Integration)

  • 개발자를 위한 자동화 프로세스
  • Application 코드 변경 사항이 정기적으로 빌드/테스트되어 공유 저장소(Git 등)에 병합(통합)
    • 빌드 도구 - 프로그래밍 언어에 따라 결정
    • 테스트 도구 - 테스트 전용 도구
  • 여러 개발자가 동시에 Application 개발 시 서로 충돌할 수 있는 문제 해결
  • 개발 서버 (빌드 서버) 환경에 구성

 

CD

  • CD는 배포 서버(타겟 서버)에서 운영 서버로 Application 배포 자동화
  • 지속적 서비스 제공 (Continuous Delivery)
    • 수동 배포 
    • 개발자는 Application에 적용한 변경 사항을 버그 테스트를 거쳐 공유 저장소에 자동 업로드
    • 운영자는 Application을 공유 저장소에서 운영 환경으로 배포
  • 지속적 배포 (Continuous Deployment)
    • 자동 배포
    • 개발자는 변경 사항을 공유 저장소에 저장하면 운영 환경까지 자동으로 릴리즈 되는 형태

 

CI / CD는 Micro Service Architecture가 활성화되면서 강조되고 적용되고 있다.

 

CI / CD 파이프라인

  • CI / CD 의 각 과정이 연계되는 구조

 

  • CI / CD 사용 도구


Kubernetes CI / CD

 

GitOps 기반 지속적 배포

  • Git + Operation
  • GitOps는 Kubernetes를 활용하여 Application 관리를 수행하는 환경의 CI / CD 방법론
  • Kubernetes Cluster를 관리하고 Cluster에 Application을 배포하는 방법론
  • GitOps 핵심
    • Application 소스 뿐만 아니라 배포 설정까지 Git 저장소를 통해 관리
    • Git 저장소에 선언적으로 기술된 Kubernetes manifest(YAML 형식)와 같은 파일을 저장하고 이를 사용하여
      배포를 진행하는 방식 

 

GitOps를 적용한 Kubernetes CI / CD 파이프라인

  • 개발자 Pipeline
    • Application 코드를 Git 저장소에 저장
    • Git 저장소에 있는 Application 코드를 배포 서버를 통해 배포 - Jenkins (CI tools)
      • 시스템 운영자 Pipeline의 Git 저장소에 정보 등록
    • Application 코드는 container image로 생성해서 repository에 저장
  • 시스템 운영자 Pipeline
    • Helm을 이용하여 패키지 구성 결과를 Git 저장소에 저장
    • Git 저장소의 내용을 실제 Kubernetes Cluster에 배포 - Argo (CD tools)

TIF

~ 10/30 따배쿠 마무리

10/31 ~ 11/19 갓샤드 강의 및 기출 문제들 풀어보기

 

 

2022. 10. 26 에 작성된 글입니다.

 

반응형
profile

어쩌다 IT

@jwlish

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!