Search

kubectl apply

Created
2023/09/30 05:10
Tags
k8s
CKA
Mumshad Mannambeth
Core Concept
kubectl의 create, replace, edit 등의 명령어를 사용하는 것이 아니라, apply 하나면 대체로 원하는 기능들이 모두 수행되는 것을 볼 수 있음
이와 같은 것이 가능한 것은 apply가 동작하는 방식 때문인데, 명시된 객체에 apply를 사용하게 되면 대상 객체가 없는 경우엔 생성을 수행하게 되고, 대상 객체가 있는 경우엔 명시된 객체대로 변경점을 적용하는 형태로 동작
apply가 위와 같이 동작할 수 있는 이유는 내부적으로는 kubectl의 다른 명령어들과 조금 다르게 구성되어 있기 때문
로컬 yaml 파일이 있고 생성된 객체 yaml인 LOC (Live Object Configuration)이 존재하게 되는데, 만일 쿠버네티스 메모리 상에 LOC가 존재하지 않으면 새롭게 객체를 만드는 식으로 동작
반면에 만일 LOC가 있는 경우 2가지 작업을 수행하게 되는데, 1) 로컬 yaml 파일과 LOC의 필드 값을 비교하여 변경된 값을 갱신하는 작업과 2) LOC의 metadata.annotations.kubectl.kubernetes.io/last-applied-configuration 이라는 필드에 저장된 json과 로컬 yaml 파일의 비교를 통해 새롭게 생긴 필드와 삭제된 필드를 반영
LAC (Last Applied Configuration)의 경우 apply 명령어를 사용할 때만 갱신되므로 kubectl의 다른 명령어를 사용할 때의 동작과 다름을 명심해야함