Top

예제로 배우는 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를 운영하는 모범 사례와 패턴에 대해서 설명한다. 따라서 깃옵스에 입문하고 싶거나 이미 친숙하거나 주제에 대해서 심화 학습하고 싶은 사람들에게 추천한다.

─알렉산더 마튜센체프(Alexander Matyushentsev),
Akuity의 공동 창립자 겸 수석 설계자

이 책에서 다루는 내용

◆ 깃옵스 원칙을 이해하고 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나 쿠버네티스 커뮤니티로부터 분리돼 개발된 과정, 그리고 이들을 사용해 달성하려는 목표에 대해 설명한다.

저자/역자 소개

지은이의 말

깃옵스는 이해하기 어려운 주제는 아니다. 본인이 원하는 환경을 선언적으로 정의하기 위해 깃 리포지터리(Git repository)를 사용한다. 버전 관리와 병합 요청을 통해 변경하는 방식으로 전체 시스템을 감시한다.
일단 깃옵스를 도입하게 되면 Argo CD 같은 툴을 사용하면서 점점 복잡해지기 시작한다. 첫 번째로 관찰가능성(observability)이나 고가용성(high availability)과 같은 내용을 염두해 두면서 Argo CD를 올바르게 설정해야 한다. 그리고 CI/CD 파이프라인에 대해서도 고민해보면서 새로운 깃옵스 리포지토리를 여기에 잘 융합할지도 고민해야 한다. 그리고 조직적으로 운영하면서 다양한 문제가 발생하기도 한다. 어떻게 각 팀을 새로운 설정에 맞게 통합할 것인지 고민해야 할 수도 있다. 또한 대부분 배포하는 네임스페이스별로 쿠버네티스 접근 권한이 나눠져 있을 수 있기 때문에 RBAC(Role-Based ACcess, 역할 기반 접근 통제)를 적절하게 구성하는 데 시간이 소요되기도 하고, 기존 팀의 액세스를 어떻게 새로운 깃옵스 엔진으로 이전할 것인지도 고려해야 한다.
짧은 글, 비디오, 강의 등 다양한 자료가 존재하지만 단편적인 주제를 다루고 있기 때문에 학습 방향을 설정하기 어렵고, 그렇게 내용이 깊지도 못하다.
그래서 Argo CD를 도입하는 것이 어떤 변화를 만들고, 어떻게 사용하는 것인지 파악하기가 쉽지 않다.
독자들이 Argo CD를 처음 시작할 때 기본적으로 필요한 내용인 설치부터 올바른 접근 제어를 설정하는 것까지 전반적인 내용을 가이드하고, 심화 시나리오와 트러블슈팅 과정을 포함해 프로덕션 환경에서 직면할 수 있는 문제들을 다루기 위해서 이 책을 집필했다.
우리는 회사에서 초기에 깃옵스를 도입했으며 깃옵스를 오랫동안 직접적으로 사용했다. 초기에는 자체 깃옵스 오퍼레이터를 구축하려고 했다. 금방 만들 수 있을 줄 알았지만 2~3주 동안 필요한 것이 무엇인지 분석하다가 포기했다. 우리는 운영하면서 많은 문제를 겪었는데 일부는 잘 처리했고 일부는 해결하는 데 많은 시간이 걸렸다. 하지만 그러면서 정말 많은 것을 배웠기에 이것을 독자들과 공유하고자 한다. 확실한 것은 이 책을 통해 Argo CD와 깃옵스를 적용하는 데 큰 도움을 받을 수 있을 것이다.

지은이 소개

리비우 코스테아(Liviu Costea)

2000년 초 개발자로 시작해 개발자에서 코딩 설계자로, 그리고 팀장부터 CTO까지 다양한 역할을 수행했다. 2012년 작은 회사의 데브옵스(DevOps) 직군으로 전환했으며, 기존의 전통적인 방식으로는 확장의 한계를 느껴 파이프라인과 자동화 작업을 담당했다.
2018년에는 플랫폼 팀을 시작으로 Mambu 릴리스 팀의 기술 책임자가 돼 깃옵스 방식을 채택해 대부분의 지속적인 통합/지속적인 배포(CI/CD, Continuous Integration/Continuous Deployment) 파이프라인을 설계했다. 2019년부터 Argo CD를 도입했다. 최근에는 깃옵스 채택을 계획하고 있는 유망한 스타트업인 주니(Juni)에 합류했다. Argo CD를 포함한 OSS 프로젝트에 기여한 공로로 2020년 8월에 CNCF 앰버서더(ambassador)로 임명됐다.

스피로스 이코노마키스(Spiros Economakis)

2010년에 소프트웨어 엔지니어로 시작해 소프트웨어 설계자를 거쳐 클라우드 책임자에 이르기까지 다양한 직군과 역할을 담당했다. 2013년에는 자신의 회사를 설립하면서 데브옵스 문화를 처음 접했다. 소규모 팀과 함께 마이크로서비스 아키텍처 및 모바일 애플리케이션 배포를 위한 2개의 CI/CD 파이프라인을 구축했다. 그 후 자신이 참여한 대부분의 회사의 데브옵스 문화 및 자동화에 영향을 미쳤다.

옮긴이의 말

Argo 프로젝트는 Argo WorkFlow, Argo CD, Argo Rollout, Argo Event 이렇게 총 4개의 프로젝트로 구성돼 있으며 워크플로를 실행하고, 클러스터를 관리하고, GitOps를 올바르게 수행하기 위한 쿠버네티스 오픈 소스입니다. 2020년 3월 26일에 인큐베이팅 수준에서 CNCF(Cloud Native Computing Foundation)에 승인된 후 2022년 12월 6일 졸업(Graduate)했습니다. 그만큼 완성도가 높고 검증된 프로젝트가 아닐까 합니다. 특히나 최근 쿠버네티스를 많이 활용하면서 이미 많은 회사가 Argo CD를 도입해 사용하고 있는 것으로 알고 있습니다.

하지만 이렇게 많아지는 인기 속에 아직까지 Argo CD 만을 다룬 책은 많이 없는 것으로 알고 있습니다. 이를 기점으로 국내서적이나 번역서가 많이 출시됐으면 좋겠습니다.

옮긴이 소개

이장훈

건국대학교 영어영문학과를 졸업했지만, IT가 좋아서 4년차 클라우드 엔지니어로 일하고 있다. 지금은 클라우드 네이티브와 쿠버네티스에 많은 관심을 갖고 있다. 데브옵스(DevOps), 핀옵스(FinOps), 섹옵스(SecOps) 능력을 갖추려고 항상 노력하고 있다.

목차

목차
  • 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.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[ p.43 : 아래에서 6행 ]
43쪽 '노트' 참고
->
47쪽 '노트' 참고