更新时间:2024-11-14 GMT+08:00
分享

创建组件

功能介绍

创建组件。

调试

您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。

URI

POST /v1/{project_id}/cae/applications/{application_id}/components

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

项目ID,获取项目ID请参见获取项目ID

application_id

String

应用ID。

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

X-Auth-Token

String

用户Token。

  • 获取Token,请参考《统一身份认证服务API参考》的“获取用户Token”章节。

  • 请求响应成功后在响应消息头中包含的“X-Subject-Token”的值即为Token值。

X-Enterprise-Project-ID

String

企业项目ID。

  • 创建环境时,环境会绑定企业项目ID。

  • 最大长度36字节,带“-”连字符的UUID格式,或者是字符串“0”。

  • 该字段不传(或传为字符串“0”)时,则查询默认企业项目下的资源。

说明:

关于企业项目ID的获取及企业项目特性的详细信息,请参见《企业管理服务用户指南》。

X-Environment-ID

String

环境ID。

  • 获取环境ID,通过《云应用引擎API参考》的“获取环境列表”章节获取环境信息。

  • 请求响应成功后在响应体的items数组中的一个元素即为一个环境的信息,其中id字段即是环境ID。

表3 请求Body参数

参数

是否必选

参数类型

描述

api_version

String

API版本,固定值“v1”,该值不可修改。

kind

String

API类型,固定值“Component”,该值不可修改。

metadata

metadata object

请求数据。

spec

spec object

组件规格信息。

表4 metadata

参数

是否必选

参数类型

描述

name

String

组件名称。

annotations

Map<String,String>

创建组件请求体附加参数,当前只支持version参数,此参数必填。

表5 spec

参数

是否必选

参数类型

描述

runtime

String

语言/运行时。

replica

Integer

实例个数。

build

Build object

构建信息。

source

Source object

源信息。

resource_limit

ResourceLimit object

实例规格。

image_url

String

镜像地址。

表6 Build

参数

是否必选

参数类型

描述

archive

Archive object

构建产物纳管。

parameters

map<string, object>

构建附加参数。

  • base_image:基础镜像地址。

  • build_cmd:自定义构建命令。

  • dockerfile_path:自定义dockerfile文件路径

  • dockerfile_content:自定义dockerfile内容

  • artifact_name: 针对java多模块构建,指定构建后运行的产物,以".jar"结尾。

表7 Archive

参数

是否必选

参数类型

描述

artifact_namespace

String

产物纳管SWR组织。

表8 Source

参数

是否必选

参数类型

描述

code

Repo object

源码仓库信息。

type

String

源类型。

sub_type

String

源子类型。

  • 源类型为code时,子类型表示不同的代码仓库,如DevCloud(CodeArts)、GitLab、GitHub、Gitee、Bitbucket。

  • 源类型为softwarePackage时,子类型表示不同的软件包仓库,如BinObs、BinDevCloud(CodeArts软件发布库)。

url

String

url地址。

  • 源类型为image时,url地址为镜像地址。

  • 源类型为code时,url地址为git地址。

  • 源类型为softwarePackage时,url地址为软件包地址。

表9 Repo

参数

是否必选

参数类型

描述

auth_name

String

授权名称。

branch

String

分支。

namespace

String

命名空间,需填写命名空间的Base64编码。

表10 ResourceLimit

参数

是否必选

参数类型

描述

cpu_limit

String

cpu限额。

memory_limit

String

内存限额。

响应参数

状态码: 200

表11 响应Body参数

参数

参数类型

描述

api_version

String

API版本,固定值“v1”,该值不可修改。

kind

String

API类型,固定值“Component”,该值不可修改。

metadata

MetadataResponse object

响应数据。

spec

CreateComponentSpec object

组件规格。

表12 MetadataResponse

参数

参数类型

描述

id

String

组件ID。

name

String

组件名称。

annotations

Map<String,String>

组件附加属性。

  • log_group_id:LTS日志组的ID。

  • log_stream_id:LTS日志流的ID。

  • version:组件版本。

created_at

String

创建时间。

updated_at

String

更新时间。

表13 CreateComponentSpec

参数

参数类型

描述

runtime

String

语言/运行时。

env_id

String

环境ID。

replica

Integer

实例个数。

source

Source object

源信息。

build

Build object

构建信息。

resource_limit

ResourceLimit object

实例规格。

available_replica

Integer

可用实例个数。

status

String

组件状态。

表14 Source

参数

参数类型

描述

code

Repo object

源码仓库信息。

type

String

源类型。

sub_type

String

源子类型。

  • 源类型为code时,子类型表示不同的代码仓库,如DevCloud(CodeArts)、GitLab、GitHub、Gitee、Bitbucket。

  • 源类型为softwarePackage时,子类型表示不同的软件包仓库,如BinObs、BinDevCloud(CodeArts软件发布库)。

url

String

url地址。

  • 源类型为image时,url地址为镜像地址。

  • 源类型为code时,url地址为git地址。

  • 源类型为softwarePackage时,url地址为软件包地址。

表15 Repo

参数

参数类型

描述

auth_name

String

授权名称。

branch

String

分支。

namespace

String

命名空间,需填写命名空间的Base64编码。

表16 Build

参数

参数类型

描述

archive

Archive object

构建产物纳管。

parameters

map<string, object>

构建附加参数。

  • base_image:基础镜像地址。

  • build_cmd:自定义构建命令。

  • dockerfile_path:自定义dockerfile文件路径

  • dockerfile_content:自定义dockerfile内容

  • artifact_name: 针对java多模块构建,指定构建后运行的产物,以".jar"结尾。

表17 Archive

参数

参数类型

描述

artifact_namespace

String

产物纳管SWR组织。

表18 ResourceLimit

参数

参数类型

描述

cpu_limit

String

cpu限额。

memory_limit

String

内存限额。

请求示例

  • 使用源码仓库创建组件,组件名称“test-code”,版本“1.0.0”,选择GitLab源码仓库,运行时为Java8。

    POST https://{endpoint}/v1/{project_id}/cae/applications/{application_id}/components
    
    {
      "api_version" : "v1",
      "kind" : "Component",
      "metadata" : {
        "name" : "test-code",
        "annotations" : {
          "version" : "1.0.0"
        }
      },
      "spec" : {
        "runtime" : "Java8",
        "build" : {
          "archive" : {
            "artifact_namespace" : "xxx"
          },
          "parameters" : {
            "base_image" : "openjdk:8u181-jdk-alpine",
            "dockerfile_path" : "./Dockerfile"
          }
        },
        "source" : {
          "type" : "code",
          "sub_type" : "GitLab",
          "url" : "https://xxx:8090/xxx/cae-frontend.git",
          "code" : {
            "branch" : "master",
            "auth_name" : "gitlab-xxx",
            "namespace" : "em1n"
          }
        },
        "resource_limit" : {
          "cpu_limit" : "500m",
          "memory_limit" : "1Gi"
        },
        "replica" : 1
      }
    }
  • 使用镜像创建组件,组件名称“test-image”,版本“1.0.0”,选择nginx镜像,运行时为Docker。

    POST https://{endpoint}/v1/{project_id}/cae/applications/{application_id}/components
    
    {
      "api_version" : "v1",
      "kind" : "Component",
      "metadata" : {
        "name" : "test-image",
        "annotations" : {
          "version" : "1.0.0"
        }
      },
      "spec" : {
        "runtime" : "Docker",
        "source" : {
          "type" : "image",
          "url" : "nginx:stable-alpine-perl"
        },
        "resource_limit" : {
          "cpu_limit" : "500m",
          "memory_limit" : "1Gi"
        },
        "replica" : 1
      }
    }
  • 使用软件包创建组件,组件名称“test-jar”,版本“1.0.0”,在OBS对象存储中选择名称为“forecast-1.0.0.jar”的软件包,运行时为Java8。

    POST https://{endpoint}/v1/{project_id}/cae/applications/{application_id}/components
    
    {
      "api_version" : "v1",
      "kind" : "Component",
      "metadata" : {
        "name" : "test-jar",
        "annotations" : {
          "version" : "1.0.0"
        }
      },
      "spec" : {
        "runtime" : "Java8",
        "build" : {
          "archive" : {
            "artifact_namespace" : "xxx"
          },
          "parameters" : {
            "base_image" : "openjdk:8u181-jdk-alpine",
            "dockerfile_content" : "FROM java:8 \\nADD forecast-1.0.0.jar \\nEXPOSE 8080 \\nENTRYPOINT [\"java\",\"-jar\",\"forecast-1.0.0.jar\"]"
          }
        },
        "source" : {
          "type" : "softwarePackage",
          "sub_type" : "BinObs",
          "url" : "https://xxx.obs.region.xxx.huawei.com/xxx/forecast-1.0.0.jar"
        },
        "resource_limit" : {
          "cpu_limit" : "500m",
          "memory_limit" : "1Gi"
        },
        "replica" : 1
      }
    }

响应示例

状态码: 200

请求成功。

{
  "api_version": "v1",
  "kind": "Component",
  "metadata": {
    "id": "cac09548-047f-46c4-abbd-a6a652305565",
    "name": "test-code",
    "annotations": {
      "log_group_id": "5b13213a-84f8-4b72-8ca5-530e15cc1402",
      "log_stream_id": "6ddf6c71-4767-46db-98a2-fe5fb301b366",
      "version": "1.0.0"
    },
    "created_at": "2023-02-13T02:38:22.689607114Z",
    "updated_at": "2023-02-13T02:38:22.689607114Z"
  },
  "spec": {
    "runtime": "Java8",
    "env_id": "9819b3f5-dd08-44ff-ba88-eb38e435594c",
    "replica": 1,
    "source": {
      "type": "code",
      "sub_type": "GitLab",
      "url": "http://xxx@cpe.gitlab.com:8090/xxx/cae-backend.git",
      "code": {
        "branch": "master",
        "auth_name": "gitlab-xxx",
        "namespace": "em1n"
      }
    },
    "build": {
      "archive": {
        "artifact_namespace": "xxx"
      },
      "parameters": {
        "base_image": "openjdk:8u181-jdk-alpine"
        "dockerfile_path": "./Dockerfile"
      }
    },
    "resource_limit": {
      "cpu_limit": "500m",
      "memory_limit": "1Gi"
    },
    "available_replica": 0,
    "status": "created"
  }
}

状态码

状态码

描述

200

请求成功。

错误码

请参见错误码

相关文档