상세 컨텐츠

본문 제목

K-PaaS컨테이너 플랫폼 사용하기

노드js·자바스크립트

by 김일국 2024. 1. 10. 18:39

본문

참고로, 지난 포스트에서 기존 노드js앱은 K-PaaS 사이드카 라는 애플리케이션 플랫폼(k8s대신 Cloud Foundry 사용)에 배포한 경우 입니다.

- K-PaaS 애플리케이션 플랫폼(사이트카+앱소스zip파일)지원 : 이용신청= https://digitalsolveup.kr/platform.do ,아래 화면에서 배포사양과 앱을 zip으로 압축해서 올리면 바로 실행 됩니다.(아래)

- 위 앱 실행화면= https://nodejsboard.apps.emergency-cloudplatform.kr/  

 

### 오늘은 K-PaaS 컨테이너 플랫폼(쿠버네티스+ 앱소스도커이미지 )를 2주이용신청을 해서 작업해 보았습니다.(아래)

-체험신청하기: https://k-paas.or.kr/exp/expApply ,  플레이파크 화면: http://playpark.k-paas.org/

0. 서비스를 신청하면 K-PaaS cp-portal-service(컨테이너 플랫폼 포털 서비스)가 기본 생성되어 있습니다.(아래)

- 이 후 작업순서를 간단하게 정리해 보았습니다.(아래)

1. 기존도커데스크탑의쿠버네티스설정 : 지난 시간에 사용한 도커데스크탑용 쿠버네티스 config 설정을 확인해 봅니다.

    K-PaaS cp-portal-service(컨테이너 플랫폼 포털 서비스)에서도 쿠버네티스를 사용합니다. 그래서 PC용 도커데스크탑용 쿠버네티스와 비교해 봅니다.(아래 kubectl config view 명령실행)

2. K-PaaS 컨테이너설정의 Access 메뉴를 참조하여 윈도우에서 쿠버네티스용 config bat실행파일을 만든다(아래)

위 bat 실행파일로 K-PaaS용 쿠버네티스 config 설정을 추가한다.(아래 실행파일 소스)

set CP_SERVICE_CLUSTER_NAME=host-cluster
set CP_SERVICE_CLUSTER_SERVER=https://115.68.198.240:6443
set CP_SERVICE_USER_NAME=kimilguk
set CP_SERVICE_CONTEXT_NAME=kimilguk-context
set CP_SERVICE_NAMESPACE_NAME=kimilguk
set CP_SERVICE_CREDENTIALS_TOKEN=보안토큰값
kubectl config set-cluster %CP_SERVICE_CLUSTER_NAME% --server=%CP_SERVICE_CLUSTER_SERVER% --insecure-skip-tls-verify
kubectl config set-credentials %CP_SERVICE_USER_NAME% --token=%CP_SERVICE_CREDENTIALS_TOKEN%
kubectl config set-context %CP_SERVICE_CONTEXT_NAME% --user=%CP_SERVICE_USER_NAME% --cluster=%CP_SERVICE_CLUSTER_NAME% --namespace=%CP_SERVICE_NAMESPACE_NAME%
kubectl config use-context %CP_SERVICE_CONTEXT_NAME%

3. 위 K-PaaS컨테이너용 쿠버네티스설정 후 결과확인: kubectl config view 명령실행(아래 기존 docker-desktop 에 추가된 코드를 확인 할 수 있다. 실제 config파일 위치는 C:\Users\USER\.kube 에서 확인가능합니다.^^)

4. K-PaaS컨테이너용 로컬PC이미지(기존노드js앱)을 컨테이너에 배포할 때 ImageNeverPull 에러발생(아래)

5. 위 로컬이미지를 바로 K-PaaS컨테이너에 올릴 수 없어서, 도커허브 사이트에 비공개 저장소를 만들고, 태그이름을 변경 후 도커이미지를푸시한다.보안 때문에 본인만 배포 가능하도록 K-PaaS 컨테이너배포 전 비공개용 암호를 생성한다(아래)

docker tag nodejsboard kimilguk/nodejsboard 도커태그 명령으로 이미지이름을 변경하는 명령어 후 도커허브에 push 합니다.(위):

6. 위 secret 코드를 생성 후 K-PaaS 로 배포한다. kubectl apply -f deployments.yaml 명령 전 기존 도커데스크탑에서 사용한 deployments.yaml 을 아래와 같이 수정 한다. image, imagePullPolicy, imagePullSecrets 부분과 service를 확인한다.(아래- 기존 도커데스크탑의 쿠버네티스에 사용된 yaml은 https://kimilguk.tistory.com/856 의 2번에 있습니다.)

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nodejsboard
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nodejsboard
  template:
    metadata:
      labels:
        app: nodejsboard
    spec:
      containers:
        - name: nodejsboard
          image: kimilguk/nodejsboard
          imagePullPolicy: Always
          ports:
            - name: nodejsboard
              hostPort: 80
              containerPort: 3000
              protocol: TCP
      imagePullSecrets:
        - name: regcred
---
apiVersion: v1
kind: Service
metadata: #https://whchoi98.gitbook.io/k8s/eks-1/nodeport
  name: nodejsboard
spec:
  type: NodePort
  ports:
    - name: nodejsboard
      port: 3000
      nodePort: 30080
      targetPort: 80
      protocol: TCP
  selector:
    app: nodejsboard

- 단, K-PaaS cp(컨테이너 플랫폼)은 service의 타입을 LoadBalancer타입으로 지정하여 생성하면, Assinged IP(External-IP)에 접근할 수 없게 되어 있어서 기존 service 타입을 NodePort 타입으로 변경nodePort: 30000-32767 시이로 설정해야 http://playpark-cp.k-paas.org:30080/ 처럼 포트 기반으로 웹에 접근 할 수 있습니다.

7. 위 처럼 수정 후 배포한 결과 : cp-portal-service 대시보드 화면에서 pod와 서비스까지 러닝중(running) 확인한다(아래)

위 할당된 Assigned IP(External IP) 외부 IP는 K-PaaS에서는 작동하지 않기 때문에 최종 실행 결과에는 제거된다.(위)

- 단, 위 이벤트 메세지에 아래와 같은 메세지가 나오면, 무료로 사용할 수 있는 자원 허용량을 초과한 경우로 Deployments 는 되더라도 Pods 컨테이너가 생성되지 않는다.  보통 컨테이너 2개 까지는 작동됩니다.

(아래 Message 내용)------------------------------------------------------------------------------------------------------

...limits.memory=1500Mi, used: limits.memory=3000Mi, limited: limits.memory=4Gi...
[해석] : 현재 메노리 자원 제한용량은 1.5기가, 사용중은 3기가이고, 4기가제한...

-----------------------------------------------------------------------------------------------------------------------------------

8. 위 log 화면에서 kubectl logs pod/nodejs...(컨테이너Name)으로 start 버킷이름(파이어베이스) 처럼 노드js앱이 실행중 임을 확인 할 수 있습니다. 최종적 으로 아래 화면이 제대로 나오됩니다.

http://playpark-cp.k-paas.org:30080/board/boardList (위)

Ps.

- 단, 위 K-PaaS 컨테이너 플랫폼에서 할당받은 도메인http 비보안 접속만 작동하기 때문에, 구글 사용자 인증에 사용되는 도메인은 https 보안 접속에서는 사용할 수 없다. 그래서, 구글 로그인 인증API 사용이 불가합니다.(아래)

- K-PaaS 어플리케이션 플랫폼(컨테이너 플랫폼이 아닌)에서는 https 접속이 지원되기 때문에 로그인이 가능(아래)

https://nodejsboard.apps.emergency-cloudplatform.kr/board/boardList (위)

- K-PaaS cp(컨테이너 플랫폼) 사용 공식문서 참고(아래)

https://github.com/K-PaaS/container-platform/blob/master/use-guide/portal/container-platform-portal-guide.md

관련글 더보기

댓글 영역