쿠버네티스에서 yaml 파일 사용하기

Moon Blue의 IT 로그 📝·2023년 11월 22일
0

yaml 파일이란 key: value 형태로 간단하고 직관적인 설정 파일이다. 다양한 목적으로 활용되며 특히 쿠버네티스에서 리소스들을 구성하고 다룰 때 주로 사용한다.

📝 기본 문법

  • 콜론(:)을 기준으로 왼쪽에 key 오른쪽에 value 값을 지정
    json 처럼 문자열을 감싸기 위해 따옴표, 쌍따옴표 등을 사용할 필요 없음
country: Korea
nickname: havi
field: cloud-infra
position: devops-engineer
  • 오브젝트 형태로 계층 구조를 표현하려면 들여쓰기 사용한다
    또는 스페이스의 일괄적인 칸 수를 정하여 구조화 한다
devops:
	container: docker
    orchestration: kubernetes
    cicd: jenkins
    monitoring: prometheus
  • 배열 형태로 구성하는 경우 두가지 방법이 있다
# 1. 하이픈(-)을 활용하는 방법
cloudProvider:
	- AWS
    - Azure
    - GCP

# 2. 대괄호([])를 활용하는 방법
cloudProvider: [ AWS, Azure, GCP ]
  • 배열형태의 구성요소가 오브젝트 형태인 경우
    각 오브젝트의 시작부분을 하이픈(-)으로 구분한다
cloudProvider:
	- name: AWS
      provider: Amazon
    - name: Azure
      provider: Microsoft
    - name: GCP
      provider: Google

📝 쿠버네티스에서 필요한 필수 속성

# yaml 파일 root에 입력해야 하는 필수 속성들
apiVersion: # api 버전
kind:       # 오브젝트 종류
metadata:   # 참조 정보
spec:       # 상세 정보

📝 Pod 샘플

# sample-pod.yaml

apiVersion: v1
kind: Pod
metadata:
  name: sample-pod
  labels:
    abc: 123 # labels 하위속성 이름은 원하는 명칭으로 정할 수 있다
spec:
  containers:
    - name: sample-nginx
      image: nginx

📝 ReplicaSet 샘플

# sample-replicaset.yaml

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: myapp-replicaset
  labels:
    app: myapp
spec:
  selector:
    matchLabels:
      app: myapp
  replicas: 3
  template:
    metadata:
      name: nginx
      labels:
        app: myapp
    spec:
      containers:
        - name: nginx
          image: nginx

📝 Deployment 샘플

# sample-deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-deployment
  labels:
    tier: frontend
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 5
  template:
    metadata:
      name: nginx
      labels:
        app: myapp
    spec:
      containers:
        - name: nginx
          image: nginx
    

📝 Service 샘플

# sample-service.yaml

apiVersion: v1
kind: Service
metadata:
  name: myapp-service
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 80
      nodePort: 30004
  selector:
    app: myapp

📝 명령어로 yaml 파일 만들기

# Pod 
kubectl run nginx \
--image=nginx \ 
--dry-run=client -o yaml > sample-nginx.yaml

# 기존에 존재하는 object 로부터 yaml 파일 생성
kubectl get pod nginx -o yaml > nginx-pod.yaml

# Deoployment
kubectl create deployment sample-nginx \ 
--replicas=3 \ 
--image=nginx \ 
--dry-run=client -o yaml > sample-deployment.yaml

# Service
kubectl expose pod redis \
--port=6379 \
--name redis-service
--dry-run=client -o yaml > sample-service.yaml

🚀 yaml 파일로 리소스 조작

# 최초 생성
kubectl create -f sample.yaml

# 수정 적용 ?
kubectl apply -f sample.yaml

# 대체
kubectl replace --force -f sample.yaml

# 삭제
kubectl delete -f sample.yaml

# labels 검색 (selector 옵션 사용)
kubectl get po --selector env=dev
profile
What a Beautiful World~ 🌏

0개의 댓글