K8s managedFields

(ManagedFields에서 넘어옴)

1 개요[ | ]

managedFields
매니지드 필드
  • k8s 오브젝트의 메타데이터에 포함되는 필드로, 각 매니저(manager)가 어떤 필드를 언제 마지막으로 수정했는지를 추적한다.
  • Server-Side Apply(SSA)의 핵심 요소로, 3-way 병합을 구현하기 위해 사용된다.
  • 오브젝트의 metadata.managedFields에 배열 형태로 저장된다.

2 동작[ | ]

  • API 서버는 각 리소스에 대해 필드 단위 변경 내역을 기록한다.
  • 기록 항목에는 매니저 이름, API 버전, 운영 방식(apply/patch 등), 필드 경로 등이 포함된다.
  • 여러 클라이언트(kubectl, 컨트롤러, 오퍼레이터 등)가 동시에 같은 오브젝트를 수정하더라도, SSA는 managedFields를 기반으로 변경 충돌을 감지하고 병합할 수 있다.

3 구조 예시[ | ]

apiVersion: v1
kind: ConfigMap
metadata:
  name: example
  managedFields:
  - manager: kubectl-client-side-apply
    operation: Update
    apiVersion: v1
    time: "2024-09-07T12:34:56Z"
    fieldsType: FieldsV1
    fieldsV1:
      f:data:
        .: {}
        f:KEY: {}
  • manager: 변경을 가한 주체 이름 (예: kubectl, controller)
  • operation: 변경 방식 (Apply, Update, Patch 등)
  • fieldsType: 필드 추적 방식 (현재는 주로 FieldsV1)
  • fieldsV1: 실제 필드 경로 트리 구조

4 활용[ | ]

  • SSA에서 3-way diff의 base 역할을 담당한다.
  • 컨트롤러와 사용자가 같은 오브젝트를 관리할 때, 어떤 필드를 누가 소유하는지 추적할 수 있다.
  • 충돌(conflict)이 발생하면 kubectl이나 API 서버가 이를 알려주고, 사용자가 명시적으로 해결해야 한다.

5 같이 보기[ | ]

6 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}