쿠버네티스  엔터프라이즈 가이드 2/e : 컨테이너 기술을 활용한 엔터프라이즈 환경 통합과 확장

쿠버네티스 엔터프라이즈 가이드 2/e : 컨테이너 기술을 활용한 엔터프라이즈 환경 통합과 확장

$45.55
저자

마크보어쉬테인,스콧수로비치

저자:마크보어쉬테인,스콧수로비치



역자:강세용,김상필,김진웅,박진우,최진영

목차


1장.도커및컨테이너기초
__기술요구사항
__컨테이너화의필요성이해
____쿠버네티스에서도커를지원중단하는이유
____도커소개
__도커이해하기
____컨테이너는일시적이다
____도커이미지
____이미지레이어
____영구데이터
____컨테이너에서실행중인서비스에액세스
__도커설치
____도커설치준비
____Ubuntu에도커설치
____도커권한부여
__도커CLI사용
____dockerhelp
____dockerrun
____dockerps
____dockerstartandstop
____dockerattach
____dockerexec
____dockerlogs
____dockerrm
__요약
__문제

2장.KinD를이용한쿠버네티스배포
__기술요구사항
__쿠버네티스컴포넌트및오브젝트소개
____클러스터와상호작용
__개발클러스터사용
____기본KinD쿠버네티스클러스터로작업하기
____노드이미지이해
____KinD및도커네트워킹
____중첩인형추적
__KinD설치
____KinD설치-사전조건
______kubectl설치
____KinD바이너리설치
__KinD클러스터만들기
____단순클러스터생성
____클러스터삭제
____클러스터설정파일생성
____다중노드클러스터설정
____컨트롤플레인및Kubelet옵션커스터마이징
____사용자지정KinD클러스터만들기
____Calico설치
____인그레스컨트롤러설치
__KinD클러스터검토
____KinD스토리지오브젝트
____스토리지드라이버
____KinD스토리지클래스
____KinD의스토리지프로비저너사용
__인그레스용커스텀로드밸런서추가
____설치사전요구사항
____KinD클러스터설정생성하기
____사용자지정HAProxy컨테이너배포
____HAProxy트래픽흐름이해
____kubelet장애시뮬레이션
__요약
__문제

3장.쿠버네티스부트캠프
__기술요구사항
__쿠버네티스컴포넌트개요
____컨트롤플레인살펴보기
____쿠버네티스API서버
____Etcd데이터베이스
____kube-scheduler
____kube-controller-manager
____cloud-controller-manager
__작업자노드컴포넌트이해
____kubelet
____kube-proxy
____컨테이너런타임
__API서버와상호작용
____쿠버네티스kubectl유틸리티사용
____Verbose옵션이해
____일반kubectl명령어
__쿠버네티스리소스소개
____쿠버네티스매니페스트
____쿠버네티스의리소스는무엇인가?
____쿠버네티스리소스검토
______컨피그맵
______엔드포인트
______이벤트
______네임스페이스
______노드
______퍼시스턴트볼륨클레임
______퍼시스턴트볼륨
______파드
______레플리케이션컨트롤러
______리소스쿼터
______시크릿
______서비스어카운트
______서비스
______커스텀리소스데피니션
______데몬셋
______디플로이먼트
______레플리카셋
______스테이트풀셋
______HorizontalPodAutoscalers
______크론잡
______잡
______인그레스
______네트워크폴리시
______파드시큐리티폴리시
______클러스터롤바인딩
______클러스터롤
______롤바인딩
______롤
______CSI드라이버
______CSI노드
______스토리지클래스
__요약
__문제

4장.서비스,로드밸런서,ExternalDNS그리고글로벌밸런싱
__기술요구사항
__요청에대한워크로드노출
____서비스작동방식이해
______서비스생성
______DNS를사용해서비스해결
____다양한서비스유형이해
______ClusterIP서비스
______NodePort서비스
______로드밸런서서비스
______ExternalName서비스
__로드밸런서소개
____OSI모델에대해서
__레이어7로드밸런서
____이름해석및레이어7로드밸런서
____이름해석에nip.io사용
____인그레스규칙생성
__레이어4로드밸런서
____레이어4로드밸런서옵션
____레이어4로드밸런서로MetalLB사용
______MetalLB설치
______MetalLB설정파일이해
______MetalLB컴포넌트
________스피커
________컨트롤러
______로드밸런서서비스생성
____MetalLB에여러IP풀추가
______다중프로토콜사용
____여러가지프로토콜문제
____MetalLB와함께여러프로토콜사용
____공유IP사용
__엔터프라이즈를위한로드밸런서강화
__서비스이름을외부에서사용할수있도록설정
____external-dns설정
____external-dns와CoreDNS연동
______CoreDNS에ETCD존추가
________ExternalDNS연동으로로드밸런서서비스생성
________CoreDNS와엔터프라이즈DNS의연동
____프라이머리DNS서버설정
____CoreDNS로의DNS전달테스트
__멀티클러스터간의로드밸런싱
____쿠버네티스글로벌밸런서소개
____K8GB의요건
____클러스터에K8GB배포
______K8GB로드밸런싱옵션이해
______헬름차트값사용자정의
______헬름을사용한K8GB설치
____K8GB를사용한고가용성애플리케이션배포
______커스텀리소스르사용해K8GB에애플리케이션추가
______인그레스어노테이션을사용해K8GB에애플리케이션추가
______K8GB의글로벌로드밸런싱기능이해
______K8GBCoreDNS서버의동기화유지
__요약
__문제

5장.클러스터인증연동
__기술요구사항
__쿠버네티스가당신을어떻게아는지이해하기
____외부사용자
____쿠버네티스의그룹
____서비스어카운트
__OpenIDConnect이해
____OpenIDConnect프로토콜
____OIDC와API의상호작용을추적
______id_token
____기타인증옵션
______인증서
______서비스어카운트
______TokenRequestAPI
______커스텀인증웹훅
______키스톤
__OpenIDConnect에대한KinD설정
____요구사항에대한대응
____쿠버네티스에서의LDAP및액티브디렉터리사용
____액티브디렉터리그룹을RBAC롤바인딩에매핑
____쿠버네티스대시보드액세스
____쿠버네티스CLI액세스
____엔터프라이즈규정준수요구사항
____모든것을한데모으기
____OpenUnison배포
____OIDC를사용하기위한쿠버네티스API설정
____OIDC연동확인
____kubectl과함께토큰사용
__클라우드관리형클러스터와인증을연동하기위한가장도입
____가장이란?
____보안에관한고려사항
__가장을위한클러스터구성
____가장테스트
__OpenUnison을사용하지않는가장설정
____가장RBAC정책
____기본그룹
__클러스터에대한파이프라인에서인증
____토큰사용
____인증서사용
____안티패턴회피
__요약
__문제

6장.롤기반액세스제어정책및감사
__기술요구사항
__RBAC소개
__롤이란
____롤식별
____롤대클러스터롤
____네거티브롤
____집계된클러스터롤
____롤바인딩및클러스터롤바인딩
______클러스터롤및롤바인딩결합
__리소스에대한액세스권한을부여하기위해엔터프라이즈ID를쿠버네티스에매핑
__네임스페이스멀티테넌시구현
__쿠버네티스감사
____감사정책만들기
____클러스터에서감사활성화
__audit2rbac를사용한정책디버깅
__요약
__문제

7장.안전한쿠버네티스대시보드배포
__기술요구사항
__대시보드에서의사용자
____대시보드아키텍처
____인증방법
__대시보드보안위험이해
____안전하지않은대시보드배포
____토큰을사용해로그인
__리버스프록시로대시보드배포
____로컬대시보드
____기타클러스터레벨애플리케이션
__오픈유니슨과대시보드통합
__요약
__문제

8장.개방형정책에이전트를사용한보안확장
__기술요구사항
__동적승인컨트롤러소개
__OPA의정의및동작
____OPA아키텍처
____OPA정책언어,Rego
____게이트키퍼
______게이트키퍼배포
____자동화된테스트프레임워크
__Rego를사용한정책작성
____OPA정책개발
____OPA정책테스트
____게이트키퍼에정책배포
____동적정책구축
____Rego디버깅하기
____기존정책사용
__메모리제약적용
____게이트키퍼캐시활성화
____테스트데이터모킹
____정책구축및배포
__오브젝트및기본값변형
__요약
__문제

9장.게이트키퍼로노드보안구현
__기술요구사항
__노드보안
____컨테이너와VM간의차이점이해
____컨테이너브레이크아웃
____적절한컨테이너설계
__게이트키퍼로노드보안적용
____파드보안정책
____PSP와게이트키퍼의차이점
____노드보안정책승인
____노드보안정책배포및디버깅
______보안컨텍스트기본값생성
______클러스터정책적용
______제약조건위반디버깅
______멀티테넌트클러스터의스케일링정책배포
__요약
__문제

10장.팔코,데브옵스AI,ECK를통한감사
__기술요구사항
__감사살펴보기
__팔코소개
__팔코설정파일살펴보기
____헬름밸류파일
____헬름밸류커스터마이징
____팔코규칙설정파일
______규칙이해
______조건(필드및값)이해
______매크로사용
______목록이해하기
____사용자지정규칙생성및추가
______기존규칙수정
______신규규칙만들기
__팔코배포
____팔코사이드킥소개
____팔코사이드킥설치
____쿠브리스의이해
____쿠브리스의설치
____쿠브리스를사용한함수배포
__데브옵스AI
____이벤트에대한자동응답이해
______NGINX서버배포및연결테스트
______파드에대한공격시뮬레이션
____팔코이벤트관측
______FalcoSideKick-UI사용
____로깅시스템배포
______신규네임스페이스생성
______ECK오퍼레이터배포
______일래스틱서치,파일비트,키바나배포
____로그를보기위한ECK구성요소사용
____키바나인덱스생성
____이벤트탐색
____시각화
____대시보드생성
____팔코이벤트유형에대한시각화생성
__요약
__문제

11장.워크로드백업
__기술요구사항
__쿠버네티스백업에대한이해
__etcd백업수행
____필요한인증서백업
____etcd데이터베이스백업
__VMware벨레로소개및설정
____벨레로요구사항
____벨레로CLI설치
____벨레로설치
______백업스토리지위치
______MinIO배포
______MinIO및콘솔노출
______S3대상설정생성
__벨레로를사용한워크로드백업
____일회성클러스터백업실행
____클러스터백업스케줄링
____사용자지정백업생성
__CLI를사용한벨레로관리
____일반적인벨레로명령사용
______벨레로오브젝트목록
______벨레로오브젝트세부정보검색
______오브젝트생성및삭제
__백업에서복원
____복원작업
______백업에서배포복원
____네임스페이스백업
______장애시뮬레이션
____네임스페이스복원
____백업을사용한신규클러스터워크로드생성
______클러스터백업
______신규클러스터구축
____신규클러스터에백업복원
______신규클러스터에벨레로설치
______신규클러스터에서백업복원
______신규클러스터삭제
__요약
__문제

12장.이스티오소개
__기술요구사항
__서비스메시에신경을써야하는이유는무엇일까?
____워크로드관측성
____트래픽관리
______블루/그린배포
______카나리배포
____문제가발생하기전에문제찾기
____보안
__이스티오개념소개
__이스티오구성요소이해
______istiod를사용해컨트롤플레인을단순하게만들기
______istiod파드브레이킹
______Pilot-사이드카관리
______Galley-구성검증
______Citadel-인증서관리
______Mixer-보안키퍼
____이스티오-인그레스게이트웨이에대한이해
____이스티오-이그레스게이트웨이에대한이해
__이스티오설치
____이스티오다운로드
____프로필을사용한이스티오설치
__이스티오리소스소개
____권한부여정책
______예1:모든액세스거부및허용
______예2:워크로드에GET메서드만허용
______예3:특정소스의요청허용
______게이트웨이
______가상서비스
____대상규칙
______피어인증
______인증요청
______서비스항목
______사이드카
______Envoy필터
__관측성을제공하는애드온구성요소배포
____프로메테우스설치
__Jaeger설치
____Kiali설치
__서비스메시에애플리케이션배포
____첫번째애플리케이션을메시에배포하기
______Kiali를사용한메시워크로드관찰
______Kiali개요화면
______그래프뷰사용
______애플리케이션뷰사용
______워크로드뷰사용
______서비스뷰사용
______이스티오구성뷰
__요약
__문제

13장.이스티오에서애플리케이션빌드및배포
__기술요구사항
__마이크로서비스와모놀리스의비교
____마이크로서비스와모놀리식아키텍처에대한나의이야기
____애플리케이션아키텍처비교
______모놀리식애플리케이션설계
______마이크로서비스설계
______모놀리스와마이크로서비스중에서선택
______이스티오를사용한마이크로서비스관리지원
__모놀리스배포하기
____모놀리스를클러스터외부에노출
____고정세션구성
____Kiali와오픈유니슨의통합
__마이크로서비스구축
____HelloWorld배포하기
____우리서비스에인증통합
____우리서비스에액세스권한부여
____서비스를누가사용하고있는지알고싶다면
____사용자자격부여
______서비스승인
______이스티오와함께OPA사용
____다른서비스호출하기
______OAuth2토큰교환사용
______서비스인증하기
______수표작성서비스배포및실행
______가장사용
______위임사용
______서비스간토큰전달
______단순가장사용
__API게이트웨이가필요한가?
__요약
__문제

14장.플랫폼프로비저닝
__기술요구사항
__파이프라인설계
____독단적플랫폼
____파이프라인보안
____플랫폼요구사항구축
____기술스택선택
__클러스터준비
____cert-manager배포
____도커컨테이너레지스트리배포
____오픈유니슨및게이트키퍼배포
__깃랩배포
____예제프로젝트만들기
__Tekton배포
____HelloWorld만들기
____자동으로빌드하기
__ArgoCD배포
__오픈유니슨을사용한프로젝트온보딩자동화
____깃옵스전략설계
____깃랩통합
____TektonCD대시보드통합
____ArgoCD통합
____오픈유니슨업데이트
__애플리케이션배포
____쿠버네티스에서애플리케이션생성
____개발자에게접근하기
____개발매니페스트배포
____Tekton파이프라인배포
____파이프라인실행
____프로덕션으로프로모션
__요약
__문제

출판사 서평

◈이책에서다루는내용◈

◆KinD를이용한다중노드쿠버네티스클러스터생성
◆인그레스,MetalLB,외부-DNS및새로운샌드박스프로젝트쿠버네티스글로벌밸런서(K8GB)구현
◆OIDC및가장(impersonation)을이용한클러스터구성
◆이스티오서비스메시에모놀리식애플리케이션배포
◆엔터프라이즈인증을쿠버네티스에매핑
◆OPA및게이트키퍼를사용한클러스터보안
◆팔코,데브옵스AI,ECK를통한감사기능강화
◆재해복구및클러스터마이그레이션을위한워크로드백업
◆Tekton,깃랩및ArgoCD를이용한깃옵스플랫폼배포

◈이책의대상독자◈

여러엔터프라이즈환경에서클러스터를이용해수년간작업한저자들의경험을바탕으로데브옵스팀이쿠버네티스의기초이상으로기술을확장할수있도록돕기위해이책을만들었다.
쿠버네티스와클러스터설치,배포생성,쿠버네티스개체사용의기본사항을소개하는책이많다.우리의계획은기본클러스터를넘어서는책을만드는것이었고책의분량을적절한수준으로유지하기위해쿠버네티스의기본사항을다시살펴보진않기때문에어느정도쿠버네티스에대한경험이있는독자가읽기에적합하다.
주요초점은엔터프라이즈기능으로클러스터를확장하는것이지만,책의첫번째장에서는도커핵심주제와쿠버네티스객체를다시살펴볼것이다.고급주제들을다루는장들을최대한활용하려면쿠버네티스객체를확실하게이해하는것이중요하다.

◈이책의구성◈

1장,'도커및컨테이너기초'에서는개발자가해결해야할도커와쿠버네티스의문제를다룬다.도커데몬,데이터,설치및도커CLI사용을포함해도커의기초개념을소개한다.
2장,'KinD를이용한쿠버네티스배포'에서는단일노드클러스터에서다중노드클러스터까지쿠버네티스클러스터를생성할수있는강력한도구인KinD를다룬다.기본KinD클러스터와사용방법을설명한다.
3장,'쿠버네티스부트캠프'에서는쿠버네티스기본을다시살펴보며,쿠버네티스를처음접하는경우클러스터를포함한대부분의객체를다룰것이다.각객체의기능과클러스터에서의기능에대한설명과함께각객체를설명한다.이는객체에대한복습또는"포켓가이드"를의미한다.각객체에대한모든세부정보가포함돼있진않다.
4장,'서비스,로드밸런서,ExternalDNS그리고글로벌밸런싱'에서는서비스를이용해쿠버네티스배포를노출하는방법을소개한다.각서비스유형은예제와함께설명되며레이어7및레이어4로드밸런서를모두사용해서비스유형을노출하는방법을배우게된다.Ingress컨트롤러의기본사항을넘어MetalLB를설치해서비스에대한레이어4액세스를제공하는방법을설명한다.또한기본쿠버네티스글로벌로드밸런싱을제공하는MetalLB및K8GB에의해노출되는서비스에대한동적이름확인기능을제공하기위해external-dns라는인큐베이터프로젝트를설치해엔터프라이즈클러스터에도움이되는두가지추가기능에대해알아본다.
5장,'클러스터인증연동'에서는"클러스터가구축되면사용자가어떻게클러스터에액세스하는가?"라는질문에답할수있도록한다.특히OpenIDConnect의작동방식과이를이용해클러스터에액세스해야하는이유를자세히살펴본다.또한파이프라인에인증하는방법을배우고마지막으로피해야할몇가지안티패턴을다루고이이유를설명한다.
6장,'롤기반액세스제어정책및감사'에서는사용자가클러스터에액세스할수있게되면액세스를제한하는방법을알아야한다고설명한다.사용자에게전체클러스터를제공하는지네임스페이스만제공하는지에상관없이쿠버네티스가역할기반액세스제어(RBAC)시스템을통해액세스권한을부여하는방법을알아야한다.RBAC정책을설계하는방법,디버깅하는방법및멀티테넌시를위한다양한전략을소개한다.
7장,'안전한쿠버네티스대시보드배포'에서는클러스터가실행되면사용자가가장먼저보게되는쿠버네티스대시보드를다룬다.보안에대해서는많은신화가있다.클러스터는네트워크대시보드,로깅시스템,모니터링대시보드와같은다른웹애플리케이션들로구성된다.대시보드가어떻게구성돼있는지,대시보드를적절하게보호하는방법,대시보드를배포하지않는방법의예를자세히살펴보고그이유에대해자세히설명한다.
8장,'OpenPolicyAgent(OPA)를사용한보안확장'에서는RBAC를이용해구현할수없는정책을활성화하기위해OpenPolicyAgent및게이트키퍼를배포하는데필요한지침을제공한다.게이트키퍼를배포하는방법,Rego에서정책을작성하는방법,OPA에내장된테스트프레임워크를사용해정책을테스트하는방법을다룬다.
9장,'게이트키퍼로노드보안구현'에서는파드를실행하는노드의보안을다룬다.컨테이너를안전하게설계하는방법과컨테이너가필요하지않은리소스에액세스하지못하도록제한하는게이트키퍼를이용해서정책을구축하는방법에대해논의한다.
10장,'Falco,DevOpsAI,ECK를통한감사'에서는쿠버네티스에API액세스를위한이벤트로깅이포함돼있지만컨테이너런타임이벤트를캡처하는기능은없다는점을설명한다.이러한제한사항을해결하기위해우리는Sysdig가CNCF에기부한Falco라는프로젝트를설치할것이다.Falco를이용하면Kubeless기능을사용해Falco에서캡처한이벤트를기반으로작업을트리거하는방법과FalcoSideKick을이용해서Falco에서캡처한데이터를표시해FalcoSidekick-UI및ECK(ElasticCloudonKubernetes)스택에이벤트를전달하는방법을알아본다.
11장,'워크로드백업'에서는Velero를사용해서재해복구또는클러스터마이그레이션을위해클러스터워크로드의백업을생성하는방법을설명한다.워크로드예제의백업을생성하고클러스터마이그레이션을시뮬레이션하기위해백업을새로운클러스터로복원하기위해MinIO를사용하여S3호환스토리지위치를직접생성한다.
12장,'Istio소개'에서는많은기업이보안,트래픽라우팅,인증,추적,관측성과같은고급기능을클러스터에제공하기위해이용하는서비스메시를설명한다.널리사용되는오픈소스서비스메시인Istio와해당아키텍처그리고가장일반적으로사용되는리소스를소개한다.애플리케이션예제를이용해서Istio를KinD클러스터에배포하고Kiali라는도구를활용해애플리케이션의동작을모니터링하는방법을알아본다.
13장에서는Istio애플리케이션빌드및배포를다룬다.Istio를배포한후에이를이용하는애플리케이션을개발하고배포하고싶을것이다.모놀리스와마이크로서비스의차이점과배포방법을살펴보는것으로시작한다.아울러Istio에서실행할마이크로서비스구축을단계별로진행하고서비스에대한인증,권한부여,서비스간인증과같은고급주제를살펴본다.또한OIDC공급자와JSON웹토큰을사용해쿠버네티스의기존역할을활용해Kiali액세스를보호하는방법도알아본다.
14장,'플랫폼프로비저닝'에서는GitLab,Tekton,ArgoCD,게이트키퍼및오픈유니슨을이용해다중테넌트클러스터를자동화하기위한플랫폼을구축하는방법을설명한다.파이프라인을구축하는방법과파이프라인생성을자동화하는방법을살펴본다.파이프라인을구동하는데사용하는개체들이서로어떻게관련돼있는지,시스템간관계를구축하는방법,마지막으로파이프라인배포자동화를위한셀프서비스워크플로우를만드는방법을알아본다.