09/19
Cloud 특강
카카오 클라우드 네이트브 셀
담당 업무
- DKOS 개발 및 운영
- Datacenter of Kakao OS
- Kubernetes as a Service
- D2hub 개발 및 운영
- Private Container Image Registry
- Kargo 개발 및 운영
- 클라우드 학습 플랫폼
Cloud Native CI/CD
- Github
- D2hub
- Jenkins
- Kargo
- DKOS
Cloud
- 인터넷 통신망 어딘가에서 구름에 싸여 보이지 않은 컴퓨팅 자원을 원하는대로 사용
- 사용한 만큼 비용 지불
- 서버를 직접 구매할 때 고려해야 할 전력, 위치, 세팅, 확장성을 고민하지 않고 운영에만 집중
- 종류
- 스택
- On premises
- IaaS
- PasS
- SaaS
- Slack, Microsoft 365, Dropbox
Cloud Native
- 클라우드의 이점을 최대로 활용할 수 있도록 애플리케이션을 구축하고 실행하는 방식
- CI/CD
- 빌드/테스트 자동화
- CI
- Continuous Integration
- 지속적인 통합
- CD
- Continuous Delivery/Deployment
- 배포 자동화
- DevOps
- 개발과 운영을 결합해 탄생한 개발 방법론 시스템
- 개발 조직과 운영 조직이 물리적으로 격리되지 않은 환경에서 개발, 테스트, 배포, 운영에 이르는 전체 생명주기를 서로 긴밀하게 통합하여 관리
- Microservices
- MAS
- 소프트웨어 애플리케이션을 독립적으로 배치 가능하는 작은 서비스 조합(suite)으로 설계하는 방식
- Containers
- 개발 방법론
Container
- Traditional > Virtualized > Container > Kubernetes
- 실행 환경과 성능을 격리한 프로세스
- cgroup과 namespace를 결합하여 애플리케이션을 위한 고립된 환경 제공
특강
Cloud
- Service which make service
- 4가지 구성 요소
- Authentication, Authorization
- Orchestration
- Telemetry
- Deployment
09/20
Cloud 특강
Kubernetes
- 대규모 분산 서버 환경에서 container 관리를 자동화하는 유연하고 확장성있는 오픈 소스 플랫폼
- 주요 기능
- 스케줄링
- 다수의 컨테이너를 다수의 호스트에 적절하게 분산 실행
- 상태 관리
- 배포/스케일링
- 서비스 중단 없이 자동화된 배포를 통해 업데이트 하거나 스케일 확장/축소
- 서비스 디스커버리
- 새로 뜨거나 옮겨간 컨테이너에 접근할 수 있는 방법 제공
- resource 연결 관리
- 컨테이너의 라이플 사이클에 맞춰 관련 자원 연결
- 동작 원리
- Master & Slave 아키텍처
- kube-apiserver
- kube-controller-manager
- kubelet
- etcd
- kube-scheduler
- Declarative API
- DKOS
- Datacenter of Kakao OS
- KaaS
09/21
Cloud 특강
클라우드 네이티브 애플리케이션 설계
- Principles
- High observability principle
- app readiness / health check AIP 제공
- log는 stdout, stderr 사용
- Single concern principle
- container 1개에는 1개의 process
- Life-cycle conformance principle
- Image immutability principle
- dev/test/prod에 모든 같은 이미지 사용
- conf만 다르게 사용
- Process disposability principle
- 상태를 외부화하거나 분산시켜야하며 응용 프로그램을 시작하고 종료하는 것이 빨라야 함
- Self-containment principle
- 모든 디펜던시는 빌드타임에 이미지를 담고, 환경에 따라 다른 정보는 런타임시에 configMap, Storage에 저장
- Runtime confinement principle
- 컨테이너 app이 필요한 CPU/MEM/Disk에 대해 고려되어야 함
쿠버네티스 실습
09/22
Cloud 특강
Kubernetes Auth Basic
- Kubernetes
- 설치하는 것이 쉬움
- 문제가 생긴 경우 대응이 어려움
- 접근제어 체계
- Authentication
- 인증
- 어떤 사람이나 사물이 실제로 신고된 바로 그 사람인지를 판단하는 과정
- Authorization
- 인가
- 어떤 사람이나 사물이 특정 리소스/기능에 액세스할 수 있는 권한을 부여하는 것
- Admission control
- 사용자 관리
- k8s는 유저 저장소가 없음
- 내부 인증체계의 종속을 피하고 외부 매커니즘에 의존
- X.509, HTTP Auth, Proxy Authentication
- X.509
- PKI 기술 중 널리 알려진 표준 포맷
- kubernetes 내부 component간 통신에 사용
- 사용자가 api-server에 접근하기 위해 사용하는 kubeconfig의 기본 설정
- TLS
- PKI
- Public Key Infrastructure
- RSA 암호화
- 양방향 암호화
- 대칭키
- 하나의 key로 암/복호화 가능
- 송수신자가 key를 사전에 공유
- AES
- 비대칭키
- 송수신자가 각각 키 pair(public, private)를 가짐
- private key는 공개
- public key는 공개하지 않음
- public key로 암호화한 데이터는 private key로 복호화
- 공개된 네트워크 통신에서 사용하기 적합
- RSA
- 단방향 암호화
- 한번 암호화되면 복호화 할 수 없음
- 같은 방법으로 암호화해서 일치 여부 판단
- 사용자 패스워드 관리
- Hash
- PKI 요구사항
- private key가 유출되지 않았다는 것을 전제로 사용
- private key로 암호화한 데이터는 public key로 복호화 가능
- public key는 누구나 쉽게 구할 수 있음
- public key로 복호화 가능하면 신용할 수 있는 데이터
- PKI 인증서
- 유효기간이 있는 신분증
- 주민등록증 발급기 : private key
- 신분증 감별기 : public key
- 지문 : hash로 한 값
- 서명 : 지문을 private key로 암호화
- 생성
- 인증서 의뢰
- DigiCert private key로 지문 생성
- 인증서 발급
- 검증
- DigiCert의 public key로 서명 복호화
- 인증서 지문과 서명을 복호화한 것이 일치
- RootCA
- 최상위 인증 기관
- private key는 절대 유출되지 않음
- HTTPS
- HTTP에 인증서를 이용한 상호 신뢰 검증과 암호화 통신을 더한 것
- 연결 순서
- TLS handshake
- Kubernetes의 TLS 인증서
- 인증서 발급
- 인증서 목록
- RootCA
- kubernetes admin
- etcd
- kube-api-server
- kube-controller-manager
- kube-scheduler
- kubelet
- k8s Authorization
- user, group
- Role, ClusterRole
- RoleBinding, ClusterRoleBinding
- X.509 방식의 사용자 추가 단점
- 매번 ca.crt와 ca.key로 인증서를 만들어야 함
- 인증서 만료 기한이 있음
- kubernetes service account
- JWT
- JSON Web Token
- JSON 문서에 서명을 추가하고 URL-safe 문자열로 표현
- URL-safe : base64URL 인코딩
09/23
Cloud 특강
면접
- 기술면접
- 신입
- 교육
- 경력
- 코테리뷰
- CS 기초
- 깊은 복사 & 얕은 복사
- REST API
- 브라우저 동작
- 면접 회고
- 인성면접
Kubernetes etcd
- etcd
- kubernetes control plane component
- key-value 저장소
- kubernetes의 스토리지
- RSM
- Replicated state machine
- 각 서버는 로그를 저장
- 각 로그는 command를 가짐
- 각 머신은 로그를 순서대로 실행
- State Machine Replication
- 분산 컴퓨팅에서 fault tolerant system을 만들기 위한 대표적인 접근 방법
- consensus
- safety
- available
- independent from timing
- reactivity
- algorithm
- Terminology
- Quorum
- State
- Leader
- Follower
- Candidate
- Timer
- Heartbeat interval
- Election timeout
- Raft
- concept decomposition
- simplify difficulty
- Basic
- Leader Election
- Log Replication
- Reconfiguration
- Maintenance
- kakao-etcd-backup