Post

데브코스 TIL - 로컬 클러스터에 시험 배포

로컬 클러스터에 시험 배포

강의에 생략된 부분이 많아서 내가 찾아가면서 진행한 내용을 정리해보았다.

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을 사용하여 간단하게 실행시켰지만, 나는 윈도우 환경을 사용하고 있기 때문에
정석 명령어를 여러번 입력하여 실행하였다. 하지만 프론트엔드 클러스트가 계속 이미지를 로드 받아오지 못하는 오류가 발생하였다…

front 실패

도커 허브에 이미지가 제대로 푸시되지 않아 발생하는 오류였고, 모든 클러스터를 삭제하고 이미지를 만들고 푸시하는 것부터 다시 진행했더니 모두 로컬 클러스터에 실행되었다.

백엔드프론트모두성공

This post is licensed under CC BY 4.0 by the author.