-
Notifications
You must be signed in to change notification settings - Fork 4
Home
pbcccbeatboard-strato edited this page Jul 4, 2024
·
4 revisions
This repository provides a Workflow Manager.
A sub-system of M-CMP platform to deploy and manage Multi-Cloud Infrastructures.
M-CMP의 mc-workflow-manager 서브시스템이 제공하는 기능은 다음과 같다.
- ToolChain 관리
- Workflow Stage 관리
- Workflow 관리
- Software Catalog 관리
M-CMP의 mc-workflow-manager 서브시스템의 Flow는 다음과 같다.
-
ToolChain 등록 (연동될 OSS 정보들응 등록)
- 연동되어 사용될 Jenkins, Gitlab, ArgoCD, Nexus, Tumblebug 등
- Workflow 용 OSS인 Jenkins는 Workflow 관련 기능을 위해 필수로 등록한다.
-
Workflow Stage 등록 (Workflow를 구성할 Stage 등록)
- 템플릿 개념의 Stage 등록 후 Workflow에서 사용 가능하다.
- 필수로 등록 하지 않아도 된다.
-
Workflow 생성
- 등록된 Stage등을 조합/직접 입력 하여 Workflow를 생성한다.
-
Workflow 실행
- UI 또는 API 를 활용하여 Workflow를 실행한다.
-
Software Catalog 등록
-
연관 Workflow 및 관련 Catalog 등록
- software catalog 연계 workflow 및 catalog 등록(optional)
- 해당software 설치 workflow 실행, 재시작 등 연관 workflow 등록
- 연관catalog 등록
- software catalog 연계 workflow 및 catalog 등록(optional)
-
Software Catalog 확인 및 타 Repository 검색
-
연관workflow 실행 등
- 연관workflow 실행, 또는 연관 catalog 정보 확인 등
- 해당software 설치 workflow 실행 등 등록된 연관 workflow 사용
- 검색된외부sw를catalog에 등록 등
- 연관workflow 실행, 또는 연관 catalog 정보 확인 등
API
Function | API | EndPoint | Parameter | DESC |
---|---|---|---|---|
ToolChain List (툴체인 목록) |
GET | /config/oss/list | 툴체인 목록을 조회한다. 연동사용OSS(nexus, jenkins 등)을 위한 정보를 입력 및 조회 db등의 정보이외에는직접등록후사용한다. |
|
ToolChain Duplication Check (툴체인 중복 체크) |
GET | /config/oss/duplicate | (QueryParam) ossName=tumblebug& ossUrl=http:%2F%2Ftb.tb-cb.kro.kr:1323& ossUsername=default |
등록될 툴체인 명 중복 검사를한다. |
ToolChain Connection Check (툴체인 커넥션 체크) |
POST | /config/oss/connection/check | (Request Body) { "ossCd":"TUMBLEBUG", "ossName":"tumblebug", "ossDesc":"", "ossUrl":"http://tb.tb-cb.kro.kr:1323", "ossUsername":"default", "ossPassword":"default", "ossToken":"“ } |
등록될 툴체인의ID / PW로 연결확인을한다. |
ToolChain Regist (툴체인 등록) |
POST | /config/oss | (Request Body) { "ossCd":"TUMBLEBUG", "ossName":"tumblebug", "ossDesc":"", "ossUrl":"http://tb.tb-cb.kro.kr:1323", "ossUsername":"default", "ossPassword":"ZGVmYXVsdA==", "ossToken":"" } |
툴체인을 등록한다. |
API
Function | API | EndPoint | Parameter | DESC |
---|---|---|---|---|
Workflow Stage List (워크플로우 스테이지 목록) |
GET | /stage/pipeline/list | - | 젠킨스 스테이지 목록을 조회한다. 젠킨스 스테이지를 조합한 jenkins job (workflow) 구성을 위한 스테이지 목록 |
Workflow StageCD Add (스테이지 구분 추가) |
POST | /common/group/Pipeline/code | (Request Body) { "commonGroupCd":"Pipeline", "commonCd":"TUMBLEBUG", "codeName":"TUMBLEBUG", "codeDesc":"Add StageCd", "codeOrder":13 } |
스테이지 구분을 추가한다. (여러 스테이지를 관리 할 상위 depth 개념) |
Workflow Stage Name Duplicate (워크플로우 스테이지 이름 중복 체크) |
GET | /stage/pipeline/name/duplicate | (Query Param) pipelineCd={스테이지구분}& pipelineName={스테이지명} |
스테이지 구분에 종속된 스테이지명 중복검사를 한다. |
Workflow Stage Regist (워크플로우 스테이지 등록) | POST | /stage/pipeline | (Request Body) { "pipelineCd":"TUMBLEBUG", "pipelineName":"tumblebug-Test", "pipelineScript":" stage('tumblebug') {\n TUMBLEBUG'\n \n steps {\n echo '>>>>>STAGE: // 스크립트를작성해주세요.\n }\n }\n \n", "newStageCd":"tumblebug“ } |
스테이지를등록한다. |
API
Function | API | EndPoint | Parameter | DESC |
---|---|---|---|---|
Workflow List (워크플로우 목록) |
GET | /workflow/list | - | 워크플로우 목록을 조회한다. 스테이지를 조합하여 구성한 workflow 목록을 조회 |
Workflow Name Duplicate (워크플로우 이름 중복 체크) |
GET | /workflow/name/duplicate | (Query Param) workflowName=workflow-test |
등록될 워크플로우 명을 중복검사 한다. |
Workflow Default Script Create (워크플로우 기본 스크립트 생성) |
POST | /workflow/jenkins/pipeline/default | (Request Body) { "pipelineParam":[{"paramKey":"","paramValue":""}], "workflowName":"workflow-test", "workflowPurpose":"test", "jenkinsId":2 } |
기본 스크립트를 생성한다. |
Workflow Regist (워크플로우 생성) |
POST | /workflow | (Request Body) { "workflowName": "workflow-test", "workflowPurpose": "test", "jenkinsId": 2, "pipelineParam": [ { "paramKey": "MCIS_NAME", "paramValue": "vm_name" } ], "pipelineScript": "//It was created by the Devops portal.\npipeline {\n agent any\n \n environment {\n MC_SPIDER_REST_URI = http://tb.tb-cb.kro.kr:1323\n CB_TUMBLEBUG_SWAGGER_URI = http://tb.tb-cb.kro.kr:1323/tumblebug/api/index.html\n }\n \n stages {\n\n stage('tumblebug') {\n steps {\n echo '>>>>>STAGE: TUMBLEBUG'\n \n // 스크립트를 작성해주세요.\n echo 'MCIS NAME >> ' "${MCIS_NAME}"\n }\n }\n \n\n }\n}\n“", "pipelines": [ { "pipelineScript": "//It was created by the Devops portal.\npipeline {\n agent any\n \n environment {\n MC_SPIDER_REST_URI = http://tb.tb-cb.kro.kr:1323\n CB_TUMBLEBUG_SWAGGER_URI = http://tb.tb-cb.kro.kr:1323/tumblebug/api/index.html\n }\n \n stages {\n", "pipelineOrder": 0, "isDefaultScript": true, "defaultScriptTag": "DEFAULT_START" }, { "pipelineScript": " stage('tumblebug') {\n steps {\n echo '>>>>>STAGE: TUMBLEBUG'\n \n // 스크립트를 작성해주세요.\n echo 'MCIS NAME >> ' "${MCIS_NAME}"\n }\n }\n \n", "pipelineOrder": 1 }, { "pipelineScript": " }\n}\n", "pipelineOrder": 2, "isDefaultScript": true, "defaultScriptTag": "DEFAULT_END" } ] } |
워크플로우 생성과 함께 Jenkins Job이 생성된다 |
Workflow Run (워크플로우 실행) |
POST GET |
/workflow/run /workflow/{workflowIdx}/run |
(Request Body) { "workflowId":47, "pipelineParam": [ { "paramKey":"MCIS_NAME", "paramValue":"test", } ], } |
등록된 워크플로우를 실행 한다. |
워크플로우 실행 추가 설명 *
등록된 workflow에 따라 실행 시 추가로 필요한 데이터가 존재할 수 있음(param)GET방식 실행 시 설정된 value 기본값으로 실행
Ex) tomcat 9.0 설치 workflow
- MCIS, NAMESPACE 등 필요
- 개발서버기준 vm 삭제
API : (POST) /workflow/run
Param : (Request Body)
{
"workflowId":47,
"pipelineParam": [
{
"paramKey":"MCIS",
"paramValue":"{mcisname}"
},
{
"paramKey":"NAMESPACE",
"paramValue":"{namespace}"
}
]
}
Ex2) 현재시간 반환 workflow, health check 등
- 단순실행(GET) 가능
API
Function | API | EndPoint | Parameter | DESC |
---|---|---|---|---|
Software Catalog Regist (Software Catalog 등록) |
POST | /catalog/software/ | (Request Body)(Request Body) { "scTitle": "test api call dummy", "scVersion": "0.0.0", "scIcon": "https://avatars.githubusercontent.com/u/133619646?s=48&v=4", "scSummary": "test for swCatalog insert \n aabbccdd", "scUrl": ".", "scCategory": "CORE", "scReference": "https://github.com/cloud-barista/cb-tumblebug", "scDescription": "test dummy data insert" } |
새로 생성할 software정보를 입력(임시 api, 정책 비확정으로 현재 기본정보정도만 구현한 임시 api) |
Software Catalog 연관 workflow/catalog 등록 | 1. GET 2. GET |
1. /catalog/software/relation/workflow/{생성된 catalogIdx}/{연결할 workflowIdx} 2. /catalog/software/relation/workflow/{입력 성공 시 반환된 data.scIdx)}/61(vm infra create) |
- | 생성된 software catalog에 연동할 workflow를 입력 |
Software Catalog List (Software Catalog 목록) |
GET | /catalog/software/{searchKeyword} | - | {searchKeyword}값이 없으면 전체조회 |
dockerHub image Detail (dockerHub image 조회) |
GET | /applications/search/dockerhub/catalog/{searchKeyword} | - | dockerHub image 조회 |
artifactHub helm Detail (artifactHub helm 조회) |
GET | /applications/search/artifactHub/package/{searchKeyword} | - | artifactHub helm 조회 |
Workflow Run (workflow 실행) |
POST | /workflow/run | { "workflowId": 61, "pipelineParam": [ {"paramKey": "NAMESPACE", "paramValue": "ns01"}, {"paramKey": "MCIS", "paramValue": "test-vm-0621-001"}, {"paramKey": "SUBGROUP_SIZE", "paramValue": "1"}, {"paramKey": "SPEC", "paramValue": "aws+ap-northeast-2+t2.small"} ] } |
workflow 실행 |
Workflow Run (생성된 vm infra 삭제 workflow) |
POST | /workflow/run | { "workflowId": 49, "pipelineParam": [ {"paramKey": "NAMESPACE", "paramValue": "ns01"}, {"paramKey": "MCIS", "paramValue": "test-vm-0621-001"} ] } |
생성된 vm infra 삭제 workflow |