[Kubernetes] Label & Annotation

pingping·2021년 2월 18일
0

Kubernetes

목록 보기
8/10
post-thumbnail

Label

  • Object에 첨부된 키-값 쌍이며 사용자가 클러스터 안에 Object를 만들 때 Metadata로 설정할 수 있다.
  • Label의 키는 컨트롤러들이 Pod를 관리할 때 자신이 관리해야 할 파드를 구분하는 역할을 한다.
  • Label을 사용하면 사용자가 Loosely Coupled(느슨한 결합) 방식으로 조직 구조와 시스템 Object에 Mapping할 수 있으며, 클라이언트에 Mapping 정보를 저장할 필요가 없다.
"metadata": {
  "labels": {
    "key1" : "value1",
    "key2" : "value2"
  }
}
  • Label 예시
    • "release" : "stable", "release" : "canary"
    • "environment" : "dev", "environment" : "qa", "environment" : "production"
    • "tier" : "frontend", "tier" : "backend", "tier" : "cache"
    • "partition" : "customerA", "partition" : "customerB"
    • "track" : "daily", "track" : "weekly"

Selector

  • 레이블 셀렉터를 통해 클라이언트와 사용자는 Object를 식별할 수 있다. 레이블 셀렉터는 Kubernetes 코어 그룹의 기본이다.

Label Selector 설정 방식

  1. 등호 기반

    같은지 ( = ) , 다른지 ( ≠ ) 구분하는 연산자를 사용할 수 있다.

environment=develop
release=stable

=> Label의 키가 environment인 것 중 값이 develop인 것들을 선택하고,
    Label의 키가 release인 것 중 값이 stable인 것들을 선택한다.
  1. 집합 기반

    여러 개 값을 조건으로 설정한 다음 해당 키가 있는 레이블값이 조건에 속하는지 ( in ), 아닌지 ( notin ), 특정 레이블의 키가 존재 ( exists )하는지를 조건으로 설정할 수 있다.

# 환경이 개발 혹은 스테이지인 것을 선택
environment in (develop, stage)

# 배포가 최신 것  혹은 카나리를 선택
release notin (latest, canary)

# gpu라는 키가 있는 모든 Label 선택
gpu

# gpu라는 키가 없는 모든 Label 선택
!gpu

Annotation

  • Annotation은 키-값 쌍으로 구성하며 사용자가 설정할 수 있다.
  • Kubernetes 시스템이 필요한 정보를 담았으며 쿠버네티스 클라이언트나 라이브러리가 자원을 관리하는데 활용한다.
"metadata": {
  "annotations": {
    "key1" : "value1",
    "key2" : "value2"
  }
}

  • 에너테이션의 키는 쿠버네티스 시스템이 인식할 수 있는 값을 사용한다. Deployment로 앱을 배포할 때 변경 사유를 적는 CHANGE-CAUSE 정보를 작성하는 것이 예이다.
  • 예시
apiVersion: v1
kind: Pod
metadata:
  name: annotations-demo
  annotations:
    imageregistry: "https://hub.docker.com/"
		manager: "myadmin"
		contact: "000-0000-0000"
		release-version: "v1.0"
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80
  • Annotation의 예시 모음
    • Build, Release, Time stamp, Release ID, git 브랜치, PR 번호, 이미지 해시 및 레지스트리 주소와 같은 이미지 정보
    • 로깅, 모니터링, 분석 또는 감사 리포지터리에 대한 포인터, ..
profile
Cloud Infra Engineer & interested in python, IaC, k8s

0개의 댓글