更新时间:2025-06-30 GMT+08:00
分享

解析组件模板包

功能介绍

此API用于解析组件模板包。

URI

POST /v3/{project_id}/cas/components/parse-template-package

表1 路径参数

参数

是否必选

参数类型

描述

project_id

String

租户项目ID。获取方法,请参考获取项目ID

请求参数

表2 请求Header参数

参数

是否必选

参数类型

描述

Content-Type

String

消息体的类型(格式),默认取值为“application/json;charset=utf8”。

X-Auth-Token

String

调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值。Token获取方式,请参考认证鉴权

表3 请求Body参数

参数

是否必选

参数类型

描述

template_source

Object

组件模板包来源,请参考表4

component_id

String

组件ID。

表4 template_source

参数

是否必选

参数类型

描述

storage

String

组件模板包存储方式。

  • devcloud,CodeArts软件发布库。
  • obs,OBS对象存储。
  • http,自定义文件地址。

url

String

组件模板包地址。

组件模板包存储方式为自定义文件地址时有效。

http_username

String

用户名。

组件模板包存储方式为自定义文件地址且安全认证方式为用户名密码认证时有效。

http_password

String

密码。

组件模板包存储方式为自定义文件地址且安全认证方式为用户名密码认证时有效。

http_headers

Array of objects

请求头,请参考表5

组件模板包存储方式为自定义文件地址且安全认证方式为自定义Header认证时有效。

表5 http_headers

参数

是否必选

参数类型

描述

key

String

请求key。

value

String

请求value。

响应消息

表6 响应参数

参数

参数类型

描述

template

Map<String, String>

模板包文件信息。

variables

Map<String, Object>

模板包变量声明信息。

  • key,变量名。
  • value,请参考表7

input_values

Map<String, String>

模板包输入信息。

表7 variables

参数

参数类型

描述

type

String

变量类型。

default

String

变量默认值。

description

String

变量描述。

请求示例

解析存储在OBS桶obs://apitest/路径下的demo-app-package.zip组件模板包。

{
    "template_source": {
        "storage": "obs",
        "url": "obs://apitest/demo-app-package.zip",
        "http_username": null,
        "http_password": null,
        "http_headers": []
    }
}

响应示例

{
    "template": {
        "comp_demo/service-account.yaml": "apiVersion: v1\nkind: ServiceAccount\nmetadata:\n  name: ss-demo-app-account\n  namespace: ${var.namespace}",
        "comp_demo/role.yaml": "apiVersion: rbac.authorization.k8s.io/v1\nkind: Role\nmetadata:\n  name: ss-demo-app-role\n  namespace: ${var.namespace}\nrules:\n  - apiGroups: [ \"\" ]\n    resources: [ \"pods\" ]\n    verbs: [ \"get\", \"list\", \"watch\" ]",
        "values.yaml": "namespace: demo\ndep_name: demo-dep\nsvc_port: 8080\nvalue: World\nimage: swr.cn-north-4.myhuaweicloud.com/ss/demo-app:latest\nconfig_name: demo-group/application-wqd.yaml",
        "comp_demo/rolebinding.yaml": "apiVersion: rbac.authorization.k8s.io/v1\nkind: RoleBinding\nmetadata:\n  name: ss-demo-app-rolebinding\n  namespace: ${var.namespace}\nroleRef:\n  apiGroup: rbac.authorization.k8s.io\n  kind: Role\n  name: ss-demo-app-role\nsubjects:\n  - kind: ServiceAccount\n    name: ss-demo-app-account\n    namespace: ${var.namespace}",
        "comp_demo/service.yaml": "apiVersion: v1\nkind: Service\nmetadata:\n  name: demo-app-service\n  namespace: ${var.namespace}\nspec:\n  selector:\n    app: ${var.dep_name}\n  ports:\n    - name: cce-service-0\n      targetPort: ${var.svc_port}\n      port: ${var.svc_port}\n      protocol: TCP\n  type: ClusterIP\n",
        "comp_demo/ss-component.yaml": "kind: ServiceStageComponent\nspec:\n  name: ${var.dep_name}\n  refer_resources:\n    - type: cce\n      id: ${var.cce_resource}\n    - type: elb\n      id: ${var.elb_resource}\n  external_accessed:\n    - address: www.demo.com\n      forward_port: 8080\n      id : ${var.elb_resource}\n      protocol: HTTP\n      type: SPECIFIED\n  configs:\n    - config_name: ${var.config_name}\n      mount_path: /home/demo/application-wqd.yaml\n      container_name: container-1",
        "comp_demo/ss-config.yaml": "kind: ServiceStageConfig\nspec:\n  name: ${var.config_name}\n  description: desc\n  sensitive: true\n  content: |\n    server:\n      port: ${var.svc_port}\n    demo:\n      value: ${var.value}",
        "comp_demo/secret.yaml": "apiVersion: v1\nkind: Secret\nmetadata:\n  name: ss-demo-app-secret\n  namespace: ${var.namespace}\ntype: Opaque\ndata:\n  SECRET_KEY: dmFsdWU=",
        "comp_demo/hpa.yaml": "kind: HorizontalPodAutoscaler\napiVersion: autoscaling/v2\nmetadata:\n  name: ss-demo-app-hpa\n  namespace: ${var.namespace}\nspec:\n  scaleTargetRef:\n    kind: Deployment\n    name: ${var.dep_name}\n    apiVersion: apps/v1\n  minReplicas: 1\n  maxReplicas: 10\n  metrics:\n    - type: Resource\n      resource:\n        name: cpu\n        target:\n          type: Utilization\n          averageUtilization: 70",
        "comp_demo/deployment.yaml": "apiVersion: apps/v1\nkind: Deployment\nmetadata:\n  name: ${var.dep_name}\n  namespace: ${var.namespace}\nspec:\n  selector:\n    matchLabels: {}\n  template:\n    metadata:\n      labels: {}\n    spec:\n      containers:\n        - name: container-1\n          image: ${var.image}\n          imagePullPolicy: IfNotPresent\n          envFrom:\n            - configMapRef:\n                name: ss-demo-app-configmap\n            - secretRef:\n                name: ss-demo-app-secret\n          resources:\n            requests:\n              cpu: 100m\n              memory: 256Mi\n            limits:\n              cpu: 100m\n              memory: 256Mi\n      serviceAccountName: ss-demo-app-account\n      imagePullSecrets:\n        - name: default-secret\n      terminationGracePeriodSeconds: 30\n      dnsPolicy: ClusterFirst\n  replicas: 2\n  revisionHistoryLimit: 10\n  strategy:\n    type: RollingUpdate\n    rollingUpdate:\n      maxUnavailable: 25%\n      maxSurge: 25%\n  progressDeadlineSeconds: 600\n",
        "variables.yaml": "variable:\n  config_name:\n    type: string\n    default: demo-group/application-wqd.yaml\n    description: 配置文件名稱\n  namespace:\n    type: string\n    default: demo\n    description: 命名空间\n  dep_name:\n    type: string\n    default: demo-dep\n    description: 工作负载的名字\n  svc_port:\n    type: integer\n    default: 8080\n    description: 服务的端口号\n  value:\n    type: string\n    default: World\n    description: Hello接口响应数据\n  cce_resource:\n    type: cce\n    description: CCE资源\n  elb_resource:\n    type: elb\n    description: ELB资源\n  image:\n    type: string\n    description: 工作负载镜像",
        "comp_demo/configmap.yaml": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n  name: ss-demo-app-configmap\n  namespace: ${var.namespace}\ndata:\n  CONFIG_KEY: \"value\"",
        "spec.yaml": "model_version: v1.0.0\n\ncomponent:\n  component_dir: comp_demo/\n\nk8s_resources:\n  order_type: CUSTOM\n  custom_orders:\n    - ServiceAccount\n    - Role\n    - RoleBinding\n    - ConfigMap\n    - Secret\n    - Deployment\n    - HorizontalPodAutoscaler\n    - Service\n    - Ingress"
    },
    "variable": {
        "config_name": {
            "type": "string",
            "default": "demo-group/application-wqd.yaml",
            "description": "配置文件名称"
        },
        "namespace": {
            "type": "string",
            "default": "demo",
            "description": "命名空间"
        },
        "dep_name": {
            "type": "string",
            "default": "demo-dep",
            "description": "工作负载的名字"
        },
        "svc_port": {
            "type": "integer",
            "default": 8080,
            "description": "服务的端口号"
        },
        "value": {
            "type": "string",
            "default": "World",
            "description": "Hello接口响应数据"
        },
        "cce_resource": {
            "type": "cce",
            "default": null,
            "description": "CCE资源"
        },
        "elb_resource": {
            "type": "elb",
            "default": null,
            "description": "ELB资源"
        },
        "image": {
            "type": "string",
            "default": null,
            "description": "工作负载镜像"
        }
    },
    "input_values": {
        "config_name": "demo-group/application.yaml",
        "image": "swr.cn-north-4.myhuaweicloud.com/ss/demo-app:latest",
        "svc_port": 8080,
        "cce_resource": null,
        "namespace": "demo",
        "dep_name": "demo-dep",
        "value": "World",
        "elb_resource": null
    }
}

状态码

状态码

描述

200

操作成功

400

错误的请求

404

请求对象不存在

500

内部错误

错误码

请参考ServiceStage错误码

相关文档