카카오클라우드스쿨 Week15

황동근·2022년 9월 19일
0

카카오클라우드스쿨

목록 보기
15/21

09/19

Cloud 특강

카카오 클라우드 네이트브 셀

담당 업무

  • DKOS 개발 및 운영
    • Datacenter of Kakao OS
    • Kubernetes as a Service
  • D2hub 개발 및 운영
    • Private Container Image Registry
  • Kargo 개발 및 운영
    • Cloud Native CI/CD
  • 클라우드 학습 플랫폼

Cloud Native CI/CD

  • Github
  • D2hub
  • Jenkins
  • Kargo
  • DKOS

Cloud

  • 인터넷 통신망 어딘가에서 구름에 싸여 보이지 않은 컴퓨팅 자원을 원하는대로 사용
  • 사용한 만큼 비용 지불
  • 서버를 직접 구매할 때 고려해야 할 전력, 위치, 세팅, 확장성을 고민하지 않고 운영에만 집중
  • 종류
    • 하이브리드 클라우드
      • 퍼블릭 + 프라이빗
    • 멀티 클라우드
      • 여러 클라우드 vendor 사용
  • 스택
    • On premises
      • 데이터센터 소유
    • IaaS
      • AWS EC2
    • PasS
      • Heroku, OpenShift
    • SaaS
      • Slack, Microsoft 365, Dropbox

Cloud Native

  • 클라우드의 이점을 최대로 활용할 수 있도록 애플리케이션을 구축하고 실행하는 방식
  • CI/CD
    • 빌드/테스트 자동화
    • CI
      • Continuous Integration
      • 지속적인 통합
    • CD
      • Continuous Delivery/Deployment
      • 배포 자동화
  • DevOps
    • 개발과 운영을 결합해 탄생한 개발 방법론 시스템
    • 개발 조직과 운영 조직이 물리적으로 격리되지 않은 환경에서 개발, 테스트, 배포, 운영에 이르는 전체 생명주기를 서로 긴밀하게 통합하여 관리
  • Microservices
    • MAS
    • 소프트웨어 애플리케이션을 독립적으로 배치 가능하는 작은 서비스 조합(suite)으로 설계하는 방식
  • Containers
    • 마이크로 서비스 단점 극복
  • 개발 방법론
    • Waterfall
    • Agile

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
      • Object
      • Controller
  • DKOS
    • Datacenter of Kakao OS
    • KaaS
      • Kubernetes as a Service

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
      • SIGTERM 필요
    • 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
          • 비대칭키 사용
          • 대칭키 발급
        • 대칭키 암호화 통신
      • TLS handshake
        • salt
  • Kubernetes의 TLS 인증서
    • 인증서 발급
      • 자체발급
        • Certificate Authority
      • 인증서 발급
        • client-key
        • server-key
    • 인증서 목록
      • 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
      • secret 생성
      • JWT token 저장
  • 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
          • Paxos
          • Raft
    • Terminology
      • Quorum
        • majority
      • State
        • Leader
        • Follower
        • Candidate
      • Timer
        • Heartbeat interval
        • Election timeout
  • Raft
    • concept decomposition
    • simplify difficulty
    • Basic
      • Leader Election
      • Log Replication
    • Reconfiguration
    • Maintenance
  • kakao-etcd-backup
    • requirement
      • etcd backup
      • metakage
profile
안녕하세요~

0개의 댓글