Creating an Image Cache
Function
This API is used to create an image cache. During the creation, a temporary pod is started for the image cache in the specified cluster. After the image cache is created, you can use it to greatly reduce the time required for downloading the container images during workload creation and quickly start the containers. A tenant can create a maximum of 50 image caches.
Calling Method
For details, see Calling APIs.
URI
POST /v5/imagecaches
Request Parameters
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
Content-Type |
Yes |
String |
Details: Message body type or format Constraints: The GET method is not verified. Options:
Default value: N/A |
X-Auth-Token |
Yes |
String |
Details: 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. For details, see Obtaining a User Token. Constraints: None Options: N/A Default value: N/A |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
name |
Yes |
String |
Details: Image cache name Constraints: None Options: Enter 1 to 128 characters starting with a lowercase letter and not ending with a hyphen (-). Only lowercase letters, digits, and hyphens (-) are allowed. The image cache name must be unique. Default value: N/A |
images |
Yes |
Array of strings |
List of container images in an image cache |
image_cache_size |
No |
Integer |
Details: Size of the disk for an image cache, in GiB. The cached objects are the decompressed image files. The image cache size should be greater than or equal to three times the total size of all container images in the image cache. Constraints: None Options: 20 to 400 Default value: 20 |
retention_days |
No |
Integer |
Details: The validity period of an image cache. If this parameter is not specified or the value is 0, the image cache is permanently valid. After the validity period expires, the image cache will expire automatically and be deleted. Constraints: None Options: 0 to 10000 Default value: 0 |
building_config |
Yes |
ImageCacheBuildingConfig object |
Configuration for creating an image cache |
Parameter |
Mandatory |
Type |
Description |
---|---|---|---|
cluster |
Yes |
String |
Details: UID of a CCE Autopilot cluster where a temporary pod is started for creating an image cache Constraints: The CCE Autopilot cluster version must be v1.28.8-r0 or v1.31.4-r0 or later. Options: N/A Default value: N/A |
image_pull_secrets |
No |
Array of strings |
List of access credentials for downloading the images to be cached. If no access credential is specified or no valid credential is available, only public images can be downloaded. |
Response Parameters
Status code: 201
Parameter |
Type |
Description |
---|---|---|
image_cache |
ImageCacheDetail object |
Image cache information |
Parameter |
Type |
Description |
---|---|---|
name |
String |
Image cache name |
id |
String |
Image cache ID |
created_at |
String |
Image cache creation timestamp |
images |
Array of strings |
List of container images in an image cache |
image_cache_size |
Integer |
Size of the disk for an image cache, in GiB |
retention_days |
Integer |
Details: The validity period of an image cache. If this parameter is not specified or the value is 0, the image cache is permanently valid. After the validity period expires, the image cache will expire automatically and be deleted. Constraints: None Options: 0 to 10000 Default value: 0 |
building_config |
ImageCacheBuildingConfig object |
Configuration for creating an image cache |
status |
String |
Details: Status of an image cache Constraints: None Options:
Default value: N/A |
message |
String |
Error message indicating that an image cache fails to be created or is abnormal |
Parameter |
Type |
Description |
---|---|---|
cluster |
String |
Details: UID of a CCE Autopilot cluster where a temporary pod is started for creating an image cache Constraints: The CCE Autopilot cluster version must be v1.28.8-r0 or v1.31.4-r0 or later. Options: N/A Default value: N/A |
image_pull_secrets |
Array of strings |
List of access credentials for downloading the images to be cached. If no access credential is specified or no valid credential is available, only public images can be downloaded. |
Example Requests
Create an image cache named test-imagecache1. The cache objects include two container images, the validity period is set to seven days, and the storage disk size of the image cache backend is 25 GiB.
/v5/imagecaches { "name" : "test-imagecache1", "images" : [ "swr.region.com/test/nginx:v1", "busybox:latest" ], "image_cache_size" : 25, "retention_days" : 7, "building_config" : { "cluster" : "8b3b4b2d-e39d-11ef-a9ac-0255ac100113", "image_pull_secrets" : [ "default:default-secret", "test:my-secret" ] } }
Example Responses
Status code: 201
Created
{ "image_cache" : { "name" : "test-imagecache1", "id" : "c271e39e-1a6e-4d3d-8fa8-2a36329c68d2", "created_at" : "2024-11-25 06:32:34.923248 +0000 UTC", "images" : [ "swr.region.com/test/nginx:v1", "busybox:latest" ], "image_cache_size" : 25, "retention_days" : 7, "building_config" : { "cluster" : "8b3b4b2d-e39d-11ef-a9ac-0255ac100113", "image_pull_secrets" : [ "default:default-secret", "test:my-secret" ] }, "status" : "Creating" } }
SDK Sample Code
The SDK sample code is as follows.
Create an image cache named test-imagecache1. The cache objects include two container images, the validity period is set to seven days, and the storage disk size of the image cache backend is 25 GiB.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
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.v5.region.CceRegion; import com.huaweicloud.sdk.cce.v5.*; import com.huaweicloud.sdk.cce.v5.model.*; import java.util.List; import java.util.ArrayList; public class CreateImageCacheSolution { public static void main(String[] args) { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment String ak = System.getenv("CLOUD_SDK_AK"); String sk = System.getenv("CLOUD_SDK_SK"); ICredential auth = new BasicCredentials() .withAk(ak) .withSk(sk); CceClient client = CceClient.newBuilder() .withCredential(auth) .withRegion(CceRegion.valueOf("<YOUR REGION>")) .build(); CreateImageCacheRequest request = new CreateImageCacheRequest(); CreateImageCacheRequestBody body = new CreateImageCacheRequestBody(); List<String> listBuildingConfigImagePullSecrets = new ArrayList<>(); listBuildingConfigImagePullSecrets.add("default:default-secret"); listBuildingConfigImagePullSecrets.add("test:my-secret"); ImageCacheBuildingConfig buildingConfigbody = new ImageCacheBuildingConfig(); buildingConfigbody.withCluster("8b3b4b2d-e39d-11ef-a9ac-0255ac100113") .withImagePullSecrets(listBuildingConfigImagePullSecrets); List<String> listbodyImages = new ArrayList<>(); listbodyImages.add("swr.region.com/test/nginx:v1"); listbodyImages.add("busybox:latest"); body.withBuildingConfig(buildingConfigbody); body.withRetentionDays(7); body.withImageCacheSize(25); body.withImages(listbodyImages); body.withName("test-imagecache1"); request.withBody(body); try { CreateImageCacheResponse response = client.createImageCache(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()); } } } |
Create an image cache named test-imagecache1. The cache objects include two container images, the validity period is set to seven days, and the storage disk size of the image cache backend is 25 GiB.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# coding: utf-8 import os from huaweicloudsdkcore.auth.credentials import BasicCredentials from huaweicloudsdkcce.v5.region.cce_region import CceRegion from huaweicloudsdkcore.exceptions import exceptions from huaweicloudsdkcce.v5 import * if __name__ == "__main__": # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak = os.environ["CLOUD_SDK_AK"] sk = os.environ["CLOUD_SDK_SK"] credentials = BasicCredentials(ak, sk) client = CceClient.new_builder() \ .with_credentials(credentials) \ .with_region(CceRegion.value_of("<YOUR REGION>")) \ .build() try: request = CreateImageCacheRequest() listImagePullSecretsBuildingConfig = [ "default:default-secret", "test:my-secret" ] buildingConfigbody = ImageCacheBuildingConfig( cluster="8b3b4b2d-e39d-11ef-a9ac-0255ac100113", image_pull_secrets=listImagePullSecretsBuildingConfig ) listImagesbody = [ "swr.region.com/test/nginx:v1", "busybox:latest" ] request.body = CreateImageCacheRequestBody( building_config=buildingConfigbody, retention_days=7, image_cache_size=25, images=listImagesbody, name="test-imagecache1" ) response = client.create_image_cache(request) print(response) except exceptions.ClientRequestException as e: print(e.status_code) print(e.request_id) print(e.error_code) print(e.error_msg) |
Create an image cache named test-imagecache1. The cache objects include two container images, the validity period is set to seven days, and the storage disk size of the image cache backend is 25 GiB.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
package main import ( "fmt" "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic" cce "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v5" "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v5/model" region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/cce/v5/region" ) func main() { // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security. // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment ak := os.Getenv("CLOUD_SDK_AK") sk := os.Getenv("CLOUD_SDK_SK") auth := basic.NewCredentialsBuilder(). WithAk(ak). WithSk(sk). Build() client := cce.NewCceClient( cce.CceClientBuilder(). WithRegion(region.ValueOf("<YOUR REGION>")). WithCredential(auth). Build()) request := &model.CreateImageCacheRequest{} var listImagePullSecretsBuildingConfig = []string{ "default:default-secret", "test:my-secret", } buildingConfigbody := &model.ImageCacheBuildingConfig{ Cluster: "8b3b4b2d-e39d-11ef-a9ac-0255ac100113", ImagePullSecrets: &listImagePullSecretsBuildingConfig, } var listImagesbody = []string{ "swr.region.com/test/nginx:v1", "busybox:latest", } retentionDaysCreateImageCacheRequestBody:= int32(7) imageCacheSizeCreateImageCacheRequestBody:= int32(25) request.Body = &model.CreateImageCacheRequestBody{ BuildingConfig: buildingConfigbody, RetentionDays: &retentionDaysCreateImageCacheRequestBody, ImageCacheSize: &imageCacheSizeCreateImageCacheRequestBody, Images: listImagesbody, Name: "test-imagecache1", } response, err := client.CreateImageCache(request) if err == nil { fmt.Printf("%+v\n", response) } else { fmt.Println(err) } } |
For SDK sample code of more programming languages, see the Sample Code tab in API Explorer. SDK sample code can be automatically generated.
Status Codes
Status Code |
Description |
---|---|
201 |
Created |
Error Codes
See Error Codes.
Feedback
Was this page helpful?
Provide feedbackThank you very much for your feedback. We will continue working to improve the documentation.See the reply and handling status in My Cloud VOC.
For any further questions, feel free to contact us through the chatbot.
Chatbot