클라우드 컴퓨팅에서 클라우드 네이티브 인프라를 구축하는 방법을 소개한다. 클라우드 네이티브 재단의 지침을 따르면서 Microsoft Azure 또는 다른 클라우드 컴퓨팅 솔루션을 사용해서 모듈성, 배포 가능성, 통합 가시성 및 자가 치유 능력을 가진 서비스를 구축하는 방법을 알려준다. 이를 통해 클라우드 애플리케이션을 빠르게 적용하고 클라우드의 탄력성과 분산적인 특성을 최대한 활용할 수 있다.
__코드로서의 인프라와 클라우드 네이티브 세계에서의 중요성
__Azure 시작하기와 환경 설정
____Azure 기본 사항과 환경 준비하기
____Azure 계정 생성
____Azure CLI 설치
__주요 IaC 도구
____테라폼
____패커
____앤서블
__Azure DevOps와 코드로서의 인프라
__요약
3장. 애플리케이션 컨테이너화: Box 그 이상
__왜 컨테이너인가?
____격리
____보안
____패키징과 배포
__기본 컨테이너 기본 요소
____Cgroup
____Namespace
____Copy on Write
____Capabilities
____Seccomp-BPF
__컨테이너 실행의 컴포넌트
____컨테이너 오케스트레이터
____컨테이너 소프트웨어
____컨테이너 런타임
____컨테이너
____운영체제
__오픈 컨테이너 이니셔티브 스펙
____OCI 이미지 스펙
____OCI 런타임 스펙
__도커
____첫 번째 도커 이미지 빌드
____도커 사용 모범 사례
__다른 컨테이너 플랫폼
____카타 컨테이너
____LXC와 LXD
__컨테이너 레지스트리
____Harbor로 안전하게 이미지 저장
____Azure 컨테이너 레지스트리로 안전하게 이미지 저장
__레지스트리에 도커 이미지 저장
____Azure에서 도커 실행
____Azure 컨테이너 인스턴스
____Azure 컨테이너 인스턴스 배포
____도커 컨테이너 엔진 실행
__요약
4장. 쿠버네티스 : 그랜드 오케스트레이터
__쿠버네티스 컴포넌트
____컨트롤 플레인
____워커 노드
__쿠버네티스 API 서버 오브젝트
____포드
____레플리카셋
____디플로이먼트
____서비스
____네임스페이스
____레이블과 셀렉터
____어노테이션
____인그레스 컨트롤러
____스테이트풀셋
____데몬셋
____잡
__kubectl로 쿠버네티스 클러스터 관측, 운영 및 관리
____일반적인 클러스터 정보와 명령어
____포드 관리
____프로덕션에서의 쿠버네티스
__요약
5장. Azure에서 쿠버네티스 클러스터 생성
__쿠버네티스 클러스터를 맨 처음부터 생성
____리소스 그룹 생성
____워커와 컨트롤러의 머신 이미지 생성
____스토리지 계정 생성
____Azure 가상 네트워크 생성
____로드 밸런서의 퍼블릭 IP 생성
____워커 인스턴스와 컨트롤러 인스턴스 생성
____앤서블로 쿠버네티스 컨트롤러 노드의 배포와 구성
____앤서블로 쿠버네티스 워커 노드의 배포와 구성
____포드 네트워크와 라우팅 설정
____원격 접속과 클러스터 검증을 위한 kubeconfig 파일 생성
__Azure 쿠버네티스 서비스
__Helm으로 애플리케이션과 서비스 배포: 쿠버네티스의 패키지 관리자
____Helm의 기본
____Helm 설치와 관리
____Helm 릴리스 관리
____애플리케이션을 차트로 생성
__요약
6장. 관측성: 브래드스크럼 따라가기
__관측성 소개
____관측성: 세 개 이상의 핵심 요소
____관측성: 모니터링의 슈퍼셋
____관측성-기반 개발
__클라우드 네이티브 세계에서 프로메테우스 모니터링 메트릭
____프로메테우스 컴포넌트와 아키텍처
____프로메테우스 설치와 구성
____node_exporter
____애플리케이션 계측
____호스트 찾기
____쿠버네티스에서의 프로메테우스
__클라우드 네이티브 세계에서의 로깅
____Fluentd를 이용한 로깅
____쿠버네티스에서의 Fluentd
__클라우드 네이티브 세계에서의 분산 추적
____추적: 핵심 개념
____일반적인 추적 시스템 아키텍처와 추적 조합
____추적 표준, 도구, 코드 계측
__Azure Monitor
__요약
7장. 서비스 디스커버리와 서비스 메시: 새로운 영역을 찾아 경계를 넘어
__서비스 디스커버리
____CoreDNS 소개
____CoreDNS 설치와 구성
____CoreDNS와 쿠버네티스 서비스 디스커버리
____Azure DNS
__서비스 메시
____Istio 소개
____Azure Kubernetes Service에서 Istio 설치
____사이드카 프록시(Envoy 프록시) 자동화
____Kiali를 사용한 Istio 서비스 메시 관리
__요약
8장. 네트워크와 정책 관리: 문지기 관찰
__컨테이너 네트워크 인터페이스(CNI)
____CNI를 사용하는 이유
____Azure에서 CNI가 작동하는 방법
____다양한 CNI 프로젝트
__캘리코
____캘리코를 사용하는 이유
____기본 아키텍처
____캘리코 배포
____캘리코 깊게 살펴보기
____캘리코 보안 정책 구현
__실리움
____실리움 배포
____클라우드에 실리움 통합
____호스트 방화벽
__플라넬
____플라넬 배포
____플라넬 깊게 살펴보기
__Azure Policy
____Azure Policy 빠르게 시작하기
____Azure Policy 생성
____쿠버네티스와 Azure Policy
__오픈 정책 에이전트
____쿠버네티스에서 OPA 배포
____OPA를 사용한 정책 배포
__요약
9장. 분산 데이터베이스와 스토리지: 중앙 은행
__클라우드 네이티브 아키텍처에서의 분산 데이터베이스 필요성
____Azure 스토리지와 데이터베이스 옵션
__Vitess 소개: 분산 샤딩 MySQL
____Vitess를 사용하는 이유
____Vitess 아키텍처
____쿠버네티스에 Vitess 배포
__Rook 소개 : 쿠버네티스의 스토리지 오케스트레이터
____Rook 아키텍처
____쿠버네티스에 Rook 배포
__TiKV 소개
____TiKV를 사용하는 이유
____TiKV 아키텍처
____쿠버네티스에 TiKV 배포
__etcd에 대해 더 살펴보기
____하드웨어 플랫폼
____오토스케일링과 자동 재조정
____가용성과 보안
__요약
10장. 메시지
__메시징의 필요성
__샘플 메시징 유스 케이스: 로그 수집(Ingestion)과 분석
____1세대: 큐 없음
____2세대: 클라우드 큐와 오브젝트 스토리지
____3세대: 메모리 기반의 게시/구독 큐
__메시징 플랫폼의 기본
____메시징 대 스트리밍
__메시징 기초
____생산자와 소비자
____브로커와 클러스터링
____견고성과 영속성
____메시지 전달
____보안
__공통 메시징 패턴
____심플 큐
____게시와 구독
____견고한 큐
__대표적인 클라우드 네이티브 메시징 플랫폼 개요
____RabbitMQ
____Apache Kafka
____CNCF CloudEvents
__NATS를 사용해 클라우드 메시징 깊게 살펴보기
____NATS 프로토콜 아키텍처
____JetStream과 NATS 지속성
____NATS 보안
____쿠버네티스에 NATS 배포
__Azure 메시징 서비스
____Azure Service Bus
____Azure Event Hubs
____Azure Event Grid
__요약
11장. 서버리스
__서버리스 컴퓨팅 소개
____서버리스란?
____서버리스 Function이란?
____서버리스 살펴보기
____서버리스의 장점
____서버리스의 잠재적 단점
__Azure Function 앱
____Function 앱 아키텍처
____Function 앱 생성
__Knative
____Knative 아키텍처
____쿠버네티스에서 Knative Serving 설치와 실행
____쿠버네티스에서 Knative Eventing 설치와 실행
__KEDA
____KEDA 아키텍처
____쿠버네티스에 KEDA 설치
__OpenFaaS
____OpenFaaS 아키텍처
____OpenFaaS 설치
____OpenFaaS Function 작성
__요약
12장. 결론
__다음은 무엇일까?
Author
니샨트 싱,마이클 케호,양준기,최지희
LinkedIn의 선임 사이트 안정성 엔지니어로, 장애에 대한 평균 감지 시간(MTTD)과 평균 응답 시간(MTTR)을 줄이는 데 중점을 두고 사이트의 안정성을 개선하기 위해 노력하고 있다. LinkedIn에 합류하기 전 Paytm과 Gemalto에서 DevOps 엔지니어로 일했고, 클라이언트를 위한 맞춤형 솔루션을 구축하고 퍼블릭 클라우드를 통해 서비스를 관리하고 유지했다. 사이트 신뢰성 엔지니어링과 분산 시스템 구축에 깊은 관심을 갖고 있다.
LinkedIn의 선임 사이트 안정성 엔지니어로, 장애에 대한 평균 감지 시간(MTTD)과 평균 응답 시간(MTTR)을 줄이는 데 중점을 두고 사이트의 안정성을 개선하기 위해 노력하고 있다. LinkedIn에 합류하기 전 Paytm과 Gemalto에서 DevOps 엔지니어로 일했고, 클라이언트를 위한 맞춤형 솔루션을 구축하고 퍼블릭 클라우드를 통해 서비스를 관리하고 유지했다. 사이트 신뢰성 엔지니어링과 분산 시스템 구축에 깊은 관심을 갖고 있다.