apiVersion: apps/v1 # 사용할 API 버전을 지정합니다 (apps/v1은 앱 관리를 위한 API 버전을 의미합니다).
kind: Deployment # 이 리소스의 종류를 지정합니다. 이 경우에는 Deployment입니다.
metadata:
name: nginx-deployment # Deployment 리소스의 이름을 지정합니다.
spec:
selector: # ReplicaSet이 파드를 선택하기 위한 레이블 셀렉터를 정의합니다.
matchLabels: # 이 레이블 셀렉터는 아래 파드 템플릿에서 정의한 레이블과 일치하는 파드를 선택합니다.
app: nginx
replicas: 2 # ReplicaSet이 관리할 파드의 복제본 수를 지정합니다. 이 경우 2개의 파드를 유지합니다.
template: # 파드 템플릿을 정의합니다. 이 템플릿은 ReplicaSet이 생성하는 파드를 설명합니다.
metadata:
labels: # 이 파드의 레이블을 정의합니다.
app: nginx
spec:
containers: # 파드 내의 컨테이너 목록을 정의합니다.
- name: nginx # 컨테이너의 이름을 지정합니다.
image: nginx:1.14.2 # 실행할 도커 이미지를 지정합니다 (여기서는 nginx:1.14.2).
ports: # 컨테이너의 포트 설정을 정의합니다.
- containerPort: 80 # 이 컨테이너는 80번 포트를 사용합니다.
이 코드는 "nginx-deployment"라는 이름의 Deployment를 생성하며, 이 Deployment는 "app: nginx" 레이블을 가진 파드를 2개 유지합니다. 이 파드는 Nginx 웹 서버 이미지를 사용하며 80번 포트로 서비스됩니다. Deployment는 언제든지 원하는 수의 파드를 유지하도록 관리하며, 파드가 중지되면 새로운 파드를 자동으로 시작하여 안정적인 서비스를 유지합니다.