자격증/CKA

[CKA] Udemy 44. Imperative vs Declarative

14ben 2024. 7. 4. 00:01
728x90

1. Kubernetes의 명령형 및 선언형 접근 방식

  • Kubernetes에서 명령형(imperative)과 선언형(declarative) 접근 방식에 대해 학습

 

2. 명령형 및 선언형 접근 방식 이해

2.1 비유를 통한 이해

  • 친구의 집을 방문하기 위한 두 가지 접근 방식
    • 명령형 접근: 택시 기사에게 길을 지시하는 방식.
    • 선언형 접근: 목적지만 지정하고 시스템이 길을 찾도록 하는 방식.

 

2.2 인프라 관리에서의 접근 방식

  • Imperative (명령형 접근)
    • 인프라 프로비저닝을 단계별로 지시하는 방식.
    • 예: VM을 프로비저닝하고, NGINX를 설치하고, 설정 파일을 편집하고,
      소스 코드를 다운로드한 후 NGINX를 시작하는 과정.
  • Declarative (선언형 접근)
    • 요구 사항을 선언하고 시스템이 이를 충족하도록 하는 방식.
    • 예: NGINX가 설치된 VM이 필요하다는 요구 사항을 선언하고, 시스템이 필요한 작업을 수행함.

 

3. Kubernetes에서의 명령형 접근 방식

3.1 명령어를 통한 객체 관리

  • kubectl run 명령을 사용하여 파드를 생성.
  • kubectl create deployment 명령을 사용하여 배포 생성.
  • kubectl expose 명령을 사용하여 서비스를 생성하여 배포를 노출.
  • kubectl edit 명령을 사용하여 기존 객체를 편집.
  • kubectl scale 명령을 사용하여 배포 또는 레플리카셋을 스케일링.
  • kubectl set image 명령을 사용하여 배포 이미지 업데이트.

 

3.2 객체 구성 파일을 통한 관리

  • kubectl run, kubectl create, kubectl expose 명령을 사용하여 새 객체를 생성.
  • kubectl edit, kubectl scale, kubectl set 명령을 사용하여 기존 객체를 수정.
  • 간단한 작업에 유용하지만 복잡한 작업에는 길고 복잡한 명령어 필요.

 

  • 객체 정의 파일 작성
    • YAML 형식으로 객체의 요구 사항을 명시.
    • kubectl create 명령을 사용하여 객체 생성.
  • 변경 사항 관리
    • kubectl edit 명령을 사용하여 라이브 객체 편집 가능.
    • kubectl replace 명령을 사용하여 구성 파일을 통해 변경 사항 적용.

 

 

4. Kubernetes에서의 선언형 접근방식

 

4.1 객체 상태 선언

  • 객체 구성 파일을 작성하여 애플리케이션과 서비스의 예상 상태를 정의.
  • kubectl apply 명령을 사용하여 구성 파일을 적용하고,
  • Kubernetes가 시스템을 예상 상태로 만듦.
  • 객체가 없으면 생성, 이미 있으면 변경 사항만 적용.
  • 여러 객체 구성 파일을 한 디렉터리에 저장하고 한 번에 적용 가능.

 

4.2 선언형 접근의 장점

  • 시스템이 객체의 현재 상태를 확인
  • kubectl apply 명령을 다시 실행
  • 필요한 변경 사항을 판단하여 자동으로 적용.
  • 명령어 사용이 아닌 구성 파일을 통해 변경 사항을 추적하고 관리 가능.

 

5. 시험 준비 팁

  • 명령형 접근 방식을 사용하여 시간 절약
    • 예: 파드 또는 배포를 빠르게 생성할 때 명령형 명령어 사용.
  • 기존 객체 속성을 편집할 때 kubectl edit 명령 사용.

 

  • 복잡한 요구 사항이 있을 때는 객체 구성 파일 사용
    • 예: 다중 컨테이너, 환경 변수, 명령어, 초기화 컨테이너 등을 포함한 객체 생성 시.
    • 오류가 발생했을 때 쉽게 파일을 업데이트하고 적용 가능.
  • kubectl apply 명령 사용을 익히고 실습 필요.

 

6. 결론

  • 명령형 및 선언형 접근 방식은 각각의 장단점이 있음.
  • 상황에 따라 적절한 접근 방식을 선택하여 Kubernetes 객체를 관리해야 함.
  • 시험 준비를 위해 다양한 접근 방식을 연습하고,
  • Kubernetes 문서 페이지를 참조하여 추가 학습 필요.

 

 

 

728x90