功能介紹
根據(jù)提供的插件模板,安裝插件實(shí)例。
調(diào)用方法
請參見如何調(diào)用API。
URI
POST /api/v3/addons
請求參數(shù)
|
參數(shù) |
是否必選 |
參數(shù)類型 |
描述 |
|---|---|---|---|
|
Content-Type |
是 |
String |
消息體的類型(格式) |
|
X-Auth-Token |
是 |
String |
調(diào)用接口的認(rèn)證方式分為Token和AK/SK兩種,如果您使用的Token方式,此參數(shù)為必填,請?zhí)顚慣oken的值,獲取方式請參見獲取token。 |
|
參數(shù) |
是否必選 |
參數(shù)類型 |
|---|---|---|
|
kind |
是 |
String |
|
apiVersion |
是 |
String |
|
metadata |
是 |
|
|
spec |
是 |
|
參數(shù) |
是否必選 |
參數(shù)類型 |
描述 |
|---|---|---|---|
|
uid |
否 |
String |
唯一id標(biāo)識 |
|
name |
否 |
String |
插件名稱 |
|
alias |
否 |
String |
插件別名 |
|
labels |
否 |
Map<String,String> |
插件標(biāo)簽,key/value對格式,接口保留字段,填寫不會(huì)生效 |
|
annotations |
否 |
Map<String,String> |
插件注解,由key/value組成
|
|
updateTimestamp |
否 |
String |
更新時(shí)間 |
|
creationTimestamp |
否 |
String |
創(chuàng)建時(shí)間 |
|
參數(shù) |
是否必選 |
參數(shù)類型 |
描述 |
|---|---|---|---|
|
version |
否 |
String |
待安裝、升級插件的版本號,例如1.0.0
|
|
clusterID |
是 |
String |
集群id |
|
values |
是 |
Map<String,Object> |
插件模板安裝參數(shù)(各插件不同),升級插件時(shí)需要填寫全量安裝參數(shù),未填寫參數(shù)將使用插件模板中的默認(rèn)值,當(dāng)前插件安裝參數(shù)可通過查詢插件實(shí)例接口獲取。 |
|
addonTemplateName |
是 |
String |
待安裝插件模板名稱,如coredns |
響應(yīng)參數(shù)
狀態(tài)碼: 201
|
參數(shù) |
參數(shù)類型 |
描述 |
|---|---|---|
|
kind |
String |
API類型,固定值“Addon”,該值不可修改。 |
|
apiVersion |
String |
API版本,固定值“v3”,該值不可修改。 |
|
metadata |
基本信息,為集合類的元素類型,包含一組由不同名稱定義的屬性 |
|
|
spec |
spec是集合類的元素類型,內(nèi)容為插件實(shí)例具體信息,實(shí)例的詳細(xì)描述主體部分都在spec中給出 |
|
|
status |
插件實(shí)例狀態(tài) |
|
參數(shù) |
參數(shù)類型 |
描述 |
|---|---|---|
|
uid |
String |
唯一id標(biāo)識 |
|
name |
String |
插件名稱 |
|
alias |
String |
插件別名 |
|
labels |
Map<String,String> |
插件標(biāo)簽,key/value對格式,接口保留字段,填寫不會(huì)生效 |
|
annotations |
Map<String,String> |
插件注解,由key/value組成
|
|
updateTimestamp |
String |
更新時(shí)間 |
|
creationTimestamp |
String |
創(chuàng)建時(shí)間 |
|
參數(shù) |
|---|
|
clusterID |
|
version |
|
addonTemplateName |
|
addonTemplateType |
|
addonTemplateLogo |
|
addonTemplateLabels |
|
description |
|
values |
請求示例
安裝1.17.15版本的coredns插件,插件規(guī)格為2500qps,插件實(shí)例數(shù)指定為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"
}
}
}
}
響應(yīng)示例
狀態(tài)碼: 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插件,插件規(guī)格為2500qps,插件實(shí)例數(shù)指定為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插件,插件規(guī)格為2500qps,插件實(shí)例數(shù)指定為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插件,插件規(guī)格為2500qps,插件實(shí)例數(shù)指定為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的代碼示例頁簽,可生成自動(dòng)對應(yīng)的SDK代碼示例。
狀態(tài)碼
|
狀態(tài)碼 |
描述 |
|---|---|
|
201 |
OK |
錯(cuò)誤碼
請參見錯(cuò)誤碼。
最新文章
- 如何創(chuàng)建網(wǎng)站
- ModelArts模型訓(xùn)練_創(chuàng)建訓(xùn)練作業(yè)_如何創(chuàng)建訓(xùn)練作業(yè)
- 如何使用模板創(chuàng)建函數(shù)_模板創(chuàng)建函數(shù)_函數(shù)工作流 FunctionGraph-華為云
- 容器鏡像創(chuàng)建用戶并授權(quán)使用SWR_華為云SWR_容器鏡像創(chuàng)建授權(quán)
- 如何創(chuàng)建用戶并授權(quán)使用應(yīng)用運(yùn)維管理服務(wù)_AOM_用戶權(quán)限_創(chuàng)建用戶_權(quán)限
- 如何創(chuàng)建用戶并授權(quán)使用應(yīng)用管理與運(yùn)維平臺(tái)_應(yīng)用管理與運(yùn)維平臺(tái)_創(chuàng)建用戶_用戶授權(quán)
