解析组件模板包
功能介绍
此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
}
}
响应示例
{
"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"
},
"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错误码。