6. SDF Container 연동
Composite Container Application 적용 가이드(샘플)
동일한 POD에 두 개의 컨테이너 실행 가이드
- 멀티 컨테이너 패턴 참고 자료 : https://seongjin.me/kubernetes-multi-container-pod-design-patterns/
- SDF Container가 사용하는 ConfigMap을 해당 업무시스템 namespace에 추가
apiVersion: v1
kind: ConfigMap
metadata:
name: cloud-cdf-config
namespace: dev
data:
## 필수 설정
# [SDF Container 전용] SKMS URL
SKMS_API_URL: "http://cloud-skms-service.dev.svc.cluster.local"
# [SDF Container 전용] 서비스 포트
CONTAINER_LINKER_SERVER_PORT: "8181"
# [SDF Container 전용] 로그 레벨 선택 설정(기본 값 info)
# LOG_LEVEL: debug
# [SDF Container 전용] 통합 로그 전송 선택 설정(기본 값 true)
# LOG_SEND_USE: false
# FILE_CONVERT_DELAY: 100
# =================================================================
## 톰캣 접속 설정
# [컨테이너링커 전용] 생성할 수 있는 thread의 총 개수 선택 설정(기본 값 0 → maxThreads : 200)
# TOMCAT_MAX_THREAD: "0"
# [컨테이너링커 전용] 작업큐의 사이즈 선택 설정(기본 값 0 → acceptCount : 100)
# TOMCAT_ACCEPT_COUNT: "0"
# [컨테이너링커 전용] 연결 가능한 connection의 총 개수 선택 설정(기본 값 0 → maxConnections : 8192)
# TOMCAT_MAX_CONNECTIONS: "0"
# =================================================================
## 암복호화 요청 시 RPC(Request/Reply) 패턴 적용 설정 - 큐 생성 실패 시 기존과 같이 SKMS API 호출
# RPC(Request/Reply) 패턴 사용 여부(디폴트 : false)
# CUSTOM_RABBITMQ_USE: true
# RabbitMQ 클러스터의 모든 서버 URL 리스트(콤마로 구분) - ADDRESSES 값이 있을 경우 HOST,PORT는 무시됨
# CUSTOM_RABBITMQ_CLUSTER_ADDRESSES: "security365-rabbitmq-0.dev.svc.cluster.local:5672,security365-rabbitmq-1.dev.svc.cluster.local:5672,security365-rabbitmq-2.dev.svc.cluster.local:5672"
# CUSTOM_RABBITMQ_HOST: "security365-rabbitmq.dev.svc.cluster.local"
# CUSTOM_RABBITMQ_PORT: "5672"
# CUSTOM_RABBITMQ_USERNAME: "security365"
# CUSTOM_RABBITMQ_PASSWORD: "security365"
# =================================================================
- yaml 실행 전 업무시템과 동일한 namespace로 수정
- SKMS_API_URL은 SDF Container가 설치되는 POD에서 통신이 가능해야함
- Deployment yaml 파일에 사이드카 컨테이너(Security365 SDF Container) 서비스 추가
## 서비스 이름
- name: cloud-containerlinker-service
## 도커 이미지 정보
image: security365acr.azurecr.io/shieldrm/cloud-containerlinker:latest
imagePullPolicy: Always
## 컨테이너 서비스 포트
ports:
- containerPort: 8181
## ConfigMap 정보
envFrom:
- configMapRef:
name: cloud-cdf-config
## 공유 디렉토리 정보
volumeMounts:
- name: data-cloud-drm-shared
mountPath: /rmswork
## SDF Container 서비스 메모리 설정
resources:
requests:
memory: 256Mi
limits:
memory: 512Mi
- 고객사 업무시스템과 동일한 POD에서 실행되므로 호출 URL은 항상 "http://127.0.0.1:8181" 사용
- 업무시스템과 파일 공유가 가능한 공유 디렉토리(PVC) 마운트 필요
- Deployment yaml 샘플
apiVersion: apps/v1
kind: Deployment
metadata:
name: cloud-ssevtr-service
namespace: dev
labels:
app: cloud-ssevtr-service-label
# namespace: cloud-ss-svc
spec:
replicas: 1
selector:
matchLabels:
app: cloud-ssevtr-service-label
template:
metadata:
labels:
app: cloud-ssevtr-service-label
spec:
containers:
- name: cloud-ssevtr-service
image: scr.softcamp.co.kr/saas/cloud-ss-evtr-svc:latest
imagePullPolicy: Always
ports:
- containerPort: 8080
envFrom:
- configMapRef:
name: cloud-ssevtr-config
volumeMounts:
- name: data-cloud-drm-shared
mountPath: /rmswork
resources:
requests:
memory: 2Gi
limits:
memory: 2Gi
##==========================[SDF Container 전용 START]==========================##
- name: cloud-containerlinker-service
image: security365acr.azurecr.io/shieldrm/cloud-containerlinker:latest
imagePullPolicy: Always
ports:
- containerPort: 8181
envFrom:
- configMapRef:
name: cloud-cdf-config
volumeMounts:
- name: data-cloud-drm-shared
mountPath: /rmswork
resources:
requests:
memory: 256Mi
limits:
memory: 512Mi
##==========================[SDF Container 전용 END]==========================##
volumes:
- name: data-cloud-drm-shared
persistentVolumeClaim:
claimName: data-cloud-drm-shared
imagePullSecrets:
- name: security365acr
SDF Container 접속 및 로그 확인 명령
- SDF Container pod 접속 : kubectl -n dev exec --stdin --tty cloud-ssevtr-service-754b65cfb-bjzzr -c cloud-containerlinker-service sh
- SDF Container pod 로그 : kubectl logs -f --tail 10000 -n dev cloud-ssevtr-service-754b65cfb-bjzzr -c cloud-containerlinker-service
SDF Container의 동작 상태 점검 API 호출
설명
- 업무시스템 POD(메인 컨테이너)에 사이트카 컨테이너로 Deploy가 완료된 후 메인 컨테이너에 접속하여 API 호출
- 메인 컨테이너에 접속하여 CURL 명령어로 SDF Container의 API 호출
- API 호출 시 SHIELDRM 관리자 페이지의 연동 앱 관리 메뉴에서 발급 받은 라이선스 필요
- API 사용 가능 이미지 정보 : security365acr.azurecr.io/shieldrm/cloud-containerlinker:20250213.1 이후 버전에서 동작
CURL 명령어 실행(라이선스 입력)
curl http://127.0.0.1:8181/api/healthCheck/{licenseKey}
실행 결과
- 성공
{
"code": 0,
"healthCheck": {
"result": "success",
"SKMS_API_URL": "http://127.0.0.1:8080"
},
"licenseCheck": {
"result": "success",
"companyId": "3CJ55MSE-xLO7Sxt4-qUBKzbcs-XP2cgGEq",
"systemDomain": "test.com"
},
"keyCheck": {
"result": "success",
"customHeaderKey": "AVdos*******************",
"dsHeaderKey": "UngyY*******************",
"dsKeyEncryptionKey": "CwI3F*******************",
"masterKey": "UldoZ*******************"
},
"azureInfoCheck": {
"result": "success",
"appId": "7e82e*******************************",
"appSecret": "LBd8Q***********************************",
"azureTenantId": "4d615*******************************"
},
"azureInfoValidCheck": {
"result": "success"
}
}