4) SKMS 서비스 Deploy
SKMS 서비스 생성
SKMS 서비스 Deploy 파일
- cloud-skms-service.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: cloud-skms-config
namespace: dev
data:
## 필수 설정
# 인증/인가 서비스에 등록된 Master-tenant ID
CUSTOM_AUTH_SERVICE_EXTRA: "uFhoVIZI-wni6zwDS-E6xGXPqT-m2ms8GWh"
# 인증/인가 서비스 master-tenant에 등록된 앱(서비스) ID
CUSTOM_APP_TENANT_ID: "1ba26d0f-c519-4a76-95bc-90736a2ece55"
# 인증/인가 서비스 master-tenant에 등록된 앱(서비스) secret
CUSTOM_APP_TENANT_SECRET: "Ky0jLCUpKSEmJCsiLSgiJCEkJCYsIyYmKiYlLSMjISg"
# AZURE 공통 앱 ID|SECRET(파이프 구분자)
AZURE_INFO: "7e82e70d-4386-419d-9dfd-6c8d6e6068fc|LBd8Q~.aDAmOjOhZSbcgu.sakTgSPrb_zNPxrbuM"
# 프론트(화면) 서버 URL
CUSTOM_APP_FRONT_REDIRECT: "https://devskmsfe.softcamp.co.kr"
# 백엔드(API) 서버 URL
CUSTOM_APP_BACK_REDIRECT: "https://devskms.softcamp.co.kr"
# 서비스가 설치된 클러스터의 네임스페이스 이름 설정
CUSTOM_NAMESPACE: dev
## 현재 사용하지 않는 기능(변경 하지 않음)
# RABBITMQ 설정
CUSTOM_RABBITMQ_USE: "false"
CUSTOM_RABBITMQ_HOST: "10.30.10.208"
CUSTOM_RABBITMQ_PORT: "5672"
CUSTOM_RABBITMQ_USERNAME: "sd"
CUSTOM_RABBITMQ_PASSWORD: "softcamp1!"
# ZIPKIN 설정
CUSTOM_ZIPKIN_USE: "false"
CUSTOM_ZIPKIN_BASE_URL: "http://127.0.0.1:9411"
CUSTOM_APPLICATION_NAME: "SKMS"
CUSTOM_SLEUTH_SAMPLER_PROBABILITY: "0.1"
## 선택 설정(인증인가 및 통합로그 서비스가 다른 클러스터로 구성된 경우)
# EDGE 서버 사용 시 인증인가 URL 정보
# CUSTOM_AUTH_SERVICE_URL: https://devlogin.softcamp.co.kr/
# EDGE 서버 사용 시 통합로그 URL 정보
# CUSTOM_LOG_SERVICE_URL: https://devlog.softcamp.co.kr/
# LOG_LEVEL: debug (기본 설정: info)
# 프로메테우스 앤드포인트 노출 포트 (기본 설정: 9090)
# METRICS_PORT: 9090
# Metric 사용 여부 (기본 설정: true)
# METRICS_ENABLED: true
# Metric 경로에 대한 인증 활성화 (기본 설정: false)
# SECURITY_ACTUATOR_ENABLED: false
---
apiVersion: v1
kind: ConfigMap
metadata:
name: cloud-cdf-config
namespace: dev
data:
##[컨테이너링커 전용] SKMS URL 필수 설정
SKMS_API_URL: "http://cloud-skms-service.dev.svc.cluster.local"
##[컨테이너링커 전용] 서비스 포트
CONTAINER_LINKER_SERVER_PORT: "8181"
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: cloud-skms-service
namespace: dev
labels:
app: cloud-skms-service
spec:
replicas: 1
selector:
matchLabels:
app: cloud-skms-service
template:
metadata:
labels:
app: cloud-skms-service
spec:
containers:
- name: cloud-skms-service
image: security365acr.azurecr.io/shieldrm/cloud-skms:latest
imagePullPolicy: Always
resources:
requests:
memory: 2Gi
limits:
memory: 2Gi
ports:
- containerPort: 8080
envFrom:
- configMapRef:
name: cloud-skms-config
volumeMounts:
- name: cloud-ekms-data
mountPath: /opt/shieldrm/data
##==========================[컨테이너링커 전용 START]==========================##
- name: cloud-containerlinker-service
image: security365acr.azurecr.io/shieldrm/cloud-containerlinker:latest
imagePullPolicy: Always
resources:
requests:
memory: 256Mi
limits:
memory: 512Mi
ports:
- containerPort: 8181
envFrom:
- configMapRef:
name: cloud-cdf-config
volumeMounts:
- name: cloud-ekms-data
mountPath: /opt/shieldrm/data
##==========================[컨테이너링커 전용 END]==========================##
volumes:
- name: cloud-ekms-data
persistentVolumeClaim:
claimName: cloud-ekms-data
imagePullSecrets:
- name: security365acr
---
apiVersion: v1
kind: Service
metadata:
labels:
app: cloud-skms-service
name: cloud-skms-service
namespace: dev
spec:
type: ClusterIP
ports:
- name : skms
port : 80
protocol: TCP
targetPort: 8080
- name : metric
port : 9090
protocol: TCP
targetPort: 9090
selector:
app: cloud-skms-service
- 고객사 환경에 맞게 변경이 필요한 항목 : namespace, ConfigMap, image 경로
실행 명령
- POD 생성 명령 : kubectl apply -f .\cloud-skms-service.yaml
- POD 삭제 명령 : kubectl delete -f .\cloud-skms-service.yaml
SKMS FRONT-END 서비스 생성
SKMSFE 서비스 Deploy 파일
- cloud-skmsfe-service.yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: cloud-skmsfe-config
namespace: dev
data:
# VUE_APP_CLIENT_NAME : 통합로그인 페이지 사용 시 사용할 서비스 이름(고정 값)
# VUE_APP_API_URL_SECURITY365 : 인증인가 서비스 URL
# VUE_APP_API_URL_SKMS : SKMS 백엔드 API 서버 URL
# VUE_APP_API_URL_SSEVTR : SSEVTR 백엔드 API 서버 URL
# VUE_APP_API_URL_EKMS : EKMS 백엔드 API 서버 URL
# VUE_APP_API_URL_SHIELDINFO : SHIELDInfo API 서버 URL
# VUE_APP_KEY_MANAGEMENT_MENU : 키 관리 : 컨테이너링커용 SCI 서버 키 연동 기능
# VUE_APP_LICENSE_SERVICE_MENU : 연동 앱 관리 : 컨테이너링커용 라이선스 발급(CypherDocsFlow 앱 등록 필요)
# VUE_APP_POLICY_MANAGEMENT_MENU : 정책 관리 : SHIELDRM 조건부 정책(ZTCAP) 설정
# VUE_APP_MIP_MANAGEMENT_MENU : MIP 정책 관리 : SHIELDRM OpenID 관련 정책 설정
# VUE_APP_LOG_MANAGEMENT_MENU : 로그 관리 : 통합 로그 서비스에서 조회(사용하지 않음)
# VUE_APP_SETTING_MENU : 환경 설정 : 퍼블리싱만 완료됨
# VUE_APP_ADDIN_MANAGEMENT_MENU : 애드인 정책 관리 : 애드인 설치 여부 및 설치/삭제 기능
# VUE_APP_POLICY_MAIL_MANAGEMENT_MENU : 정책 관리 : SHIELDRM MAIL 조건부 정책(ZTCAP) 설정(SHIELDMail 앱 등록 필요)
# VUE_APP_INFOLINEAGE_URL : 대시 보드 : 인포리니지 API URL
# VUE_APP_SECURITY365_URL : 관리 센터 이동 메뉴 : Security365 URL
config.js: |
var config = {
VUE_APP_CLIENT_NAME: "SKMS",
VUE_APP_API_URL_SECURITY365: "https://devlogin.softcamp.co.kr",
VUE_APP_API_URL_SKMS: "https://devskms.softcamp.co.kr",
VUE_APP_API_URL_SSEVTR: "https://ssevtr.softcamp.co.kr",
VUE_APP_API_URL_EKMS: "https://devekms.softcamp.co.kr/api",
VUE_APP_API_URL_SHIELDINFO: "https://dev-label.softcamp.co.kr",
VUE_APP_KEY_MANAGEMENT_MENU: true,
VUE_APP_LICENSE_SERVICE_MENU: true,
VUE_APP_POLICY_MANAGEMENT_MENU: true,
VUE_APP_MIP_MANAGEMENT_MENU: true,
VUE_APP_LOG_MANAGEMENT_MENU: false,
VUE_APP_SETTING_MENU: false,
VUE_APP_ADDIN_MANAGEMENT_MENU: false,
VUE_APP_POLICY_MAIL_MANAGEMENT_MENU: false,
VUE_APP_INFOLINEAGE_URL: "https://devinfolineage.softcamp.co.kr",
VUE_APP_SECURITY365_URL: "https://devportal.softcamp.co.kr"
};
---
apiVersion: v1
kind: ConfigMap
metadata:
name: cloud-skmsfe-nginx-conf
namespace: dev
data:
# proxy_pass : 인증인가 서비스 URL
default.conf: |
server {
listen 8080;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
add_header Cache-Control "max-age=0, no-cache, no-store, must-revalidate";
expires -1;
try_files $uri /index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location /idgp-resource {
proxy_pass https://devlogin.softcamp.co.kr;
}
}
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: cloud-skmsfe-service
namespace: dev
labels:
app: cloud-skmsfe-service
spec:
replicas: 1
selector:
matchLabels:
app: cloud-skmsfe-service
template:
metadata:
labels:
app: cloud-skmsfe-service
spec:
containers:
- name: cloud-skmsfe-service
image: security365acr.azurecr.io/shieldrm/cloud-skms-frontend:20230419.2.devTest
imagePullPolicy: Always
resources:
requests:
memory: 2Gi
limits:
memory: 2Gi
ports:
- containerPort: 8080
volumeMounts:
- name: cloud-skmsfe-config
mountPath: /usr/share/nginx/html/config.js
subPath: config.js
- name: cloud-skmsfe-nginx-conf
mountPath: /etc/nginx/conf.d/default.conf
subPath: default.conf
volumes:
- name: cloud-skmsfe-config
configMap:
name: cloud-skmsfe-config
- name: cloud-skmsfe-nginx-conf
configMap:
name: cloud-skmsfe-nginx-conf
defaultMode: 420
items:
- key: default.conf
path: default.conf
imagePullSecrets:
- name: security365acr
---
apiVersion: v1
kind: Service
metadata:
name: cloud-skmsfe-service
namespace: dev
spec:
type: ClusterIP
ports:
- port: 80
targetPort: 8080
selector:
app: cloud-skmsfe-service
- 고객사 환경에 맞게 변경이 필요한 항목 : namespace, ConfigMap, image 경로
실행 명령
- POD 생성 명령 : kubectl apply -f .\cloud-skmsfe-service.yaml
- POD 삭제 명령 : kubectl delete -f .\cloud-skmsfe-service.yaml