반응형
리뷰 (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 에 작성된 글입니다.
반응형
'구름 쿠버네티스' 카테고리의 다른 글
구름 쿠버네티스 전문가 과정 6기 - 60일차 (0) | 2023.11.24 |
---|---|
구름 쿠버네티스 전문가 과정 6기 - 59일차 (1) | 2023.11.22 |
구름 쿠버네티스 전문가 과정 6기 - 57일차 (6) | 2023.11.17 |
구름 쿠버네티스 전문가 과정 6기 - 56일차 (5) | 2023.11.16 |
구름 쿠버네티스 전문가 과정 6기 - 55일차 (0) | 2023.11.15 |