쿠버네티스 명령형(Imperative) 관리와 선언형(Declarative) 관리 개념

ZER0·2022년 10월 10일
0

Kubernetes

목록 보기
7/39
post-thumbnail

1. 명령형(Imperative) vs 선언형(Declarative)

  • 명령형(Imperative)
    • shell에서 명령어(create, run, create, edit, replace 등)를 활용해 오브젝트를 핸들링하는 방식
    • (장점) 간단한 작업의 경우 빠르게 수행 가능
    • (단점) IaC 관리 불가능
    • (단점) 여러명의 엔지니어가 작업할 경우 히스토리 추적·관리 불가능
    • (단점) edit으로 변경한 내용이 수정 형태(추가 or 삭제)에 따라 Live Object Configuration 또는 Last Applied Configuration 둘 중 한곳에만 적용되어 설정의 불일치 발생
  • 선언형(Declarative)
    • yaml 파일에 오브젝트 상태를 정의하고 apply로 생성하는 방식
    • (장점) IaC 가능
    • (장점) 작업에 대한 히스토리 추적·관리 가능
    • (장점) apply 명령어를 활용하기 때문에 오브젝트 변경 내용이 Live Object Configuration와 Last Applied Configuration에 적용되어 설정이 자동으로 일치
    • (단점) 간단한 작업일 경우 yaml 파일 정의가 번거로움

2. Configuration File vs Live Object Configuration vs Last Applied Configuration

  • Configuration File
    • 오브젝트 상태를 정의한 yaml 파일
  • Live Object Configuration
    • 'kubectl apply -f [yaml_파일]'를 통해 생성된 오브젝트 설정
  • Last Applied Configuration
    • Live Object Configuration 내용 중 annotations에 포함된 json

3. Configuration 변경 절차

  • 설정을 수정·추가하는 경우(ex. nginx:1.18 -> nginx:1.20 이미지 변경)
    • 1) nginx 이미지를 수정한 yaml 파일을 apply
    • 2) Configuration File 과 Live Object Configuration을 비교하여 차이점이 존재하는 부분(수정·추가된 부분)을 Live Object Configuration에 적용
    • 3) Live Object Configuration의 내용을 Last Applied Configuration에 반영
  • 설정을 삭제하는 경우(ex. app: zero 레이블 삭제)
    • 1) 레이블을 삭제한 yaml 파일을 apply
    • 2) Configuration File 과 Last Applied Configuration을 비교하여 차이점이 존재하는 부분을 Live Object Configuration에 적용
    • 3) Last Applied Configuration을 Live Object Configuration과 동일하게 수정

4. 참고

  1. https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/
  2. https://seongjin.me/kubernetes-imparative-vs-declarative/amp/
profile
Security Compliance Engineer

0개의 댓글