Kubernetes

Kubernetes 기초 - Label(3)

사실 나도 모름 2023. 12. 22. 00:43
  1. 레이블이란
  2. 워커 노드에 레이블 설정
  3. 레이블과 애너테이션               ←  오늘 볼 내용
  4. 레이블을 이용한 카나리 배포

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

 

[따배쿠] 쿠버네티스 시리즈

 

www.youtube.com

 

'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