예제로 배우는 Argo CD [깃옵스를 통한 클라우드 네이티브 애플리케이션 관리]
- 원서명Argo CD in Practice: The GitOps way of managing cloud-native applications (ISBN 9781803233321)
- 지은이리비우 코스테아(Liviu Costea), 스피로스 이코노마키스(Spiros Economakis)
- 옮긴이이장훈
- ISBN : 9791161758282
- 25,000원 (eBook 20,000원)
- 2024년 02월 29일 펴냄
- 페이퍼백 | 284쪽 | 188*235mm
- 시리즈 : 소프트웨어 아키텍처
책 소개
소스 코드 파일과 5장 보충자료를 여기에서 내려 받으실 수 있습니다.
https://github.com/AcornPublishing/argo-cd-in-practice
(5장의 소스 코드는 원서의 오류사항을 역자가 수정한 파일입니다. 보충자료의 실습 결과는 위 링크에서 내려 받을 수 있는
eks.tf / iam.tf / network.tf / provider.tf / variables.tf / versions.tf 파일을 사용해야 정상적으로 출력되는 점 참고 부탁드립니다.)
요약
Argo CD는 쿠버네티스 클러스터에서 선언적인 깃옵스 워크플로를 제공하는 대표적인 도구로, 깃 리포지터리를 기반으로 애플리케이션 배포와 관리를 자동화하는 역할을 한다.
Argo CD의 아키텍처와 동작원리를 살펴보고, IaC 도구 또는 다양한 방법을 통해 Argo CD 클러스터를 구현해보면서 학습할 수 있도록 구성된 책이다. Argo CD를 운영하는 어드민 담당자에게 필요한 고가용성 설정, 사용자 접근 통제, 보안 강화 방법과 문제 해결에 대한 내용이 담겨 있다. 또한 개발자나 엔지니어에게는 Argo CD를 통한 배포 파이프라인을 설계하는 방법과 YAML을 좀 더 효율적으로 작성하는 방법이 도움이 될 것이다. 이 책의 내용을 바탕으로 Argo CD를 실무에 적용해 보길 바란다.
추천의 글
저자의 완벽한 설명을 통해 Argo CD를 단 몇 분만에 사용할 수 있도록 돕는 책이다. 깃옵스(GitOps)와 Argo CD에 대한 기본적인 개념부터 사용하는 용어까지 정리할 뿐만 아니라 매우 유용하고 실제 운영 시 사용 가능한 많은 도구를 다룬다. 기본 예제도 YAML 스니펫(snippet)으로 제공하기 때문에 실제 문제 해결에 도움이 될 것이다.
내용이 점점 심화될수록 더 재미있어질 것이다. Argo CD의 고급 기능과 아키텍처 및 내부 구조에 대해 더 많은 것을 학습할 것이다. 이러한 고급 자료들은 회사에서 Argo CD를 운영하면서 확장성과 성능에 대해 고민하는 데브옵스(DevOps) 엔지니어에게 유용할 것이다. 책에서는 Argo CD를 운영하는 모범 사례와 패턴에 대해서 설명한다. 따라서 깃옵스에 입문하고 싶거나 이미 친숙하거나 주제에 대해서 심화 학습하고 싶은 사람들에게 추천한다.
이 책에서 다루는 내용
◆ 깃옵스 원칙을 이해하고 IaC와 관련성 파악
◆ Argo CD가 Git 상태와 클러스터 상태를 조정하는 원리 탐구 이해
◆ 프로덕션 환경에서 신뢰성과 문제 해결에 초점을 두고 Argo CD 운영
◆ 필수 유틸리티를 사용해 깃옵스 방식으로 쿠버네티스 클러스터 부트스트랩
◆ CD 파이프라인 구축과 배포 실패 최소화
◆ 쿠버네티스 작업 시 함께 사용하는 YAML을 검증하고 확인하는 방법 탐구
◆ 깃옵스 대중화에 대한 이해와 깃옵스 엔진의 장점 소개
이 책의 대상 독자
이 책은 소프트웨어 엔지니어, 데브옵스 엔지니어, SRE와 같이 쿠버네티스를 운영하면서 CD 파이프라인 구축을 담당하는 사람, 본인의 커리어를 향상시키고 싶은 사람을 대상으로 한다. 쿠버네티스(Kubernetes), 헬름(Helm), 커스터마이즈(Kustomize), CD 파이프라인에 대한 기본적인 지식이 있다면 이 책을 더 잘 활용할 수 있다.
이 책의 구성
1장, ‘깃옵스와 쿠버네티스’에서는 쿠버네티스가 어떻게 깃옵스 개념을 도입할 수 있었는지 알아본다. 선언적 API를 알아보고, 파일, 폴더, 깃 리포지터리에서 리소스를 어떻게 적용할 수 있는지 살펴본다.
2장, ‘Argo CD 시작하기’에서는 Argo CD의 핵심 개념과 아키텍처 개요를 소개하고 자세히 이해하기 위해 알아야 할 필수 용어를 살펴본다.
3장, ‘Argo CD 운영’에서는 고가용성 매니페스트(manifest)를 사용해 Argo CD를 설치해보고, 가장 최적의 구성 옵션이 무엇인지 알아본다. 재해 복구를 대비하고, 많은 메트릭 중 꼭 필요한 것은 무엇인지 살펴본다.
4장, ‘접근 제어’에서는 사용자 접근 권한을 설정하는 방법과 CLI, 웹 UI 또는 CI/CD 파이프라인을 통한 연결 옵션을 알아본다. 역할 기반 접근 제어(RBAC, Role-based Access Control)와 SSO에 대해 알아보고 이를 구성하는 다양한 옵션에 대해 자세히 설명한다.
5장, ‘Argo CD로 쿠버네티스 클러스터 부트스트랩’에서는 IaC(Infrastructure as code) 도구를 사용해 쿠버네티스 클러스터를 생성하는 방법과 ArgoCD로 필요한 애플리케이션을 설정하고 애플리케이션을 배포할 때 직면하게 될 보안 문제를 확인하는 방법을 알아본다.
6장, ‘Argo CD 배포 파이프라인 설계’에서는 5장에서 설치한 인프라를 기반으로 실제 배포 전략을 알아보고 시크릿과 아르고 롤아웃(Argo Rollouts)에 익숙해진다.
7장, ‘Argo CD 문제 해결’에서는 설치할 때 혹은 평소 작업 간 자주 발생할 수 있는 문제에 대해서 다루고 Argo CD 성능을 개선하는 방법을 살펴본다.
8장, ‘YAML 및 쿠버네티스 매니페스트(파싱 및 검증)’에서는 작성한 YAML 매니페스트 유효성을 검사하고, 모범 사례를 통해 이를 검증해보고, 쿠버네티스 스키마를 확인하거나 레고(Rego)로 작성된 자체 확장 유효성 검사를 수행하는 데 사용할 수 있는 도구를 알아본다.
9장, ‘미래와 결론’에서는 깃옵스 엔진과 kubernetes-sigs/cli-utils가 Argo CD나 쿠버네티스 커뮤니티로부터 분리돼 개발된 과정, 그리고 이들을 사용해 달성하려는 목표에 대해 설명한다.
목차
목차
- 1부. 깃옵스와 Argo CD의 기초
- 1장. 깃옵스와 쿠버네티스
- 기술 요구 사항
- 깃옵스란 무엇인가?
- 쿠버네티스와 깃옵스
- 아키텍처
- HTTP REST API 서버
- 컨트롤러 매니저
- 명령형 API와 선언형 API
- 명령형 방식 - 직접 명령
- 명령형 방식 - 구성 파일 사용
- 선언형 방식 - 구성 파일 사용
- 선언형 방식 - 구성 폴더와 함께
- 간단한 깃옵스 오퍼레이터 구축
- IaC와 깃옵스
- 요약
- 더 알아보기
- 2장. Argo CD 시작하기
- 기술 요구 사항
- Argo CD란 무엇인가?
- Argo CD와 친해지기
- 핵심 개념과 용어 정리
- Argo CD 조정
- 용어
- 아키텍처 설명
- 아키텍처 개요
- Argo CD의 핵심 구성 요소
- Argo CD의 핵심 오브젝트와 리소스
- 헬름으로 Argo CD 실행하기
- Argo CD 첫 애플리케이션 실행하기
- Argo CD 오토파일럿을 통해 Argo CD 운영하기
- 동기화 원리
- 리소스 훅
- 동기화 웨이브
- 요약
- 더 알아보기
- 2부. SRE와 Argo CD
- 3장. Argo CD 운영
- 기술 요구 사항
- 선언적 구성
- Kustomize를 활용한 고가용성 설치
- Argo CD 자체 관리
- 설정 변경
- 고가용성 설치
- API 서버
- 리포지터리 서버
- 애플리케이션 컨트롤러
- 레디스 캐시
- Dex 서버
- 재해 복구 계획
- CLI 설치하기
- 백업 생성하기
- 다른 클러스터에서 복원하기
- 관찰 가능성 활성화
- 프로메테우스로 모니터링하기
- 운영팀이 확인할 메트릭
- 마이크로서비스 팀을 위한 메트릭
- 사용자에게 통지
- Argo CD Notifications 설치
- 파이프라인 시작하기
- 요약
- 더 알아보기
- 4장. 접근 제어
- 기술 요구 사항
- 선언적 사용자
- 관리자와 로컬 사용자
- 서비스 어카운트
- 로컬 서비스 어카운트
- 프로젝트 역할과 토큰
- SSO
- Dex를 통해 SSO 이용하기
- Argo CD에서 직접 SSO 활용하기
- 요약
- 더 알아보기
- 3부. 운영 환경에서 Argo
- 5장. Argo CD로 쿠버네티스 클러스터 부트스트랩
- 기술 요구 사항
- 테라폼을 통한 아마존 EKS 클러스터 생성
- 아마존 EKS와 친해지기
- EKS 인프라 설계하기
- 테라폼으로 EKS 프로비저닝
- Argo CD로 EKS 부트스트랩하기
- 테라폼으로 Argo CD 준비하기
- 테라폼으로 Argo CD 적용하기
- app of apps 패턴 활용
- 왜 app of apps 패턴인가?
- 유틸리티 부트스트랩하기
- 부트스트랩 연습
- 인프라 삭제
- 인프라 재생성
- app of apps 패턴의 단점
- ApplicationSet은 무엇인가?
- 제너레이터
- 요약
- 더 알아보기
- 6장. Argo CD 배포 파이프라인 설계
- 기술 요구 사항
- 도입 배경
- 쿠버네티스에서 간단한 블루-그린 배포
- 배포 전략
- Argo Rollout은 무엇인가?
- 왜 Argo Rollout인가?
- Argo Rollout 아키텍처
- 블루-그린 배포 전략
- 카나리 배포 전략
- 실제 CI/CD 파이프라인
- Argo Rollout 세팅하기
- 깃허브 액션을 활용해 자동으로 블루-그린 승격하기
- 동기화 단계를 통한 자동 롤아웃
- 안전하게 시크릿 보관하기
- 시크릿에 안전하게 저장하기
- Argo CD와 외부 시크릿 오퍼레이터
- 마이크로서비스 CI/CD
- 단일 리포지터리 마이크로서비스
- 요약
- 더 알아보기
- 7장. Argo CD 문제 해결
- 기술 요구 사항
- 초기 설치
- 운영 중 문제 해결
- 구성 요소 재시작
- 특정 버전의 헬름 사용하기
- 성능 향상
- 애플리케이션 컨트롤러
- 리포지터리 서버
- 요약
- 더 알아보기
- 8장. YAML과 쿠버네티스 매니페스트
- 기술 요구 사항
- 템플릿 옵션 활용
- 헬름
- Kustomize
- 유효성 검사 유형 탐구
- 쿠버네티스 스키마 검증
- 매니페스트 강화 모범 사례
- conftest로 확장성 있는 검사 수행
- 요약
- 더 알아보기
- 9장. 미래와 결론
- 기술 요구 사항
- 깃옵스 대중화
- 깃옵스 엔진은 무엇인가?
- 깃옵스 에이전트
- kubernetes-sigs/cli-utils는 무엇인가?
- kapply 사용법
- 마무리
- 요약
도서 오류 신고
정오표
정오표
[ p.43 : 아래에서 6행 ]
43쪽 '노트' 참고
->
47쪽 '노트' 참고