참고로, 지난 포스트에서 기존 노드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실행파일을 만든다(아래)
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 컨테이너배포 전 비공개용 암호를 생성한다(아래)
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) 확인한다(아래)
- 단, 위 이벤트 메세지에 아래와 같은 메세지가 나오면, 무료로 사용할 수 있는 자원 허용량을 초과한 경우로 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앱이 실행중 임을 확인 할 수 있습니다. 최종적 으로 아래 화면이 제대로 나오됩니다.
Ps.
- 단, 위 K-PaaS 컨테이너 플랫폼에서 할당받은 도메인은 http 비보안 접속만 작동하기 때문에, 구글 사용자 인증에 사용되는 도메인은 https 보안 접속에서는 사용할 수 없다. 그래서, 구글 로그인 인증API 사용이 불가합니다.(아래)
- K-PaaS 어플리케이션 플랫폼(컨테이너 플랫폼이 아닌)에서는 https 접속이 지원되기 때문에 로그인이 가능(아래)
- K-PaaS cp(컨테이너 플랫폼) 사용 공식문서 참고(아래)
노드js서버와 리액트js앱을 동시에 한 도커 컨테이너로 묶어서 작업_1/2 (0) | 2024.02.08 |
---|---|
K-PaaS컨테이너 플랫폼용 노드js앱을 수정 후 재 배포하기 (1) | 2024.01.13 |
자바스크립트 DOM프로그래밍+외부API프로그래밍 수업자료 정리 (0) | 2024.01.09 |
노드js앱을 컨테이너 배포 플랫폼인 쿠버네티스에 배포하고 실행하기 (1) | 2024.01.02 |
노드js앱을 컨테이너기반 도커용 앱으로 실행하기 (1) | 2024.01.02 |
댓글 영역