apiVersion: apps/v1 -> 디플로이먼트 설정을 위한 쿠버네티스 api 버전
kind: Deployment -> 디플로이먼트 설정이라고 명시
metadata:
name: web-deployment -> 디플로이먼트 이름
spec: -> 디플로이먼트 사양
replicas: 3 -> 레플리카 개수 지정
selector: -> 디플로이먼트가 관리하는 pod 명시
matchLabels: -> 해당 라벨을 가지는 pod를 관리한다
app: web
template: -> 디플로이먼트에서 생성하고 관리하는 pod의 사양 정보
metadata:
labels:
app: web
spec:
containers:
- name: web
image: hello-kube:v1
ports:
- containerPort: 8080
imagePullPolicy: Never -> 이미지를 docker repository로부터 가져올필요가 없어서 never로 설정함
---
apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
type: ClusterIP -> 외에 NodePort, LoadBalancer가 있음
selector:
app: web -> 해당 라벨의 pod를 노출 (단, 디플로이먼트의 pod 라벨과 동일해야 함)
ports:
- port: 3000 -> 서비스가 노출하는 포트
targetPort: 8080 -> 디플로이먼트 파드에서 제공하는 포트
마이너스 (-)를 3번 입력하고
service 스니펫을 클릭하면 자동 설정됨
spec의 type 종류는
ClusterIp(default) : 쿠버네티스 클러스터 내부에 노출
NodePort : 노드 IP에 포트를 노출
LoadBalancer : 클라우드 공급자의 로드밸런서를 이용해서 외부에 노출하는 유형