Reviewed-by: Eotvos, Oliver <oliver.eotvos@t-systems.com> Co-authored-by: qiujiandong1 <qiujiandong1@huawei.com> Co-committed-by: qiujiandong1 <qiujiandong1@huawei.com>
83 KiB
Creating a Service Mesh
Function
This API is used to create a service mesh.
URI
POST /v1/{project_id}/meshes
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
project_id |
Yes |
String |
Project ID. |
Request Parameters
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
Content-Type |
Yes |
String |
Message body type or format. |
X-Auth-Token |
Yes |
String |
Requests for calling an API can be authenticated using either a token or AK/SK. If token-based authentication is used, this parameter is mandatory and must be set to a user token. |
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
apiVersion |
Yes |
String |
API version. The value is fixed at v1 and cannot be changed. |
kind |
Yes |
String |
API type. The value is fixed at Mesh or mesh and cannot be changed. |
metadata |
Yes |
Table 4 object |
Basic information about the service mesh. Metadata is a collection of attributes. |
spec |
Yes |
Table 5 object |
Detailed description of the service mesh. ASM creates or updates the service mesh by spec. |
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
name |
Yes |
String |
Service mesh name. Enter 4 to 64 characters. The name must start with a lowercase letter and not end with a hyphen (-). Only lowercase letters, digits, and hyphens (-) are allowed. |
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
type |
Yes |
String |
Service mesh type. InCluster: service mesh with an in-cluster control plane. The value is InCluster for the service mesh of the Basic edition. |
version |
Yes |
String |
Service mesh version. |
extendParams |
Yes |
Table 6 object |
Extensions of the service mesh. |
ipv6Enable |
No |
Boolean |
Whether the service mesh supports IPv6. |
config |
No |
Table 12 object |
Service mesh configuration. |
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
clusters |
Yes |
Array of Table 7 objects |
Cluster information in the service mesh. |
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
clusterID |
Yes |
String |
Cluster ID, which is unique and can be used to query the cluster to be added. |
injection |
No |
Table 8 object |
Sidecar injection configuration. |
installation |
Yes |
Table 9 object |
Installation configuration of service mesh components. |
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
namespaces |
No |
Table 10 object |
Namespaces where sidecars to be injected. |
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
nodes |
Yes |
Table 10 object |
Nodes where service mesh components are installed. |
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
fieldSelector |
Yes |
Table 11 object |
Field selector. |
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
key |
Yes |
String |
Key. |
operator |
Yes |
String |
Operator. The value can only be In. |
values |
Yes |
Array of strings |
Values. |
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
proxyConfig |
No |
Table 13 object |
Data plane configuration of the service mesh. |
telemetryConfig |
No |
Table 14 object |
Observability configuration of the service mesh. |
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
includeIPRanges |
No |
String |
IP address ranges that will be included for outbound traffic redirection. Use commas (,) to separate the IP address ranges. |
excludeIPRanges |
No |
String |
IP address ranges that will be excluded for outbound traffic redirection. Use commas (,) to separate the IP address ranges. |
excludeOutboundPorts |
No |
String |
Ports that will be excluded for outbound traffic redirection. Use commas (,) to separate the ports. |
excludeInboundPorts |
No |
String |
Ports that will be excluded for inbound traffic redirection. Use commas (,) to separate the ports. |
includeOutboundPorts |
No |
String |
Ports that will be included for outbound traffic redirection. Use commas (,) to separate the ports. |
includeInboundPorts |
No |
String |
Ports that will be included for inbound traffic redirection. Use commas (,) to separate the ports. |
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
tracing |
No |
Table 15 object |
Tracing configuration, which is used to report traces in the service mesh. |
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
randomSamplingPercentage |
No |
Float |
Tracing sampling rate. |
defaultProviders |
No |
Array of strings |
Name of the default provider that tracing reports data to, which must match the name field in extensionProviders or use the preset provider apm-otel of ASM. If apm-otel is used, ensure that APM 2.0 is supported in the current region and the service mesh version is later than 1.18. |
extensionProviders |
No |
Array of Table 16 objects |
User-defined provider. Currently, Zipkin is supported. If you configure the Zipkin provider, ensure that the service mesh version is 1.15 or later. |
Parameter |
Mandatory |
Type |
Description |
|---|---|---|---|
name |
No |
String |
Provider name. |
zipkin |
No |
Table 17 object |
Self-defined configuration of Zipkin. |
Response Parameters
Status code: 201
Parameter |
Type |
Description |
|---|---|---|
apiVersion |
String |
API version. The value is fixed at v1 and cannot be changed. |
kind |
String |
API type. The value is fixed at Mesh or mesh and cannot be changed. |
metadata |
Table 19 object |
Basic information about the service mesh. Metadata is a collection of attributes. |
spec |
Table 20 object |
Detailed description of the service mesh. ASM creates or updates the service mesh by spec. |
status |
Table 29 object |
Service mesh status, which is automatically generated by ASM. |
Parameter |
Type |
Description |
|---|---|---|
name |
String |
Service mesh name. Enter 4 to 64 characters. The name must start with a lowercase letter and not end with a hyphen (-). Only lowercase letters, digits, and hyphens (-) are allowed. |
uid |
String |
Service mesh ID, which is unique and automatically generated after the service mesh is created. A custom value will not take effect. |
creationTimestamp |
String |
Time when the service mesh was created. |
Parameter |
Type |
Description |
|---|---|---|
type |
String |
Service mesh type. InCluster: service mesh with an in-cluster control plane. The value is InCluster for the service mesh of the Basic edition. |
version |
String |
Service mesh version. |
extendParams |
Table 21 object |
Extensions of the service mesh. |
ipv6Enable |
Boolean |
Whether the service mesh supports IPv6. |
config |
Table 23 object |
Service mesh configuration. |
Parameter |
Type |
Description |
|---|---|---|
clusters |
Array of Table 22 objects |
Information about clusters in service meshes (only for the Basic edition). |
Parameter |
Type |
Description |
|---|---|---|
clusterID |
String |
Cluster ID, which is unique and can be used to query the cluster to be added. |
Parameter |
Type |
Description |
|---|---|---|
proxyConfig |
Table 24 object |
Data plane configuration of the service mesh. |
telemetryConfig |
Table 25 object |
Observability configuration of the service mesh. |
Parameter |
Type |
Description |
|---|---|---|
includeIPRanges |
String |
IP address ranges that will be included for outbound traffic redirection. Use commas (,) to separate the IP address ranges. |
excludeIPRanges |
String |
IP address ranges that will be excluded for outbound traffic redirection. Use commas (,) to separate the IP address ranges. |
excludeOutboundPorts |
String |
Ports that will be excluded for outbound traffic redirection. Use commas (,) to separate the ports. |
excludeInboundPorts |
String |
Ports that will be excluded for inbound traffic redirection. Use commas (,) to separate the ports. |
includeOutboundPorts |
String |
Ports that will be included for outbound traffic redirection. Use commas (,) to separate the ports. |
includeInboundPorts |
String |
Ports that will be included for inbound traffic redirection. Use commas (,) to separate the ports. |
Parameter |
Type |
Description |
|---|---|---|
tracing |
Table 26 object |
Tracing configuration, which is used to report traces in the service mesh. |
Parameter |
Type |
Description |
|---|---|---|
randomSamplingPercentage |
Float |
Tracing sampling rate. |
defaultProviders |
Array of strings |
Name of the default provider that tracing reports data to, which must match the name field in extensionProviders or use the preset provider apm-otel of ASM. If apm-otel is used, ensure that APM 2.0 is supported in the current region and the service mesh version is later than 1.18. |
extensionProviders |
Array of Table 27 objects |
User-defined provider. Currently, Zipkin is supported. If you configure the Zipkin provider, ensure that the service mesh version is 1.15 or later. |
Parameter |
Type |
Description |
|---|---|---|
name |
String |
Provider name. |
zipkin |
Table 28 object |
Self-defined configuration of Zipkin. |
Parameter |
Type |
Description |
|---|---|---|
service |
String |
Service address of Zipkin. |
port |
Integer |
Service port of Zipkin. |
Parameter |
Type |
Description |
|---|---|---|
phase |
String |
Service mesh status. The options are as follows:
|
updateTimestamp |
String |
Time when the service mesh was updated. |
Status code: 400
Parameter |
Type |
Description |
|---|---|---|
errorCode |
String |
Error code. Minimum length: 8 Maximum length: 36 |
errorMsg |
String |
Error message. Minimum length: 2 Maximum length: 512 |
Status code: 409
Parameter |
Type |
Description |
|---|---|---|
errorCode |
String |
Error code. Minimum length: 8 Maximum length: 36 |
errorMsg |
String |
Error message. Minimum length: 2 Maximum length: 512 |
Status code: 500
Parameter |
Type |
Description |
|---|---|---|
errorCode |
String |
Error code. Minimum length: 8 Maximum length: 36 |
errorMsg |
String |
Error message. Minimum length: 2 Maximum length: 512 |
Example Request
Creating a service mesh
POST /v1/719217bc273743xxxxxxxxae8bc34480/meshes
{
"apiVersion" : "v1",
"kind" : "Mesh",
"metadata" : {
"name" : "mesh-test-api"
},
"spec" : {
"type" : "InCluster",
"version" : "1.18.7-r5",
"extendParams" : {
"clusters" : [ {
"clusterID" : "cb0ef541-xxxx-xxxx-xxxx-0255ac1001b7",
"installation" : {
"nodes" : {
"fieldSelector" : {
"key" : "UID",
"operator" : "In",
"values" : [ "1c531b0c-xxxx-xxxx-xxxx-0255ac100b08" ]
}
}
},
"injection" : {
"namespaces" : {
"fieldSelector" : {
"key" : "Name",
"operator" : "In",
"values" : [ "default" ]
}
}
}
} ]
},
"config" : {
"proxyConfig" : {
"includeIPRanges" : "10.247.0.0/16"
},
"telemetryConfig" : {
"tracing" : {
"randomSamplingPercentage" : 1,
"defaultProviders" : [ "zipkin" ],
"extensionProviders" : [ {
"name" : "zipkin",
"zipkin" : {
"service" : "zipkin.monitoring.svc.cluster.local",
"port" : 9411
}
} ]
}
}
}
}
}
Example Response
Status code: 201
The service mesh creation task is delivered and the service mesh creation starts.
{
"kind" : "Mesh",
"apiVersion" : "v1",
"metadata" : {
"name" : "mesh-test-api",
"uid" : "a1efdc3e-xxxx-xxxx-xxxx-94bef433347e",
"creationTimestamp" : "2025-04-10T07:48:37Z"
},
"spec" : {
"type" : "InCluster",
"version" : "1.18.7-r5",
"config" : {
"telemetryConfig" : {
"tracing" : {
"randomSamplingPercentage" : 1,
"defaultProviders" : [ "zipkin" ],
"extensionProviders" : [ {
"name" : "zipkin",
"zipkin" : {
"service" : "zipkin.monitoring.svc.cluster.local",
"port" : 9411
}
} ]
}
},
"proxyConfig" : {
"includeIPRanges" : "10.247.0.0/16"
}
},
"extendParams" : {
"clusters" : [ {
"clusterID" : "cb0ef541-xxxx-xxxx-xxxx-0255ac1001b7"
} ]
}
},
"status" : {
"phase" : "Creating"
}
}
Status Codes
Status Code |
Description |
|---|---|
201 |
The service mesh creation task is delivered and the service mesh creation starts. |
400 |
Verification failed due to incorrect parameters for creating the service mesh. |
409 |
The service mesh to be created conflicts with an existing service mesh. |
500 |
An error occurs during the service mesh creation. |