kubectl 명령형과 선언형 방식

 

명령형 vs 선언형

명령형 (imperative)

  • 수행하고자 하는 액션을 지시
  • 적은 리소스에 대해 빠르게 처리 가능
  • 여러 명령어를 알아야 함

선언형 (declarative)

  • 최신 트렌드
  • 도달하고자 하는 상태(desired state)를 선언
  • 코드로 관리 가능 (gitops 활용 가능)
    • 변경사항에 대한 감사(audit) 용이
    • 코드리뷰를 통한 협업
  • 멱등성 보장(apply)
  • 많은 리소스에 대해서도 매니페스트 관리 방법에 따라 빠르게 처리 가능
  • 알아야 할 명령어 수가 적음

명령형 kubectl 명령어

kubectl run -it ubuntu --image=ubuntu:focal bash
kubectl create deployment grafana --image=grafana/grafana --port=3000
kubectl expose deployment grafana --type=NodePort --port=80 --target-port=3000

# Print grafana service url
minikube service grafana

선언형 kubectl 명령어

alt text

kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

# Print grafana service url
minikube service grafana