[k8s] node.js 애플리케이션 쿠버네티스(kubernetes) 클러스터에 디플로이먼트(deployment)로 배포하기
[k8s] node.js 애플리케이션 쿠버네티스(kubernetes) 클러스터에 디플로이먼트(deployment)로 배포하기1. node.js 의 express 모듈을 활용하여 웹서버 app. 만들기 2. node.js 애플리케이션용 도커(Docker) 이미지 생성 3. node.js 애플리케이션용 디플로이먼트 및 서비스 오브젝트 생성 후 쿠버네티스 클러스터에 배포하기
1. node.js 의 express 모듈을 활용하여 웹서버 app. 만들기
express 모듈 설치
xxxxxxxxxxnpm install --save express"Hello World"를 응답하는
index.js파일 만들기xxxxxxxxxxvar express = require('express');var app = express();app.get('/', function (req, res) {res.send('Hello World!');});app.listen(3000, function () {console.log('Example app listening on port 3000!');});web 서버 테스트
xxxxxxxxxx# node index.js# curl localhost:3000Hello World!
2. node.js 애플리케이션용 도커(Docker) 이미지 생성
참고 URL : https://nodejs.org/ko/docs/guides/nodejs-docker-webapp/
node.js 애플리케이션용 Dockerfile 생성
xxxxxxxxxxFROM node:6.9.2RUN mkdir /appWORKDIR /appCOPY index.js .COPY package.json .RUN npm install --saveEXPOSE 3000CMD [ "node", "index.js" ]도커 이미지 빌드
xxxxxxxxxxdocker build -t november11/node-web-app .도커 이미지 조회
xxxxxxxxxxdocker image list | grep november11/node-web-appnovember11/node-web-app latest 69bee2f636dd 11 months ago 674MB도커로 이미지 실행한 후 node.js 애플리케이션 테스트
xxxxxxxxxx$ docker run -p 3000:3000 -d november11/node-web-app$ docker ps -a | grep novembere9d66a183eb5 november11/node-web-app "node index.js" About a minute ago Up 57 seconds 0.0.0.0:3000->3000/tcp$ curl localhost:3000Hello World!
3. node.js 애플리케이션용 디플로이먼트 및 서비스 오브젝트 생성 후 쿠버네티스 클러스터에 배포하기
디플로이먼트 YAML
deployments.yamlxxxxxxxxxxapiVersion: apps/v1kind: Deploymentmetadata:name: node-web-applabels:app: node-web-appspec:selector:matchLabels:app: node-web-appreplicas: 3template:metadata:labels:app: node-web-appspec:containers:- name: node-web-appimage: november11/node-web-appimagePullPolicy: Neverports:- containerPort: 3000서비스 YAML 생성
services.yamlx
apiVersion: v1kind: Servicemetadata:name: node-web-appspec:selector:app: node-web-appports:- protocol: "TCP"port: 3000targetPort: 3000type: LoadBalancer디플로이먼트 및 서비스 적용으로 클러스터에 배포
xxxxxxxxxx$ kubectl apply -f deployments.yaml$ kubectl apply -f services.yaml파드 및 서비스 상태 확인
xxxxxxxxxx$ kubectl get pod | grep nodenode-web-app-7fc465b977-6xtst 1/1 Running 0 34mnode-web-app-7fc465b977-ddq94 1/1 Running 0 34mnode-web-app-7fc465b977-v28nx 1/1 Running 0 34m$ kubectl get services | grep nodenode-web-app LoadBalancer 10.104.160.213 localhost 3000:31793/TCP 125m
'k8s' 카테고리의 다른 글
| [k8s] kubespray로 쿠버네티스 설치 후 calico-node 에서 CrashLoopBackOff 에러가 날 경우 (0) | 2019.09.06 |
|---|---|
| [k8s] kubespray 를 사용한 bare-metal 서버에 쿠버네티스 설치하기 (0) | 2019.09.06 |
| [K8S] Azure AKS 클러스터에서 helm 차트 사용하기 (0) | 2019.08.26 |
| [K8S] Azure CLI 로 AKS 클러스터 구성 및 로컬 환경에서 kubectl 로 AKS 클러스터 연결하기 (0) | 2019.08.23 |
| [k8s] 공개용 Docker Image를 다운로드하여 사설 Registry 로 옮기기 (0) | 2019.07.19 |