功能介绍
根据提供的插件模板,安装插件实例。
调用方法
请参见如何调用API。
URI
POST /api/v3/addons
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
Content-Type |
是 |
String |
消息体的类型(格式) |
X-Auth-Token |
是 |
String |
调用接口的认证方式分为Token和AK/SK两种,如果您使用的Token方式,此参数为必填,请填写Token的值,获取方式请参见获取token。 |
参数 |
是否必选 |
参数类型 |
---|---|---|
kind |
是 |
String |
apiVersion |
是 |
String |
metadata |
是 |
|
spec |
是 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
uid |
否 |
String |
唯一id标识 |
name |
否 |
String |
插件名称 |
alias |
否 |
String |
插件别名 |
labels |
否 |
Map<String,String> |
插件标签,key/value对格式,接口保留字段,填写不会生效 |
annotations |
否 |
Map<String,String> |
插件注解,由key/value组成
|
updateTimestamp |
否 |
String |
更新时间 |
creationTimestamp |
否 |
String |
创建时间 |
响应参数
状态码: 201
参数 |
参数类型 |
描述 |
---|---|---|
kind |
String |
API类型,固定值“Addon”,该值不可修改。 |
apiVersion |
String |
API版本,固定值“v3”,该值不可修改。 |
metadata |
基本信息,为集合类的元素类型,包含一组由不同名称定义的属性 |
|
spec |
spec是集合类的元素类型,内容为插件实例具体信息,实例的详细描述主体部分都在spec中给出 |
|
status |
插件实例状态 |
参数 |
参数类型 |
描述 |
---|---|---|
uid |
String |
唯一id标识 |
name |
String |
插件名称 |
alias |
String |
插件别名 |
labels |
Map<String,String> |
插件标签,key/value对格式,接口保留字段,填写不会生效 |
annotations |
Map<String,String> |
插件注解,由key/value组成
|
updateTimestamp |
String |
更新时间 |
creationTimestamp |
String |
创建时间 |
参数 |
---|
clusterID |
version |
addonTemplateName |
addonTemplateType |
addonTemplateLogo |
addonTemplateLabels |
description |
values |
请求示例
安装1.17.15版本的coredns插件,插件规格为2500qps,插件实例数指定为2。
{
"kind" : "Addon",
"apiVersion" : "v3",
"metadata" : {
"annotations" : {
"addon.install/type" : "install"
}
},
"spec" : {
"clusterID" : "1b2ec02d-a3b2-11ec-b0d0-0255ac100099",
"version" : "1.17.15",
"addonTemplateName" : "coredns",
"values" : {
"basic" : {
"cluster_ip" : "10.247.3.10",
"image_version" : "1.17.15",
"platform" : "linux-amd64",
"swr_addr" : "<Replace_SWR_address>",
"swr_user" : "hwofficial",
"rbac_enabled" : true
},
"flavor" : {
"name" : 2500,
"replicas" : 2,
"resources" : [ {
"limitsCpu" : "500m",
"limitsMem" : "512Mi",
"name" : "coredns",
"requestsCpu" : "500m",
"requestsMem" : "512Mi"
} ]
},
"custom" : {
"stub_domains" : { },
"upstream_nameservers" : [ ],
"cluster_id" : "1b2ec02d-a3b2-11ec-b0d0-0255ac100099",
"tenant_id" : "0504201b6c80256b2f08c0099f0c8fe4"
}
}
}
}
响应示例
状态码: 201
OK
{
"kind" : "Addon",
"apiVersion" : "v3",
"metadata" : {
"uid" : "b748aaea-a984-11ec-987b-0255ac1000bc",
"name" : "coredns",
"alias" : "coredns",
"creationTimestamp" : "2022-03-22T02:06:41Z",
"updateTimestamp" : "2022-03-22T02:06:41Z"
},
"spec" : {
"clusterID" : "1b2ec02d-a3b2-11ec-b0d0-0255ac100099",
"version" : "1.17.15",
"addonTemplateName" : "coredns",
"addonTemplateType" : "helm",
"addonTemplateLogo" : "",
"addonTemplateLabels" : [ "ServiceDiscovery" ],
"description" : "CoreDNS is a DNS server that chains plugins and provides Kubernetes
DNS Services",
"values" : {
"basic" : {
"cluster_ip" : "10.247.3.10",
"image_version" : "1.17.15",
"platform" : "linux-amd64",
"rbac_enabled" : true,
"swr_addr" : "",
"swr_user" : "hwofficial"
},
"custom" : {
"cluster_id" : "1b2ec02d-a3b2-11ec-b0d0-0255ac100099",
"stub_domains" : { },
"tenant_id" : "0504201b6c80256b2f08c0099f0c8fe4",
"upstream_nameservers" : [ ]
},
"flavor" : {
"name" : 2500,
"replicas" : 2,
"resources" : [ {
"limitsCpu" : "500m",
"limitsMem" : "512Mi",
"name" : "coredns",
"requestsCpu" : "500m",
"requestsMem" : "512Mi"
} ]
}
}
},
"status" : {
"status" : "installing",
"Reason" : "",
"message" : "",
"targetVersions" : null,
"currentVersion" : {
"version" : "1.17.15",
"input" : {
"basic" : {
"cluster_ip" : "10.247.3.10",
"image_version" : "1.17.15",
"platform" : "linux-amd64",
"swr_addr" : "",
"swr_user" : "hwofficial"
},
"parameters" : {
"custom" : {
"stub_domains" : "",
"upstream_nameservers" : ""
},
"flavor1" : {
"name" : 2500,
"replicas" : 2,
"resources" : [ {
"limitsCpu" : "500m",
"limitsMem" : "512Mi",
"name" : "coredns",
"requestsCpu" : "500m",
"requestsMem" : "512Mi"
} ]
},
"flavor2" : {
"name" : 5000,
"replicas" : 2,
"resources" : [ {
"limitsCpu" : "1000m",
"limitsMem" : "1024Mi",
"name" : "coredns",
"requestsCpu" : "1000m",
"requestsMem" : "1024Mi"
} ]
},
"flavor3" : {
"name" : 10000,
"replicas" : 2,
"resources" : [ {
"limitsCpu" : "2000m",
"limitsMem" : "2048Mi",
"name" : "coredns",
"requestsCpu" : "2000m",
"requestsMem" : "2048Mi"
} ]
},
"flavor4" : {
"name" : 20000,
"replicas" : 4,
"resources" : [ {
"limitsCpu" : "2000m",
"limitsMem" : "2048Mi",
"name" : "coredns",
"requestsCpu" : "2000m",
"requestsMem" : "2048Mi"
} ]
}
}
},
"stable" : true,
"translate" : {
"en_US" : {
"addon" : {
"changeLog" : "Supported CCE clusters of v1.21.",
"description" : "CoreDNS is a DNS server that chains plugins and provides Kubernetes DNS Services"
},
"description" : {
"Parameters.custom.stub_domains" : "The target nameserver may itself be a Kubernetes
service. For instance, you can run your own copy of dnsmasq to export custom DNS names into the ClusterDNS
namespace, a JSON map using a DNS suffix key (e.g. “acme.local”) and a value consisting of a JSON array of DNS IPs.",
"Parameters.custom.upstream_nameservers" : "If specified, then the values specified
replace the nameservers taken by default from the node’s /etc/resolv.conf. Limits:a maximum of three
upstream nameservers can be specified, A JSON array of DNS IPs.",
"Parameters.flavor1.description" : "Concurrent domain name resolution ability - External
domain name:2500 qps, Internal domain name:10000 qps",
"Parameters.flavor1.name" : 2500,
"Parameters.flavor2.description" : "Concurrent domain name resolution ability -
External domain name:5000 qps, Internal domain name:20000 qps",
"Parameters.flavor2.name" : 5000,
"Parameters.flavor3.description" : "Concurrent domain name resolution ability -
External domain name:10000 qps, Internal domain name:40000 qps",
"Parameters.flavor3.name" : 10000,
"Parameters.flavor4.description" : "Concurrent domain name resolution ability -
External domain name:20000 qps, Internal domain name:80000 qps",
"Parameters.flavor4.name" : 20000
},
"key" : {
"Parameters.custom.stub_domains" : "stub domain",
"Parameters.custom.upstream_nameservers" : "upstream nameservers"
}
},
"fr_FR" : {
"addon" : {
"changeLog" : "Prise en charge du cluster 1.21.",
"description" : "Un serveur DNS qui enchaîne les plug-ins et fournit des services DNS Kubernetes."
},
"description" : {
"Parameters.custom.stub_domains" : "Le serveur de noms cible peut lui-même être un service
Kubernetes. Par exemple, vous pouvez exécuter votre propre copie de dnsmasq pour exporter des noms
DNS personnalisés dans l'espace de noms ClusterDNS, une carte JSON à l'aide d'une clé de suffixe DNS
(par exemple, «acme.local») et une valeur constituée d'un tableau JSON d'adresses IP DNS.",
"Parameters.custom.upstream_nameservers" : "Si spécifié, les valeurs spécifiées remplacent
les serveurs de noms pris par défaut dans le fichier /etc/resolv.conf du nœud. Limites: un maximum de trois
serveurs de noms en amont peuvent être spécifiés, un tableau JSON d'adresses IP DNS.",
"Parameters.flavor1.description" : "Capacité de résolution de nom de domaine simultanée -
Nom de domaine externe: 2500 qps, Nom de domaine interne: 10000 qp",
"Parameters.flavor1.name" : 2500,
"Parameters.flavor2.description" : "Capacité de résolution de nom de domaine simultanée -
Nom de domaine externe: 5000 qps, Nom de domaine interne: 20000 qp",
"Parameters.flavor2.name" : 5000,
"Parameters.flavor3.description" : "Capacité de résolution de nom de domaine simultanée -
Nom de domaine externe: 10000 qps, Nom de domaine interne: 40000 qp",
"Parameters.flavor3.name" : 10000,
"Parameters.flavor4.description" : "Capacité de résolution de nom de domaine simultanée -
Nom de domaine externe: 20000 qps, Nom de domaine interne: 80000 qp",
"Parameters.flavor4.name" : 20000
},
"key" : {
"Parameters.custom.stub_domains" : "domaine stub",
"Parameters.custom.upstream_nameservers" : "serveurs de noms en amont"
}
},
"zh_CN" : {
"addon" : {
"changeLog" : "",
"description" : ""
},
"description" : {
"Parameters.custom.stub_domains" : "",
"Parameters.custom.upstream_nameservers" : "",
"Parameters.flavor1.description" : "",
"Parameters.flavor1.name" : 2500,
"Parameters.flavor2.description" : "",
"Parameters.flavor2.name" : 5000,
"Parameters.flavor3.description" : "",
"Parameters.flavor3.name" : 10000,
"Parameters.flavor4.description" : "",
"Parameters.flavor4.name" : 20000
},
"key" : {
"Parameters.custom.stub_domains" : "",
"Parameters.custom.upstream_nameservers" : ""
}
}
},
"supportVersions" : null,
"creationTimestamp" : "2021-12-14T13:43:15Z",
"updateTimestamp" : "2022-01-11T14:32:10Z"
}
}
}
SDK代码示例
SDK代码示例如下。
安装1.17.15版本的coredns插件,插件规格为2500qps,插件实例数指定为2。
package com.huaweicloud.sdk.test;
import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.auth.BasicCredentials;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
import com.huaweicloud.sdk.cce.v3.region.CceRegion;
import com.huaweicloud.sdk.cce.v3.*;
import com.huaweicloud.sdk.cce.v3.model.*;
import java.util.Map;
import java.util.HashMap;
public class CreateAddonInstanceSolution {
public static void main(String[] args) {
String ak = "<YOUR AK>";
String sk = "<YOUR SK>";
ICredential auth = new BasicCredentials()
.withAk(ak)
.withSk(sk);
CceClient client = CceClient.newBuilder()
.withCredential(auth)
.withRegion(CceRegion.valueOf("cn-north-4"))
.build();
CreateAddonInstanceRequest request = new CreateAddonInstanceRequest();
InstanceRequest body = new InstanceRequest();
Map<String, Object> listSpecValues = new HashMap<>();
listSpecValues.put("basic", "{\"rbac_enabled\":true,\"swr_user\":\"hwofficial\",
\"image_version\":\"1.17.15\",\"cluster_ip\":\"10.247.3.10\",\"platform\":\"linux-amd64\",
\"swr_addr\":\"<Replace_SWR_address>\"}");
listSpecValues.put("flavor", "{\"replicas\":2,\"name\":2500,\"resources\":[{\"limitsCpu\":
\"500m\",\"name\":\"coredns\",\"limitsMem\":\"512Mi\",\"requestsMem\":\"512Mi\",\"requestsCpu\":\"500m\"}]}");
listSpecValues.put("custom", "{\"tenant_id\":\"0504201b6c80256b2f08c0099f0c8fe4\",\"cluster_id\"
:\"1b2ec02d-a3b2-11ec-b0d0-0255ac100099\",\"stub_domains\":{},\"upstream_nameservers\":[]}");
InstanceRequestSpec specbody = new InstanceRequestSpec();
specbody.withVersion("1.17.15")
.withClusterID("1b2ec02d-a3b2-11ec-b0d0-0255ac100099")
.withValues(listSpecValues)
.withAddonTemplateName("coredns");
Map<String, String> listMetadataAnnotations = new HashMap<>();
listMetadataAnnotations.put("addon.install/type", "install");
AddonMetadata metadatabody = new AddonMetadata();
metadatabody.withAnnotations(listMetadataAnnotations);
body.withSpec(specbody);
body.withMetadata(metadatabody);
body.withApiVersion("v3");
body.withKind("Addon");
request.withBody(body);
try {
CreateAddonInstanceResponse response = client.createAddonInstance(request);
System.out.println(response.toString());
} catch (ConnectionException e) {
e.printStackTrace();
} catch (RequestTimeoutException e) {
e.printStackTrace();
} catch (ServiceResponseException e) {
e.printStackTrace();
System.out.println(e.getHttpStatusCode());
System.out.println(e.getRequestId());
System.out.println(e.getErrorCode());
System.out.println(e.getErrorMsg());
}
}
}
安装1.17.15版本的coredns插件,插件规格为2500qps,插件实例数指定为2。
# coding: utf-8
from huaweicloudsdkcore.auth.credentials import BasicCredentials
from huaweicloudsdkcce.v3.region.cce_region import CceRegion
from huaweicloudsdkcore.exceptions import exceptions
from huaweicloudsdkcce.v3 import *
if __name__ == "__main__":
ak = "<YOUR AK>"
sk = "<YOUR SK>"
credentials = BasicCredentials(ak, sk) \
client = CceClient.new_builder() \
.with_credentials(credentials) \
.with_region(CceRegion.value_of("cn-north-4")) \
.build()
try:
request = CreateAddonInstanceRequest()
listValuesSpec = {
"basic": "{\"rbac_enabled\":true,\"swr_user\":\"hwofficial\",\"image_version\":\"1.17.15\",
\"cluster_ip\":\"10.247.3.10\",\"platform\":\"linux-amd64\",\"swr_addr\":\"<Replace_SWR_address>\"}",
"flavor": "{\"replicas\":2,\"name\":2500,\"resources\":[{\"limitsCpu\":\"500m\",\"name\":
\"coredns\",\"limitsMem\":\"512Mi\",\"requestsMem\":\"512Mi\",\"requestsCpu\":\"500m\"}]}",
"custom": "{\"tenant_id\":\"0504201b6c80256b2f08c0099f0c8fe4\",\"cluster_id\":
\"1b2ec02d-a3b2-11ec-b0d0-0255ac100099\",\"stub_domains\":{},\"upstream_nameservers\":[]}"
}
specbody = InstanceRequestSpec(
version="1.17.15",
cluster_id="1b2ec02d-a3b2-11ec-b0d0-0255ac100099",
values=listValuesSpec,
addon_template_name="coredns"
)
listAnnotationsMetadata = {
"addon.install/type": "install"
}
metadatabody = AddonMetadata(
annotations=listAnnotationsMetadata
)
request.body = InstanceRequest(
spec=specbody,
metadata=metadatabody,
api_version="v3",
kind="Addon"
)
response = client.create_addon_instance(request)
print(response)
except exceptions.ClientRequestException as e:
print(e.status_code)
print(e.request_id)
print(e.error_code)
print(e.error_msg)
安装1.17.15版本的coredns插件,插件规格为2500qps,插件实例数指定为2。
package main
import (
"fmt"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
cce "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3"
"github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3/model"
region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v3/region"
)
func main() {
ak := "<YOUR AK>"
sk := "<YOUR SK>"
auth := basic.NewCredentialsBuilder().
WithAk(ak).
WithSk(sk).
Build()
client := cce.NewCceClient(
cce.CceClientBuilder().
WithRegion(region.ValueOf("cn-north-4")).
WithCredential(auth).
Build())
request := &model.CreateAddonInstanceRequest{}
var listValuesSpec = map[string]interface{}{
"basic": "{\"rbac_enabled\":true,\"swr_user\":\"hwofficial\",\"image_version\":\"1.17.15\",
\"cluster_ip\":\"10.247.3.10\",\"platform\":\"linux-amd64\",\"swr_addr\":\"<Replace_SWR_address>\"}",
"flavor": "{\"replicas\":2,\"name\":2500,\"resources\":[{\"limitsCpu\":\"500m\",\"name\":\"coredns\",
\"limitsMem\":\"512Mi\",\"requestsMem\":\"512Mi\",\"requestsCpu\":\"500m\"}]}",
"custom": "{\"tenant_id\":\"0504201b6c80256b2f08c0099f0c8fe4\",\"cluster_id\":
\"1b2ec02d-a3b2-11ec-b0d0-0255ac100099\",\"stub_domains\":{},\"upstream_nameservers\":[]}",
}
versionSpec:= "1.17.15"
specbody := &model.InstanceRequestSpec{
Version: &versionSpec,
ClusterID: "1b2ec02d-a3b2-11ec-b0d0-0255ac100099",
Values: listValuesSpec,
AddonTemplateName: "coredns",
}
var listAnnotationsMetadata = map[string]string{
"addon.install/type": "install",
}
metadatabody := &model.AddonMetadata{
Annotations: listAnnotationsMetadata,
}
request.Body = &model.InstanceRequest{
Spec: specbody,
Metadata: metadatabody,
ApiVersion: "v3",
Kind: "Addon",
}
response, err := client.CreateAddonInstance(request)
if err == nil {
fmt.Printf("%+v\n", response)
} else {
fmt.Println(err)
}
}
更多编程语言的SDK代码示例,请参见API Explorer的代码示例页签,可生成自动对应的SDK代码示例。
状态码
状态码 |
描述 |
---|---|
201 |
OK |
错误码
请参见错误码。