Maxima's Lab

[Kubernetes] YAML 파일 작성하는 방법 (Pod, Deployment, Service, ConfigMap, Secret, PVC) 본문

Kubernetes

[Kubernetes] YAML 파일 작성하는 방법 (Pod, Deployment, Service, ConfigMap, Secret, PVC)

Minima 2024. 3. 2. 23:26
728x90
SMALL

안녕하세요, 오늘은 쿠버네티스에서 YAML 파일 작성하는 방법에 대해서 알아보겠습니다.

 

YAML 파일은 리소스의 정의, 구성, 관리를 위해 사용되며, Pod, Deployment, Service 등의 리소스를 생성하고 관리하기 위해 작성 가능합니다.

 

리소스들의 종류는 다음과 같습니다.

 

  • Pod
  • Deployment
  • Service
  • ConfigMap
  • Secret
  • PersistentVolumeClasim (PVC)

 

먼저, Pod에 대해서 설명하겠습니다.

Pod는 하나 이상의 컨테이너를 실행하는 가장 기본적인 배포 단위로써, 컨테이너의 집합이며 네트워크와 Storage 리소스를 공유합니다.

다음과 같이 YAML 파일을 작성할 수 있습니다.

 

apiVersion: v1
kind: Pod
metadata:
  name: example-pod
  labels:
    app: myapp
spec:
  containers:
    - name: container-name
      image: container-image
      ports:
        - containerPort: 8080

 

  • apiVersion : 쿠버네티스 API 버전, Pod의 경우 v1
  • kind : 리소스 유형
  • metadata : 리소스의 이름, 레이블 등 메타데이터를 정의
  • spec : Pod가 실행해야할 컨테이너 및 설정 명시

 

Deployment는 Pod의 선언적 업데이트와 자동 롤아웃을 관리하며, 애플리케이션의 상태를 관리하고 복제본 수를 조절하여 가용성을 보장합니다. 다음과 같이 YAML 파일을 작성할 수 있습니다.

 

apiVersion: apps/v1
kind: Deployment
metadata:
  name: example-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
      - name: container-name
        image: container-image
        ports:
        - containerPort: 8080

 

  • apiVersion : Deployment의 경우 apps/v1
  • replicas : 실행할 Pod의 복제본 수
  • selector : Deployment가 관리할 Pod를 선택하는데 사용되는 레이블 셀렉터
  • template : 생성될 Pod의 Template

 

Service는 Pod 집합에 대한 안정적인 접근 포인트를 제공하며, Service를 사용하면 Pod를 직접 노출하지 않고도 외부 또는 내부에서 Pod에 접근할 수 있습니다. 다음과 같이 YAML 파일을 작성할 수 있습니다.

 

apiVersion: v1
kind: Service
metadata:
  name: example-service
spec:
  selector:
    app: myapp
  ports:
    - protocol: TCP
      port: 80
      targetPort: 8080
  type: LoadBalancer

 

  • selector : Service가 포워딩할 트래픽을 받는 Pod를 결정
  • ports : Service가 수신하는 포트와 Pod로 포워딩하는 targetPort를 정의
  • type : Sercice 타입 지정함. LoadBalancer는 클라우드 제공자의 로드 밸런서를 사용하여 Pod를 인터넷에 노출

 

ConfigMap은 구성 데이터를 Key-Value 쌍으로 저장하여 애플리케이션에 전달하는 데 사용됩니다. 애플리케이션 설정, 호스트 이름, 데이터베이스 URL 등을 Pod에 전달할 수 있습니다. 다음과 같이 YAML 파일을 작성할 수 있습니다.

 

apiVersion: v1
kind: ConfigMap
metadata:
  name: example-configmap
data:
  key1: value1
  key2: value2

 

  • data : 구성 데이터를 Key-Value 쌍으로 저장

 

Secret은 비밀번호, OAuth 토큰, ssh 키와 같은 민감한 정보를 저장하는데 사용되며, Secret은 ConfigMap과 유사하지만 민간하 정보를 보호하기 위해 사용됩니다. 다음과 같이 YAML 파일을 작성할 수 있습니다.

 

apiVersion: v1
kind: Secret
metadata:
  name: example-secret
type: Opaque
data:
  password: cGFzc3dvcmQ=

 

  • data : 민감한 정보를 base64 인코딩된 형태로 저장

 

PVC는 Storage 리소스를 동적으로 요청하는 방법을 제공하며, PVC를 사용하면 애플리케이션이 필요로 하는 Storage를 추상화하여 사용할 수 있습니다. 다음과 같이 YAML 파일을 작성할 수 있습니다.

 

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: example-pvc
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi

 

  • accessModes : PVC가 Storage에 접근하는 방식입니다. 예를 들어, ReadWriteOnce는 볼륨을 단일 노드에서 읽기/쓰기 모드로 마운트할 수 있음을 의미
  • resources : 요청된 Storage 양을 의미

 

이상으로, 쿠버네티스에서 YAML 파일을 작성하는 방법에 대해서 알아보았습니다.

감사드립니다.

728x90
LIST
Comments