Skip to content
pbcccbeatboard-strato edited this page Jul 4, 2024 · 4 revisions

M-CMP mc-workflow-manager Wiki

This repository provides a Workflow Manager.

A sub-system of M-CMP platform to deploy and manage Multi-Cloud Infrastructures.


1. Overview

M-CMP의 mc-workflow-manager 서브시스템이 제공하는 기능은 다음과 같다.

  • ToolChain 관리
  • Workflow Stage 관리
  • Workflow 관리
  • Software Catalog 관리

2. Flow

2-1. Workflow Manager Flow

M-CMP의 mc-workflow-manager 서브시스템의 Flow는 다음과 같다.

  1. ToolChain 등록 (연동될 OSS 정보들응 등록)

    • 연동되어 사용될 Jenkins, Gitlab, ArgoCD, Nexus, Tumblebug 등
    • Workflow 용 OSS인 Jenkins는 Workflow 관련 기능을 위해 필수로 등록한다.
  2. Workflow Stage 등록 (Workflow를 구성할 Stage 등록)

    • 템플릿 개념의 Stage 등록 후 Workflow에서 사용 가능하다.
    • 필수로 등록 하지 않아도 된다.
  3. Workflow 생성

    • 등록된 Stage등을 조합/직접 입력 하여 Workflow를 생성한다.
  4. Workflow 실행

    • UI 또는 API 를 활용하여 Workflow를 실행한다.

2-2. Software Catalog Flow

  1. Software Catalog 등록

  2. 연관 Workflow 및 관련 Catalog 등록

    • software catalog 연계 workflow 및 catalog 등록(optional)
      • 해당software 설치 workflow 실행, 재시작 등 연관 workflow 등록
      • 연관catalog 등록
  3. Software Catalog 확인 및 타 Repository 검색

  4. 연관workflow 실행 등

    • 연관workflow 실행, 또는 연관 catalog 정보 확인 등
      • 해당software 설치 workflow 실행 등 등록된 연관 workflow 사용
      • 검색된외부sw를catalog에 등록 등

3. 기능 API

3-1. ToolChain

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":""
}
툴체인을 등록한다.

3-2. Workflow Stage

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“
}
스테이지를등록한다.

3-3. Workflow

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) 가능

3-4. Software Catalog

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