[MSA Prepare] k8s 선언형 접근법

·2024년 5월 3일
0

MSA Prepare

목록 보기
7/21
post-thumbnail

선언형(Declarative) 접근법?

  • yaml 파일에 오브젝트 상태를 정의하고 apply로 생성
  • Dockerfile과 같이 파일을 통해서 오브젝트를 관리하는 기법

파일예시

  • 다음과 같이 yaml 파일을 구성한다.
apiVersion: v1
kind: Service
metadata:
  name: backend
spec:
  selector: 
    app: second-app
  ports:
    - protocol: 'TCP'
      port: 80
      targetPort: 8080
  type: LoadBalancer
  • apiVersion은 반드시 필수로 필요하다.
  • 다음과 같이 kind, metadata, spec으로 구성된다.
  • kind를 통해 오브젝트의 타입을 지정한다.

시작하기

  • yaml 파일을 구성하고 kubectl 명령을 이용해서 사용한다.
# 실행
kubectl apply -f=file.yaml

# 삭제
kubectl delete -f=file1.yaml,file2.yaml

deployment 구성하기

  • deployment.yaml
apiVersion: apps/v1 
kind: Deployment
metadata:
  name: backend-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: spring-data-rest
  template: 
    metadata:
      labels:
        app: spring-data-rest
    spec:
      containers:
        - name: second-node
          image: xoo0608/spring-data-rest
  • kind는 Deployment이다
  • metadata를 통해서 이름등을 지정할 수 있음
  • spec은 가장 중요한 부분으로 원하는 상태를 지정하는 부분
  • selector는 어떤 것을 제어할지에 대한 부분으로 밑에서 지정한 Pod의 라벨을 지정한다.
  • temlplate에서는 생성해야하는 Pod를 정의한다.
  • temlplate 밑에 kind: Pod를 지정해야하지만 당연하기 때문에 생략이 가능하다.
  • metadata의 labels를 통해서 선택이 가능하다.

deployment 실행하기

kubectl apply -f deployment.yaml

Service 구성하기

  • service.yaml
apiVersion: v1
kind: Service
metadata:
  name: backend-service
spec:
  selector:
    app: spring-data-rest
  ports:
    - protocol: 'TCP'
      port: 80
      targetPort: 8080
  type: LoadBalancer
  
  • apiVersion: v1을 사용해야한다.

service 실행하기

kubectl apply -f=service.yaml

minikube service backend-service

삭제하기

kubectl delete -f=service.yaml,deployment.yaml
profile
백엔드 개발자가 꿈인 컴공과

0개의 댓글

관련 채용 정보