功能介紹
將插件實例回滾到升級前的版本。只有在當前插件實例版本支持回滾到升級前的版本(status.isRollbackable為true),且插件實例狀態(tài)為running(運行中)、available(可用)、abnormal(不可用)、upgradeFailed(升級失敗)、rollbackFailed(回滾失?。r支持回滾。
調(diào)用方法
請參見如何調(diào)用API。
URI
POST /api/v3/addons/{id}/operation/rollback
|
參數(shù) |
是否必選 |
參數(shù)類型 |
描述 |
|---|---|---|---|
|
id |
是 |
String |
插件實例ID |
請求參數(shù)
|
參數(shù) |
是否必選 |
參數(shù)類型 |
描述 |
|---|---|---|---|
|
X-Auth-Token |
是 |
String |
調(diào)用接口的認證方式分為Token和AK/SK兩種,如果您使用的Token方式,此參數(shù)為必填,請?zhí)顚慣oken的值,獲取方式請參見獲取token。 |
|
參數(shù) |
是否必選 |
參數(shù)類型 |
描述 |
|---|---|---|---|
|
clusterID |
是 |
String |
集群ID |
響應參數(shù)
狀態(tài)碼: 200
|
參數(shù) |
參數(shù)類型 |
描述 |
|---|---|---|
|
kind |
String |
API類型,固定值“Addon”,該值不可修改。 |
|
apiVersion |
String |
API版本,固定值“v3”,該值不可修改。 |
|
metadata |
基本信息,為集合類的元素類型,包含一組由不同名稱定義的屬性 |
|
|
spec |
spec是集合類的元素類型,內(nèi)容為插件實例具體信息,實例的詳細描述主體部分都在spec中給出 |
|
|
status |
插件實例狀態(tài) |
|
參數(shù) |
參數(shù)類型 |
描述 |
|---|---|---|
|
uid |
String |
唯一id標識 |
|
name |
String |
插件名稱 |
|
alias |
String |
插件別名 |
|
labels |
Map<String,String> |
插件標簽,key/value對格式,接口保留字段,填寫不會生效 |
|
annotations |
Map<String,String> |
插件注解,由key/value組成
|
|
updateTimestamp |
String |
更新時間 |
|
creationTimestamp |
String |
創(chuàng)建時間 |
|
參數(shù) |
參數(shù)類型 |
描述 |
|---|---|---|
|
clusterID |
String |
集群id |
|
version |
String |
插件模板版本號,如1.0.0 |
|
addonTemplateName |
String |
插件模板名稱,如coredns |
|
addonTemplateType |
String |
插件模板類型 |
|
addonTemplateLogo |
String |
插件模板logo圖片的地址 |
|
addonTemplateLabels |
Array of strings |
插件模板所屬類型 |
|
description |
String |
插件模板描述 |
|
values |
Map<String,Object> |
插件模板安裝參數(shù)(各插件不同),請根據(jù)具體插件模板信息填寫安裝參數(shù)。 |
|
參數(shù) |
參數(shù)類型 |
描述 |
|---|---|---|
|
status |
String |
插件實例狀態(tài), 取值如下
|
|
Reason |
String |
插件安裝失敗原因 |
|
message |
String |
安裝錯誤詳情 |
|
targetVersions |
Array of strings |
此插件版本,支持升級的集群版本 |
|
currentVersion |
當前插件實例使用的具體插件版本信息 |
|
|
isRollbackable |
Boolean |
是否支持回滾到插件升級前的插件版本 |
|
previousVersion |
String |
插件升級或回滾前的版本 |
請求示例
{
"clusterID" : "******"
}
響應示例
狀態(tài)碼: 200
插件實例回滾成功
{
"kind" : "Addon",
"apiVersion" : "v3",
"metadata" : {
"uid" : "******",
"name" : "everest",
"alias" : "everest",
"creationTimestamp" : "2023-03-15T02:48:01Z",
"updateTimestamp" : "2023-03-15T04:18:45Z"
},
"spec" : {
"clusterID" : "******",
"version" : "2.1.16",
"addonTemplateName" : "everest",
"addonTemplateType" : "helm",
"addonTemplateLogo" : "******",
"addonTemplateLabels" : [ "Storage" ],
"description" : "Everest is a cloud native container storage system based on CSI, used\nto
support cloud storages services for Kubernetes",
"values" : {
"basic" : {
"base_image" : "euleros",
"bms_url" : "******",
"cluster_version" : "v1.25",
"driver_init_image_version" : "2.1.16",
"ecsEndpoint" : "******",
"euleros_version" : "2.2.5",
"everest_image_version" : "2.1.16",
"evs_url" : "******",
"iam_url" : "******",
"ims_url" : "******",
"obs_url" : "******",
"platform" : "linux-amd64",
"rbac_enabled" : true,
"sfs30_url" : "******",
"sfs_turbo_url" : "******",
"sfs_url" : "******",
"supportHcs" : false,
"swr_addr" : "******",
"swr_user" : "******"
},
"custom" : {
"cluster_id" : "******",
"cluster_version" : "v1.25.3-r0",
"csi_attacher_detach_worker_threads" : "60",
"csi_attacher_worker_threads" : "60",
"default_vpc_id" : "******",
"disable_auto_mount_secret" : false,
"enable_node_attacher" : false,
"flow_control" : { },
"multiAZEnabled" : false,
"over_subscription" : "80",
"project_id" : "******",
"volume_attaching_flow_ctrl" : "0"
},
"flavor" : {
"category" : [ "CCE", "Turbo" ],
"description" : "High avaiable",
"name" : "HA",
"replicas" : 2,
"resources" : [ {
"limitsCpu" : "250m",
"limitsMem" : "1500Mi",
"name" : "everest-csi-controller",
"requestsCpu" : "250m",
"requestsMem" : "600Mi"
}, {
"limitsCpu" : "500m",
"limitsMem" : "300Mi",
"name" : "everest-csi-driver",
"requestsCpu" : "100m",
"requestsMem" : "300Mi"
} ]
},
"multiAZPreferred" : {
"podAntiAffinity" : {
"preferredDuringSchedulingIgnoredDuringExecution" : [ {
"podAffinityTerm" : {
"labelSelector" : {
"matchExpressions" : [ {
"key" : "app",
"operator" : "In",
"values" : [ "everest-csi-controller" ]
} ]
},
"topologyKey" : "topology.kubernetes.io/zone"
},
"weight" : 100
} ]
}
},
"multiAZRequired" : {
"podAntiAffinity" : {
"requiredDuringSchedulingIgnoredDuringExecution" : [ {
"labelSelector" : {
"matchExpressions" : [ {
"key" : "app",
"operator" : "In",
"values" : [ "everest-csi-controller" ]
} ]
},
"topologyKey" : "topology.kubernetes.io/zone"
} ]
}
},
"systemAutoInject" : {
"cluster" : {
"category" : "CCE",
"clusterID" : "******",
"clusterNetworkMode" : "vpc-router",
"clusterVersion" : "v1.25.3-r0"
},
"user" : {
"projectID" : "******"
}
},
"tolerations" : [ {
"effect" : "NoExecute",
"key" : "node.kubernetes.io/not-ready",
"operator" : "Exists",
"tolerationSeconds" : 60
}, {
"effect" : "NoExecute",
"key" : "node.kubernetes.io/unreachable",
"operator" : "Exists",
"tolerationSeconds" : 60
} ]
}
},
"status" : {
"status" : "rollbacking",
"Reason" : "Rollback to 4",
"message" : "",
"targetVersions" : [ "2.1.18", "2.1.19" ],
"isRollbackable" : false,
"previousVersion" : "2.1.19",
"currentVersion" : {
"version" : "2.1.16",
"input" : {
"basic" : {
"bms_url" : "******",
"driver_init_image_version" : "2.1.16",
"ecsEndpoint" : "******",
"everest_image_version" : "2.1.16",
"evs_url" : "******",
"iam_url" : "******",
"ims_url" : "******",
"obs_url" : "******",
"platform" : "linux-amd64",
"sfs30_url" : "******",
"sfs_turbo_url" : "******",
"sfs_url" : "******",
"supportHcs" : false,
"swr_addr" : "******",
"swr_user" : "******"
},
"parameters" : {
"common" : {
"defaultVPCId" : 0
},
"custom" : {
"cluster_id" : "",
"csi_attacher_detach_worker_threads" : "60",
"csi_attacher_worker_threads" : "60",
"default_vpc_id" : "",
"disable_auto_mount_secret" : false,
"enable_node_attacher" : false,
"flow_control" : { },
"multiAZEnabled" : false,
"over_subscription" : "80",
"project_id" : "",
"volume_attaching_flow_ctrl" : "0"
},
"flavor1" : {
"description" : "High avaiable",
"name" : "HA",
"replicas" : 2,
"resources" : [ {
"limitsCpu" : "250m",
"limitsMem" : "1500Mi",
"name" : "everest-csi-controller",
"requestsCpu" : "250m",
"requestsMem" : "600Mi"
}, {
"limitsCpu" : "500m",
"limitsMem" : "300Mi",
"name" : "everest-csi-driver",
"requestsCpu" : "100m",
"requestsMem" : "300Mi"
} ]
},
"flavor2" : {
"description" : "Has only one instance",
"name" : "Single",
"replicas" : 1,
"resources" : [ {
"limitsCpu" : "250m",
"limitsMem" : "600Mi",
"name" : "everest-csi-controller",
"requestsCpu" : "250m",
"requestsMem" : "600Mi"
}, {
"limitsCpu" : "100m",
"limitsMem" : "300Mi",
"name" : "everest-csi-driver",
"requestsCpu" : "100m",
"requestsMem" : "300Mi"
} ]
},
"flavor3" : {
"description" : "custom resources",
"name" : "custom-resources",
"replicas" : 2,
"resources" : [ {
"limitsCpu" : "250m",
"limitsMem" : "2000Mi",
"name" : "everest-csi-controller",
"requestsCpu" : "250m",
"requestsMem" : "1500Mi"
}, {
"limitsCpu" : "500m",
"limitsMem" : "300Mi",
"name" : "everest-csi-driver",
"requestsCpu" : "100m",
"requestsMem" : "300Mi"
} ]
}
}
},
"stable" : true,
"translate" : {
"en_US" : {
"addon" : {
"changeLog" : "******",
"description" : "******"
},
"description" : {
"Parameters.flavor1.description" : "******",
"Parameters.flavor1.name" : "******",
"Parameters.flavor2.description" : "******",
"Parameters.flavor2.name" : "******",
"Parameters.flavor3.name" : "******"
}
},
"zh_CN" : {
"addon" : {
"changeLog" : "******",
"description" : "******"
},
"description" : {
"Parameters.flavor1.description" : "******",
"Parameters.flavor1.name" : "******",
"Parameters.flavor2.description" : "******",
"Parameters.flavor2.name" : "******",
"Parameters.flavor3.description" : "******",
"Parameters.flavor3.name" : "******"
}
}
},
"supportVersions" : null,
"creationTimestamp" : "2023-02-21T16:29:02Z",
"updateTimestamp" : "2023-02-22T06:49:50Z"
}
}
}
SDK代碼示例
SDK代碼示例如下。
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.*;
public class RollbackAddonInstanceSolution {
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();
RollbackAddonInstanceRequest request = new RollbackAddonInstanceRequest();
request.withId("<id>");
AddonInstanceRollbackRequest body = new AddonInstanceRollbackRequest();
body.withClusterID("******");
request.withBody(body);
try {
RollbackAddonInstanceResponse response = client.rollbackAddonInstance(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());
}
}
}
# 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 = RollbackAddonInstanceRequest()
request.id = "<id>"
request.body = AddonInstanceRollbackRequest(
cluster_id="******"
)
response = client.rollback_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)
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.RollbackAddonInstanceRequest{}
request.Id = "<id>"
request.Body = &model.AddonInstanceRollbackRequest{
ClusterID: "******",
}
response, err := client.RollbackAddonInstance(request)
if err == nil {
fmt.Printf("%+v\n", response)
} else {
fmt.Println(err)
}
}
更多編程語言的SDK代碼示例,請參見API Explorer的代碼示例頁簽,可生成自動對應的SDK代碼示例。
狀態(tài)碼
|
狀態(tài)碼 |
描述 |
|---|---|
|
200 |
插件實例回滾成功 |
錯誤碼
請參見錯誤碼。
