Docker YAML 이해하기

이eun·2024년 12월 11일

web-deployment.yaml

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 : 클라우드 공급자의 로드밸런서를 이용해서 외부에 노출하는 유형

0개의 댓글