쿠버네티스/cka

디플로이먼트, 서비스를 활용해 백엔드(Nest.js) 서버 띄워보기

몽자비루 2025. 3. 6. 20:47
  1. 기존에 띄워놓은 네임스페이스 (pod, deployment, service ...) 삭제하기
    1. kubectl delete all --all : 기존의 모든 네임스페이스를 삭제한다.
  2. 디플로이먼트, 서비스를 활용해 백엔드(Nest.js) 서버 띄워보기
    1. 요구사항
      • 디플로이먼트 : Pod 를 4개 띄운다
      • 서비스 : localhost:31000 에서도 통신할 수 있도록 한다.
    2. 프로젝트 실행시켜보기
      • npm 설치하기 : npm i
      • npm 실행하기 : npm run start
      • 접속하기
    3. 디플로이먼트, 서비스를 활용해 백엔드(Nest.js) 서버 띄우기
      1. Dockerfile 생성하기
        FROM node
        WORKDIR /app
        COPY . .
        RUN npm install
        RUN npm run build
        EXPOSE 3000
        
        ENTRYPOINT [ "node", "dist/main.js" ]
         
        • 이미지로 활용하기 위해 도커파일을 생성한다.
      2. .dockerignore 생성하기
        node_modules
         
        • Docker 빌드 시 포함하지 않을 파일 및 디렉터리를 지정하는 파일
      3. docker image 생성하기
      4. nest-Deployment .yaml 파일 생성하기
        apiVersion : apps/v1
        kind : Deployment
        
        metadata:
          name: nest-deployment
        
        spec:
          replicas : 4
          selector :
            matchLabels:
              app: backend-app
        
          # 배포할 pod의 정보를 작성한다.
          template:
            metadata:
              labels:
                app: backend-app
            # pod 의 스펙을 정의한다.
            spec:
              containers:
              - name : nest-container
                image: nest-server:1.0
                imagePullPolicy: IfNotPresent
                ports:
                  - containerPort: 3000
         
      5. nest-service.yaml 파일 생성하기 
      6.  
      7. apiVersion: v1 kind: service metadata: name: nest-service spec: # 외부에서 접속을 할수 있도록 만들어주는 타입 type : Nodeport selector : app: backend-app ports: # 외부에서 사용자가 접근하게 되는 포트번호와 프로토콜을 의미한다. - protocol: TCP Nodeport: 31000 # 쿠버네티스 내부에서 외부로 접속하기 위한 포트 번호. port : 3000 targetPort: 3000
      8. deployment & service 생성하기
        • deployment 생성하기
        • service 생성하기
          • localhost 31000 포트로 외부 사용자가 접근 시, pod 의 3000 번 포트와 연결한다.
  3. 업데이트 진행하기
    1. src/app.service.ts 내용 수정하기
      • return hello world'; → return 'Rusharp\'s server';
    2. nest-deployment.yaml 파일 수정하기
      • spec/template/spec/containers/image 를 `nest-server:1.1` 로 변경
    3. docker image build (1.1 버전으로)
    4. deployement 파일을 어플라이로 실행시키기
    5. localhost:31000 으로 접속하기