解析组件模板包
功能介绍
此API用于解析组件模板包。
URI
POST /v3/{project_id}/cas/components/parse-template-package
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
project_id |
是 |
String |
租户项目ID。获取方法,请参考获取项目ID。 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
Content-Type |
是 |
String |
消息体的类型(格式),默认取值为“application/json;charset=utf8”。 |
X-Auth-Token |
是 |
String |
调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值。Token获取方式,请参考认证鉴权。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
template_source |
否 |
Object |
组件模板包来源,请参考表4。 |
component_id |
否 |
String |
组件ID。
|
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
storage |
是 |
String |
组件模板包存储方式。
|
url |
是 |
String |
组件模板包地址。 组件模板包存储方式为自定义文件地址时有效。 |
http_username |
否 |
String |
用户名。 组件模板包存储方式为自定义文件地址且安全认证方式为用户名密码认证时有效。 |
http_password |
否 |
String |
密码。 组件模板包存储方式为自定义文件地址且安全认证方式为用户名密码认证时有效。 |
http_headers |
否 |
Array of objects |
请求头,请参考表5。 组件模板包存储方式为自定义文件地址且安全认证方式为自定义Header认证时有效。 |
响应消息
参数 |
参数类型 |
描述 |
---|---|---|
template |
Map<String, String> |
模板包文件信息。 |
variables |
Map<String, Object> |
模板包变量声明信息。
|
input_values |
Map<String, 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错误码。