项目
创建项目
创建空项目
将会创建一个空的项目,不包含任何服务资源、环境资源。
请求
POST /openapi/projects/project
body 参数说明
参数名 | 说明 | 类型 | 必填 | 样例 |
---|---|---|---|---|
project_name | 项目名称 | string | 是 | voting-app |
project_key | 项目标识,命名规则如下: 支持小写字母和数字,以及中划线 - | string | 是 | voting-app |
is_public | 是否是公开项目 | bool | 是 | false |
description | 项目描述 | string | 否 | 投票系统 |
project_type | 项目类型,可选值如下:helm (即:Kubernetes Helm Chart 项目)yaml (即:Kubernetes YAML 项目)loaded (即:Kubernetes 托管项目) | string | 是 | yaml |
返回
{
"message": "success"
}
创建 YAML 项目并初始化
适用于 Kubernetes YAML 类型项目。
请求
POST /openapi/projects/project/init/yaml
body 参数说明
参数名 | 说明 | 类型 | 必填 |
---|---|---|---|
project_name | 项目名称 | string | 是 |
project_key | 项目标识,命名规则如下: 支持小写字母和数字,以及中划线 - | string | 是 |
project_type | 项目类型,固定值 yaml | string | 是 |
is_public | 是否是公开项目 | bool | 是 |
description | 项目描述 | string | 否 |
service_list | 服务列表 | []Service | 是 |
env_list | 环境列表 | []Env | 是 |
Service 参数说明
参数名 | 说明 | 类型 | 必填 |
---|---|---|---|
source | 服务的创建来源,有以下两种创建来源:template :通过模板新建服务yaml :通过手写yaml新建服务 | string | 是 |
template_name | 服务模板的名称 | string | source 为 template 时必填 |
variable_yaml | 服务模板中的变量 | []KeyVal | 否 |
auto_sync | 自动同步开关,source 为 template 时生效 | bool | 否 |
service_name | 服务名称 | string | 是 |
yaml | 服务的 YAML 配置 | string | source 为 yaml 时必填 |
Env 参数说明
参数名 | 说明 | 类型 | 必填 |
---|---|---|---|
env_key | 环境标识 | string | 是 |
cluster | 集群名称 | string | 是 |
namespace | 环境所在的 Namespace 名称 | string | 是 |
KeyVal 参数说明
参数名 | 说明 | 类型 | 必填 |
---|---|---|---|
key | 变量的键值 | string | 是 |
value | 变量的值,如果有嵌套内容,使用 json 格式 | any | 是 |
body 参数示例
以创建 demo
项目,并初始化新建服务 myapp-1
和环境 dev
为例:
{
"project_name": "demo",
"project_key": "demo",
"project_type": "yaml",
"is_public": true,
"description": "demo 项目",
"service_list": [
{
"source": "yaml",
"service_name": "myapp-1",
"yaml": "apiVersion: v1\nkind: Service\nmetadata:\n name: a\n labels:\n app: a\nspec:\n ports:\n - name: http\n port: 80\n targetPort: 8080\n selector:\n app: a\n\n---\n\napiVersion: apps/v1\nkind: Deployment\nmetadata:\n name: a\n labels:\n app: a\nspec:\n selector:\n matchLabels:\n app: a\n replicas: 1\n template:\n metadata:\n labels:\n app: a\n spec:\n containers:\n - name: myapp-1\n image: koderover.tencentcloudcr.com/koderover-demo/myapp-1:v0.1__linux_amd64\n imagePullPolicy: Always\n command: [\"/myapp-1\"]\n args: [\"--downstream-addr\", \"$(DOWNSTREAM_ADDR)\", \"--headers\", \"$(HEADERS)\"]\n env:\n - name: DOWNSTREAM_ADDR\n value: \"b\"\n - name: HEADERS\n value: \"x-request-id\"\n ports:\n - containerPort: 8080\n resources:\n limits:\n cpu: 100m\n memory: 100Mi\n"
}
],
"env_list": [
{
"env_key": "dev",
"cluster_name": "dev",
"namespace": "demo-env-dev"
}
]
}
返回
{
"message": "success"
}
创建 Helm 项目并初始化
请求
POST /openapi/projects/project/init/helm
body 参数说明
参数名 | 说明 | 类型 | 必填 |
---|---|---|---|
project_name | 项目名称 | string | 是 |
project_key | 项目标识,命名规则如下: 支持小写字母和数字,以及中划线 - | string | 是 |
is_public | 是否是公开项目 | bool | 是 |
description | 项目描述 | string | 否 |
service_list | 服务列表 | []Service | 是 |
env_list | 环境列表 | []Env | 是 |
Service 参数说明
参数名 | 说明 | 类型 | 必填 |
---|---|---|---|
service_name | 服务名称 | string | 是 |
source | 服务的创建类型,固定值:template | string | 是 |
template_name | 服务模板的名称 | string | source 为 template 时必填 |
variable_yaml | 服务模板中的变量 | []KeyVal | 否 |
auto_sync | 自动同步开关,source 为 template 时生效 | bool | 否 |
values_yaml | Helm values 文件 | string |
Env 参数说明
参数名 | 说明 | 类型 | 必填 |
---|---|---|---|
env_key | 环境标识 | string | 是 |
cluster_name | 集群名称 | string | 是 |
namespace | 环境所在的 Namespace 名称 | string | 是 |
KeyVal 参数说明
参数名 | 说明 | 类型 | 必填 |
---|---|---|---|
key | 变量的键值 | string | 是 |
value | 变量的值,如果有嵌套内容,使用 json 格式 | any | 是 |
body 参数示例
{
"project_name":"helm项目测试2",
"project_key":"test-helm-2",
"is_public":true,
"description":"测试",
"service_list":[
{
"source":"template",
"service_name":"service33",
"template_name":"minmin-helm-template",
"variable_yaml":[{"key":"port","value":"7777"}],
"values_yaml":"",
"auto_sync":true
}
],
"env_list":[
{
"env_key":"dev1",
"cluster_name":"local-20220823144517",
"namespace":"test-helm-env-dev"
}
]
}
返回
{
"message": "success"
}
获取项目列表
请求
GET /openapi/projects/project?pageSize=<当前页显示数量>&pageNum=<当前页数>
Query 参数说明
参数名 | 类型 | 描述 | 必填 |
---|---|---|---|
pageSize | int | 分页每页显示数量,默认值:20 | 否 |
pageNum | int | 分页当前页数,默认值:1 | 否 |
返回说明
参数名 | 类型 | 描述 |
---|---|---|
projects | []Project | 项目列表 |
total | int | 项目总数 |
Project 参数说明
参数名 | 类型 | 描述 |
---|---|---|
project_name | string | 项目名称 |
project_key | string | 项目标识 |
deploy_type | string | 项目部署类型:helm :Kubernetes Helm Chart 项目yaml :Kubernetes YAML 项目loaded :Kubernetes 托管项目 |
desc | string | 项目描述 |
返回示例
{
"total": 14,
"projects": [
{
"project_name": "lilian-test",
"project_key": "lilian-test",
"description": "",
"deploy_type":"k8s"
},
{
"project_name": "发布中心",
"project_key": "release-center",
"description": "migrate from deploy center",
"deploy_type":"k8s"
}
]
}
获取指定项目详情
请求
GET /openapi/projects/project/detail?projectKey=<项目标识>
Query 参数说明
参数名 | 类型 | 描述 | 必填 |
---|---|---|---|
projectKey | string | 项目标识 | 是 |
返回说明
参数名 | 类型 | 描述 |
---|---|---|
project_name | string | 项目名称 |
project_key | string | 项目标识 |
deploy_type | string | 项目部署类型:helm :Kubernetes Helm Chart 项目yaml :Kubernetes YAML 项目loaded :Kubernetes 托管项目 |
desc | string | 项目描述 |
created_by | string | 创建者 |
created_time | int | 创建时间 |
返回示例
{
"project_name": "lilian-test",
"project_key": "lilian-test",
"desc": "",
"deploy_type": "k8s",
"create_time": 1686134245,
"created_by": "admin",
}
删除项目
请求
DELETE /openapi/projects/project?projectKey=<项目标识>&isDelete=<是否删除项目相关资源>
Query 参数说明
参数名 | 类型 | 描述 | 必填 |
---|---|---|---|
projectKey | string | 项目标识 | 是 |
isDelete | bool | 是否同时删除环境对应的 Kubernetes 命名空间和服务 | 是 |
成功返回说明
{message: "success"}