로컬 클러스터에 시험 배포
강의에 생략된 부분이 많아서 내가 찾아가면서 진행한 내용을 정리해보았다.
1. configmaps 파일 만들기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
| apiVersion: v1
kind: ConfigMap
metadata:
name: notes-be-config
namespace: prgms-notes
data:
DB_HOST: notes-db.db
DB_USER: prgms
DATABASE_PASSWORD: prgms
DATABASE: prgms_notes
CORS_ALLOWED_ORIGIN: http://localhost:30030
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: notes-be
namespace: prgms-notes
spec:
replicas: 1
selector:
matchLabels:
run: notes-be
template:
metadata:
labels:
run: notes-be
spec:
containers:
- name: notes-backend
image: sheayun/notes-be:latest
imagePullPolicy: Always
envFrom:
- configMapRef:
name: notes-be-config
---
apiVersion: v1
kind: Service
metadata:
name: notes-be
labels:
run: notes-be
namespace: prgms-notes
spec:
type: NodePort
selector:
run: notes-be
ports:
- port: 3031
targetPort: 3031
nodePort: 30031
|
2. namespace 만들기
1
| kubectl create namespace prgms-notes
|
3. config 파일 실행하기
1
2
3
4
5
| kubectl apply -f notes-be.yaml
configmap/notes-be-config unchanged
deployment.apps/notes-be unchanged
service/notes-be created
|
4. config 파일 확인하기
1
2
3
4
5
| kubectl -n prgms-notes get configmaps
NAME DATA AGE
kube-root-ca.crt 1 38h
notes-be-config 5 38h
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| kubectl -n prgms-notes describe configmap notes-be-config
Name: notes-be-config
Namespace: prgms-notes
Labels: <none>
Annotations: <none>
Data
====
CORS_ALLOWED_ORIGIN:
----
http://localhost:30030
DATABASE:
----
prgms_notes
DATABASE_PASSWORD:
----
prgms
DB_HOST:
----
notes-db.db
DB_USER:
----
prgms
BinaryData
====
Events: <none>
|
5. 백엔드, 프론트엔드 쿠버네티스 manifest 작성하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
| apiVersion: v1
kind: ConfigMap
metadata:
name: notes-be-config
namespace: prgms-notes
data:
DB_HOST: notes-db.db
DB_USER: prgms
DATABASE_PASSWORD: prgms
DATABASE: prgms_notes
CORS_ALLOWED_ORIGIN: http://localhost:30030
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: notes-be
namespace: prgms-notes
spec:
replicas: 1
selector:
matchLabels:
run: notes-be
template:
metadata:
labels:
run: notes-be
spec:
containers:
- name: notes-backend
image: hyeem66/notes-be:latest
imagePullPolicy: Always
envFrom:
- configMapRef:
name: notes-be-config
---
apiVersion: v1
kind: Service
metadata:
name: notes-be
labels:
run: notes-be
namespace: prgms-notes
spec:
type: NodePort
selector:
run: notes-be
ports:
- port: 3031
targetPort: 3031
nodePort: 30031
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
| apiVersion: apps/v1
kind: Deployment
metadata:
name: notes-fe
namespace: prgms-notes
spec:
replicas: 1
selector:
matchLabels:
run: notes-fe
template:
metadata:
labels:
run: notes-fe
spec:
containers:
- name: notes-frontend
image: hyeem66/notes-fe:latest
imagePullPolicy: Always
ports:
- containerPort: 3000
env:
- name: REACT_APP_API_BASE_URL
value: http://localhost:30031
---
apiVersion: v1
kind: Service
metadata:
name: notes-fe
labels:
run: notes-fe
namespace: prgms-notes
spec:
type: NodePort
selector:
run: notes-fe
ports:
- port: 3000
nodePort: 30030
|
6. 백엔드&프론트엔드 컨테이너 이미지 만들고, 도커 허브에 푸시한 다음 로컬 클러스트에 실행시키기
강의에서는 makefile을 사용하여 간단하게 실행시켰지만, 나는 윈도우 환경을 사용하고 있기 때문에
정석 명령어를 여러번 입력하여 실행하였다. 하지만 프론트엔드 클러스트가 계속 이미지를 로드 받아오지 못하는 오류가 발생하였다…
도커 허브에 이미지가 제대로 푸시되지 않아 발생하는 오류였고, 모든 클러스터를 삭제하고 이미지를 만들고 푸시하는 것부터 다시 진행했더니 모두 로컬 클러스터에 실행되었다.