🔹 Labels
- Kubernetes 객체에 key-value 형태로 붙이는 식별 태그
- 동일한 label 값을 기준으로 객체를 그룹화하거나 조회할 수 있음
- 형식 예:
app=home, env=prod
🔹 Annotations
- label과 유사하지만, 운영/관리 정보를 기록하기 위해 사용
- 예: 배포 변경 이력, 빌드 버전 정보, 설명 등
- 검색이나 셀렉터에는 사용되지 않음
✅ 명령어 기반 Label/Annotation 관리
🔹 기존 객체 전체 삭제
kubectl get all
kubectl delete deploy,svc --all

🔹 v1 홈페이지 배포 (Inline YAML 적용)
kubectl apply -f - <<EOF
apiVersion: apps/v1
kind: Deployment
metadata:
name: home
spec:
replicas: 1
selector:
matchLabels:
app: home
template:
metadata:
labels:
app: home
spec:
containers:
- name: home
image: apexacme/welcome:v1
ports:
- containerPort: 80
EOF
🔹 배포된 객체 확인 및 레이블 조회
kubectl get all
kubectl get pod --show-labels

🔹 Equal-Based Selector로 레이블 기반 조회/삭제
kubectl get pods -l app=home
kubectl get pods --selector app=home
kubectl delete pod -l app=home

🔹 Set-Based Selector 사용 예시
kubectl get pods --selector 'app in (home, home1)'
kubectl get po --selector 'env in(home, home1), app in (home, home1)'

🔹 Deployment에 Label 추가/삭제
kubectl get deploy
kubectl label deploy home app=home
kubectl get deployment --show-labels
kubectl delete deploy --selector app=home
kubectl get all

✅ 배포 이력 관리 (Annotation 활용)
🔹 초기 배포 (v1) 및 주석 추가
kubectl create deploy home --image=apexacme/welcome:v1
kubectl annotate deploy home kubernetes.io/change-cause="v1 is The first deploy of My Homepage."
kubectl get deploy -o wide
🔹 업그레이드 (v2) 및 주석 추가
kubectl set image deploy home home=apexacme/welcome:v2
kubectl annotate deploy home kubernetes.io/change-cause="v2 is The 2nd version of My Homepage."
kubectl get deploy -o wide
🔹 배포 히스토리 확인
kubectl rollout history deploy home
🔸 출력 결과

🔹 롤백
🔸 최신 이전 버전으로 롤백
kubectl rollout undo deploy home

🔸 특정 revision으로 롤백
kubectl rollout undo deploy home --to-revision=1