- 레이블이란
- 워커 노드에 레이블 설정
- 레이블과 애너테이션 ← 오늘 볼 내용
- 레이블을 이용한 카나리 배포
3. 애너테이션(Annotation)
어노테이션이라고도 불리는데 발음 상 애너테이션이 맞긴하다.
아무래도 상관은 없다.
애너테이션의 특징은 다음과 같다.
- Label과 동일하게 Key-Value를 통해 리소스의 특성을 기록
- Kubernetes 에게 특정 정보를 전달할 목적으로 사용
- Deployment의 RollingUpdate 정보 기록
- annotations:
kubernetes.io/change-cause: version 1.15
- 관리를 위해 필요한 정보를 기록할 용도로 사용
- 릴리즈, 로깅, 모니터링에 필요한 정보들을 기록
- annotations:
builder: "Lee (abc1234@gmail.com)"
buildDate: "20231221"
imageRegistry: https://hub.docker.com/
우리가 앞에서 Deployment를 배우며 Rolling Update를 통해 파드의 이미지 버전을 업데이트하면서 해본 경험이 있다.
우리가 입력한 내용에 따라 표시하는 내용도 달라지며 다양한 정보를 기재함으로써 관리도 용이하게 할 수 있다.
실습
실습해보자.
# annotation-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: annotation-pod
annotations:
builder: "Lee (abc1234@gmail.com)"
buildDate: "20231221"
imageRegistry: "https://hub.docker.com/"
spec:
containers:
- name: nginx
image: nginx:1.25
kubectl describe 명령을 사용하면 다음과 같이 애너테이션 정보가 표시된다.
이와 같이 꼭 전달해야하는 정보가 있다면 애너테이션을 통해 전달할 수 있다.
이전에 디플로이먼트를 공부하면서 썼던 yaml코드를 보자.
# deploy-exam2.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: app-deploy
annotations:
kubernetes.io/change-cause: version 1.22
spec:
progressDeadlineSeconds: 600
revisionHistoryLimit: 10
strategy:
rollingUpdate:
maxSurge: 25%
maxUnavailable: 25%
type: RollingUpdate
replicas: 3
selector:
matchLabels:
app: webui
template:
metadata:
labels:
app: webui
spec:
containers:
- name: web
image: nginx:1.22
ports:
- containerPort: 80
protocol: TCP
우리가 애너테이션을 몰랐을 당시 kubectl apply -f 라는 명령어를 통해 디플로이먼트 파일을 실행했을 때 롤링 업데이트를 위한 버전 정보를 vi에디터를 통해 수정했었던 적이 있다.
그때 이미지의 버전과 애너테이션의 버전 정보를 수정하여 저장하면 수정한 내용대로 자동으로 버전이 업데이트되는 것을 본 적이 있다.
그리고 rollout history를 통해 기록된 버전 정보를 보면 수정한 대로 표시되었는데 그 때와 같은 용도로 애너테이션을 사용할 수 있다는 말이다.
애너테이션은 리소스에 정보(Description)를 실어 관리자에게 전달하는 역할을 하는 것이며 이는 관리를 매우 용이하게 해주므로 사용하면 좋다.
아래 영상을 참고했습니다.
https://youtube.com/playlist?list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c&si=hbPclcPuc-6lTNdE
'Kubernetes' 카테고리의 다른 글
Kubernetes 기초 - ConfigMap (0) | 2023.12.23 |
---|---|
Kubernetes 기초 - Label(4) (0) | 2023.12.22 |
Kubernetes 기초 - Label(2) (0) | 2023.12.21 |
Kubernetes 기초 - Label(1) (0) | 2023.12.21 |
Kubernetes 기초 - Ingress(1) (0) | 2023.12.20 |