Annotation
2021.08.06 - Labels, Selectors and Annotation에서 간단히 정의했는데 쿠버네티스에서 어노테이션은 키-값 형식으로 객체에 대한 정보를 제공하는 임의의 비식별 메타데이터, 간단히 말해 주석을 의미한다.
"metadata": {
"annotations": {
"key1" : "value1",
"key2" : "value2"
}
}
yaml 정의 파일에서 spec.metadata.annotations로 정의한다.
어노테이션으로 지정하는 정보는 다음과 같을 수 있다.
- 이미지 정보 : 빌드, 릴리즈, 타임스탬프, 릴리즈 아이디, Git 브랜치, 이미지 해시, 레지스트리 주소 등
- 로깅, 모니터링, 분석 또는 감사 리포지터리에 대한 포인터
- 디버깅 목적으로 사용하는 클라이언트 라이브러리 정보
- 다른 시스템 구성 요소와 관련된 사용자, 도구, 시스템 정보
등등…….
이 글에서는 yaml 형식이 아니라 어노테이션을 추가하는 명령어인 kubectl annotate에 대해 적어둔다.
kubectl annotate
하나 이상의 객체에 대한 주석을 추가하거나 갱신한다.
kubectl annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]
--overwrite 옵션을 추가하면 기존 데이터를 갱신한다. 만약 --overwrite 옵션을 추가하지 않고 기존 데이터를 갱신하려고 시도하면 실패한다.
사용 예시
- 어노테이션 추가
kubectl annotate pods nginx description='web-server'
실행 결과
- 어노테이션 갱신
kubectl annotate pods nginx --overwrite description='api-server'
실행 결과
- 어노테이션 삭제
kubectl annotate pods nginx description-
참고 문서
https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/annotations/
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#annotate
https://jamesdefabia.github.io/docs/user-guide/kubectl/kubectl_annotate/