일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 티스토리챌린지
- Buffered channel
- 대규모 시스템 설계
- body size
- elasticsearch
- apollo router
- 배포 프로세스
- 디자인패턴
- go
- 윈도우키보드
- Intellij
- UnBuffered channel
- Helm V3
- GoF
- Golines
- Kubernetes
- gitops
- Logrus
- notification system
- 오블완
- goland
- 배포 파이프라인
- System Design
- intellij ide
- AWS
- Infra
- GoF 디자인패턴
- 컴포지트패턴
- http 413
- golang
Archives
- Today
- Total
Fall in IT.
Argo CD (GitOps) 간단하게 알아보기 본문
안녕하세요.
오늘은 Kubernetes 클러스터 배포 도구인 Argo CD에 대해서 간단하게 알아보겠습니다.
Argo CD
- Argo CD는 GitOps 스타일의 배포를 지원하는 CD 도구이다
- Git 저장소의 내용과 쿠버네티스 클러스터를 동기화해주는 역할을 하는 에이전트이다
- 쿠버네티스 클러스터 내부에서 Pod 형태로 배포가 된다.
특징
- 애플리케이션 정의, 구성 및 환경은 선언적이어야하며 버전을 제어해야한다.
- 애플리케이션 배포 및 수명주기 관리는 자동화되고 확인하기 쉽다.
작동 원리
- Argo CD는 원하는 애플리케이션 상태를 정의하기위한 소스로 Git repository를 사용하는 GitOps 패턴을 따른다.
- Kubernetes 매니페스트는 여러 방법으로 지정할 수 있다. (필자는 helm 차트를 사용하였습니다.)
- Argo CD는 지정된 대상 환경에서 원하는 애플리케이션 상태의 배포를 자동화한다.
빠른 시작
$kubectl create namespace argocd
$kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
Architecture
Argo CD는 실행중인 애플리케이션을 지속적으로 모니터링하고 현재 라이브 상태를 원하는 대상 상태와 비교하는 Kubernetes 컨트롤러로 구현된다.
GitOps
- 핵심은 git repository에 저장된 쿠버네티스 매니페스트 같은 파일을 이용하여 배포를 선언적으로 하는 것이다.
- git 저장소에 있는 것을 쿠버네티스 클러스터에 동기화한다.
기존의 배포 방식
- 개발자가 소스코드를 작성한다.
- git 저장소에 올린다.
- Jenkins, CircleCI, Github Action과 같은 CI툴에 의해서 테스트와 빌드 같은 작업이 실행되고
- 생성한 컨테이너 이미지를 컨테이너 저장소(ECR)에 업로드 한다.
- CI/CD 툴은 업로드 된 컨테이너 이미지의 정보를 참조해서 서버에 배포한다.
GitOps의 배포방식
- (기존과 동일) 개발자가 소스코드를 작성한다.
- (기존과 동일) Git저장소에 올린다.
- (기존과 동일) Jenkins, CircleCI, Github Action과 같은 CI툴에 의해서 테스트와 빌드 같은 작업이 실행되고 생성한 컨테이너 이미지를 컨테이너 저장소(ECR)에 업로드 한 후
- 매니페스트가 저장된 Git 저장소를 가져온다.
- 그리고 매니페스트의 특정 부분(예를 들면 이미지 태그)을 업데이트한 후 Git 저장소에 올리고 작업을 종료한다.
참조
'시스템구축' 카테고리의 다른 글
AWS S3, CloudFront, Lambda, Lambda@Edge를 활용한 이미지 리사이징 처리하기 (0) | 2023.01.01 |
---|---|
Kubernetes Service 개념정리 (0) | 2022.02.03 |
리눅스(ubuntu)에서 sudo 패스워드 없이 사용하는법 (0) | 2018.06.28 |
리눅스 시간 UTC에서 KST로 변경하는 방법 (0) | 2018.06.27 |
코드리뷰시스템 gerrit 간단 정리 (0) | 2017.07.19 |
Comments