1. docker 이미지에 포함시킬 node 앱 작성
1
2
3
4
5
6
7
8
9
10
11
12
13
|
const os = require('os');
const http = require('http');
const handleRequest = function(request, response) {
response.writeHead(200);
response.end('Hello World! I\'m '+os.hostname());
// log
console.log('['+
Date(Date.now()).toLocaleString()+
'\'] '+os.hostname());
};
const www = http.createServer(handleRequest);
www.listen(8080);
|
cs |
2. docker 파일 작성
1
2
3
4
|
FROM node:carbon
EXPOSE 8080
COPY server.js .
CMD node server.js > log.out
|
cs |
3. docker 이미지 빌드
docker build -t asia.gcr.io/asj-kube/hello-node:v1 .
* 이미지 명명 규칙 참고 > gcr위치/프로젝트ID/앱네임:태그
![](https://k.kakaocdn.net/dn/3sm13/btqwKcIk4n7/QmLmXmjTGKhnshio9mXpt1/img.png)
이미지 가져오기 및 내보내기 | Container Registry | Google Cloud
이 페이지는 Container Registry로 수행하는 가장 일반적인 작업인 이미지를 내보내고 가져오는 방법을 설명합니다. 새 이미지를 Container Registry로 내보내려면 먼저 아래 설명처럼 레지스트리 이름으로 태그를 지정해야 합니다. Container Registry를 빠르게 시작하고 실행하는 방법은 빠른 시작을 참조하세요. 이미지 나열, 태그 지정 및 삭제에 대한 안내는 이미지 관리를 참조하세요. 시작하기 전에 다음 사항을 확인하세요. g
cloud.google.com
4. 도커 컨테이너 실행 테스트
4.1 생성된 도커 이미지 확인
$docker images
![](https://k.kakaocdn.net/dn/bso0Yc/btqwHq87KoE/DspO366Aj3htDRLMhLKwr1/img.png)
4.2 도커 컨테이너 실행
$docker run -d -p 8080:8080 asia.gcr.io/asj-kube/hello-node:v1
4.3 컨테이너 실행 확인
$docker ps
$curl http://localhost:8080
4.4 컨테이너 shell 접속
$docker exec -it [container id]
5. 도커 이미지 GCR(Google Container Registry) 올리기
5.1 GCR 인증
$ gcloud auth configure-docker
5.2 GCR에 도커 이미지 올리기
$ docker push [image name]
6. 쿠버네티스 클러스터 생성
클라우드 코드에서 인증하기
6.1 vscode에서 쿠버네티스 클러스터 생성하기
6.2 클러스터 생성 확인
$gcloud container clusters list
7. ReplicationController 만들기
*** cloud code에서 인증을 하지 않은 경우 이거나 Shell에서 사용할 경우 다음 명령으로 사전 인증 필요 ***
$gcloud container clusters get-credentials iverson-gke-12
****************************************************************************************************************
$kubectl create -f hello-node-rc.yaml
$kubectl get all
$kubectl describe pod hello-node-rc-c45t9
$kubectl exec -it hello-node-rc-c45t9 -- curl 10.20.1.6:8080
8. Service 만들기
1
2
3
4
5
6
7
8
9
10
11
12
|
apiVersion: v1
kind: Service
metadata:
name: hello-node-svc
spec:
selector:
app: hello-node #pod들 중에 라벨의 키가 app이고 값이 hello-node인 pod 들만 서비스에 연결하도록 지정하
ports:
- port: 80 #서비스 포트
protocol: TCP
targetPort: 8080 #pod의 서비스 포트
type: LoadBalancer
|
cs |
$kubectl create -f hello-node-svc.yaml
'Development' 카테고리의 다른 글
[GCP] HTTP(S) 로드밸런서 http 에서 https로 리다이렉트 하기 (0) | 2019.11.01 |
---|---|
[GCP]Internal Load Balancer(=AWS NLB) 구축 및 활용 (0) | 2019.10.15 |
nfs + 파일시스템 마운트하기 (0) | 2019.10.08 |
ubuntu16.04 + apache2 + mod_wsgi + python3-flask + gcp sdk (0) | 2019.10.02 |
쿠버네티스 용어 정의 (0) | 2019.07.15 |