도커와 쿠버네티스

최광일·2023년 1월 14일
0

패스트캠퍼스 강의 수강
Kubernetes 와 Docker로 한 번에 끝내는 컨테이너 기반 MSA

Part1. Docker 기초


컨테이터 기술의 발전 image

  • 배경
    • 서비스 운영을 위해 컴퓨팅 리소스를 어떻게 효율적으로 사용할까?
  • 발전과정
    • Traditional Deployment
      • HW > OS > App
    • Virtualized Deployment
      • HW > OS > Hypervisor > VM
    • Container Deployment
      • HW > OS > Docker
    • Kubernetes Deployment

도커 (Docker)image

  • 정의
    • 리눅스 컨테이너 생성 및 실행을 위한 컨테이너 기술
  • 구성요소
    • client
    • docker host
      • image, container
    • registry
  • 이미지와 컨테이너 (image)
    • 도커에서 사용하는 가장 기본적인 단위
    • 클래스와 인스턴스와 같은 관계
    • image
      • 소프트웨어 패키지로, 컨테이너를 생성할 때 필요한 요소
    • container
      • 호스트와 다른 컨테이너로부터 격리된 시스템 자원과 네트워크를 사용하는 프로세스
  • 도커 컨테이너 다루기
    • 컨테이너 라이프사이클 (image)
      • created > running > paused > stoped > deleted
    • 엔트리포인트와 커맨드
    • 환경변수
    • 네트워크
    • 볼륨
    • 로그
  • 도커 이미지 다루기
    • 도커 레이어 아키텍쳐 (image)
      • 여러개의 레이어를 하나의 파일시스템으로 사용
      • base image > build image > execute image
    • DockerFile
    • 이미지 저장소
      • dockerHub, AWS ECR
    • 이미지 경량화 전략
      • 경량 이미지 사용
      • 이미지 레이어 수 줄이기
      • 멀티 스테이지 빌드 사용

도커 컴포즈 (Docker Compose)image

  • 정의
    • 명시적으로 여러 컨테이너 관리
  • 사용이유
    • 단일 서버에서 여러 컨테이너를 프로젝트 단위로 묶어서 관리
    • docker-compose.yml YAML 파일을 통해 명시적 관리
  • 구성요소
    • 프로젝트
      • 도커 컴포즈에서 다루는 워크스페이스 단위
      • 함께 관리하는 서비스 컨테이너의 묶음
    • 서비스
      • 도커 컴포즈에서 컨테이너를 관리하기 위한 단위
      • scale을 통해 서비스 컨테이너의 수 확장 가능
    • 컨테이너
      • 서비스를 통해 컨테이너 관리

Part2. Docker 활용


도커 빌드를 위한 jenkins CI 활용

  • 구성요소
    • Source code manager
      • github
    • Source code Builder
      • gradle
    • Docker image Builder
      • jib
    • Container Image regsitry
      • AWS ECR
    • Cloud compute for CI
      • AWS EC2, jenkins
    • Cloud compute for CD
      • AWS EC2, docker
  • jenkins pipeline
    • 1 Pull Codes from Github
    • 2 Build Codes by Gradle
    • 3 Build Docker Image by Jib & Push to AWS ECR Repository
    • 4 Deploy to AWS EC2 VM

Nexus를 활용한 Private 환경에서 도커 빌드

  • 구성요소
    • AWS VPC내 4개의 Subnet
      • Public Subnet 1
        • Bastion(Jenkins) VM
        • Private Subnet2내 Deploy VM 접속용 네트워크
      • Public Subent 2
        • NAT Gateway
        • Private Subnet1내 Nexus(Common) VM에서 인터넷망에 있는 시스템 접속용
      • Private Subnet 1
        • Nexus(Common) VM
        • Private 환경내 Nexus 운영/관리 환경을 구현할 네트워크
      • Private Subnet 2
        • Private Deploy VM
        • Private 환경내 개발/배포 환경을 구현할 네트워크
  • jenkins pipeline
    • 1 Pull Codes from Github
    • 2 Build Base Image by Docker
    • 3 Build Codes by Gradle
    • 4 Build Docker Image by Jib & Push to Nexus Custom Repository
    • 5 Deploy Nexus Repository to AWS EC2 VM

Part3. Kubernetes 입문


Part4. Kubernetes for develper


Part5. Kubernetes for devops


Part6. MSA with Kubernetes


Part7. Yaml


Part8. Helm


Part9. Kubernetes 자격증 CKA


0개의 댓글