1. GitOps :
GitOps 배경 : 기존 소프트웨어 배포 시 인프라환경과 소프트웨어를 따로 관리하다 보니 인프라와 소프트웨어 간 불일치로 배포 및 운영과정에서 문제 발생
GitOps 개념
. Git저장소를 사용하는 소프트웨어 배포 접근 방식으로 인프라와 소프트웨어를 함꼐 관리하기 때문에 일관성을 유지
. 워크플로우를 유도하고 클라우드 네이티브 애플리케이션에 대한 지속적인 배포(CD)를 구현하도록 지원하는 원칙 세트
. 위브웍스(Weaveworks Inc.)에서 처음 사용한 용어로 프로젝트에 데브옵스를 적용하는 실천 방법 중 하나
. 애플리케이션의 배포와 운영에 관련된 모든 요소를 코드화하여 깃(Git)에서 관리(Ops) 하는 것
. 기본 개념은 코드를 이용하여 인프라를 프로비저닝하고 관리하는 IaC에서 나왔으나 깃옵스는 인프라에서 전체 애플리케이션 범위로 확장함
Git : 분산형 소스코드 버전관리 시스템
GitOps의 구성
- 선언형 모델(Declarative Model)
: 애플리케이션 및 인프라를 위한 선언형 코드로 구성
. IaC :코드를 통한 인프라 관리 및 프로비저닝
. PaC : 애플리케이션이 실행될 수 있도록 K8S 자원을 코드를 통해 관리
- 단일 진실 공급원(Single Source of Truth, SSOT) : 단일 소스코드 저장소(Git)
- Jenkins/ArgoCD : 선언형 코드를 통한 CD
GitOps의 핵심기능
1) 배포에 관련된 모든 일을 선언형 기술서(Declarative Descriptions) 형태로 작성하여 Config Repository(또는 Environment Repository)에서 관리
2) Config Repository의 선언형 기술서와 운영 환경 간 상태 차이가 없도록 유지시켜주는 자동화 시스템 구성
=> 이후에는 Config Repository에 있는 기술서에 변경하기 원하는 내용을 적으면 자동으로 반영되는 환경이 구성됨
GitOps 저장소 전략
- 애플리케이션 저장소 : 애플리케이션 소스코드와 애플리케이션 배포를 위한 배포 매니페스트
- 배포 환경 구성 저장소 : 배포 환경에 대한 모든 매니페스트
GitOps 배포 전략
- 푸시 타입(Push Type)
- 풀 타입(Pull Type) : 권장
2. ArgoCD
ArgoCD 개념 : GitOps를 구현하기 위한 도구 중 하나로 K8S 애플리케이션의 자동 배포를 위한 오픈소스 도구
. CI/CD 파이프라인 중 CD부분을 담당하고 Git 저장송에 변경된 사항을 감지하여 자동으로 K8S 클러스터에 애플리케이션을 배포함
ArgoCD 동작방식
1) 사용자가 Git저장소에 push
이때 K8S 배포방식인 Helm 또는 Kustomize를 사용한다.
2) ArgoCD가 Git저장소에 변경된 상태를 감지하낟.
3) 변경된 내용을 K8S에 배포하여 반영한다.
'IT Tech > Concept' 카테고리의 다른 글
CVE (Common Vulnerabilites and Exposures, 공통 취약점 및 노출) (0) | 2024.06.14 |
---|---|
Ansible AWX (0) | 2024.06.13 |
SASE (Secure Access Service Edge), 싸씨 (0) | 2024.05.02 |
Active Directory 원리 (0) | 2024.02.16 |
RASC (0) | 2023.09.21 |