Install

Alauda Container Platform (ACP) Object Storage with MinIO is an object storage service based on the Apache License v2.0 open-source protocol. It is compatible with the Amazon S3 cloud storage service interface and is ideal for storing large volumes of unstructured data, such as images, videos, log files, backup data, and container/virtual machine images. An object file can be of any size, ranging from a few kilobytes to a maximum of 5 terabytes.

Prerequisites

MinIO is built on underlying storage, so please ensure that a storage class has been created in the current cluster. TopoLVM is recommended.

Deploy Operator

  1. In the left navigation bar, click Storage > Object Storage.

  2. Click Configure Now.

  3. On the Deploy MinIO Operator wizard page, click Deploy Operator at the bottom right.

    • Once the page automatically proceeds to the next step, it indicates that the Operator deployment was successful.

    • If the deployment fails, refer to the interface prompts to Clean Up Deployed Information and Retry, and redeploy the Operator.

Create Cluster

  1. On the Create Cluster wizard page, configure the basic information.

    ParameterDescription
    Access KeyAccess key ID. A unique identifier associated with a private access key; used with the access key ID to encrypt and sign requests.
    Secret KeyPrivate access key used in conjunction with the access key ID to encrypt and sign requests, identify the sender, and prevent request tampering.
  2. In the Resource Configuration area, configure specifications as per the following instructions.

    ParameterDescription
    Small scaleSuitable for handling up to 100,000 objects, supporting concurrent access of no more than 50 in test environments or data backup scenarios. The CPU resource request and limit are set to 2 cores by default, and the memory resource request and limit are set to 4 Gi.
    Medium scaleDesigned for enterprise-level applications requiring storage of 1,000,000 objects and capable of handling up to 200 concurrent requests. The CPU resource request and limit are set to 4 cores by default, and the memory resource request and limit are set to 8 Gi.
    Large scaleDesigned for group users with storage needs of 10,000,000 objects and handling up to 500 concurrent requests, suitable for high-load scenarios. The CPU resource request and limit are set to 8 cores by default, and the memory resource request and limit are set to 16 Gi.
    CustomOffers flexible configuration options for professional users with specific needs, ensuring precise matching of service scale and performance requirements. Note: When configuring custom specifications, ensure that:
    • The CPU resource request is greater than 100 m.
    • The memory resource request is greater than or equal to 2 Gi.
    • The CPU and memory resource limits are greater than or equal to the resource requests. |
  3. In the Storage Pool area, configure related information as per the following instructions.

    ParameterDescription
    Instance NumberIncreasing the number of instances in a MinIO cluster can significantly enhance system performance and reliability, ensuring high data availability. However, too many instances can lead to the following issues:
    • Increased resource consumption.
    • If a node hosts multiple instances, a node failure may cause multiple instances to go offline simultaneously, reducing overall cluster reliability.
      Note:
    • The minimum number of instances that can be entered is 4.
    • If the number of instances is greater than 16, the entered value must be a multiple of 8.
    • When adding additional storage pools, the number of instances must be no less than the first storage pool's number of instances. | | Single Storage Volume | Capacity of a single storage volume PVC. Each storage service manages one storage volume. After entering the capacity of a single storage volume, the platform will automatically calculate the storage pool capacity and other information, which can be viewed in the Storage Pool Overview. | | Underlying Storage | The underlying storage used by the MinIO cluster. Please select a storage class that has been created in the current cluster. TopoLVM is recommended. | | Storage Nodes | Select the storage nodes required by the MinIO cluster. It is recommended to use 4-16 storage nodes. The platform will deploy one storage service for each selected storage node. | | Storage Pool Overview | For specific parameters and calculation formulas, please refer to Storage Pool Overview. |
  4. In the Access Configuration area, configure related information as per the following instructions.

    ParameterDescription
    External AccessWhen enabled, it supports cross-cluster access to MinIO; when disabled, it only supports access within the cluster.
    ProtocolSupports HTTP and HTTPS; when selecting HTTPS, you need to enter the Domain and import the Public Key and Private Key of the domain name certificate.
    Note:
    • When the access protocol is HTTP, pods within the cluster can access MinIO directly via the obtained IP or domain name without configuring IP address and domain name mapping; nodes within the cluster can access MinIO directly via the obtained IP, and if domain name access is required, manual configuration of IP address and domain name mapping is needed; external access can be done directly via the obtained IP.
    • When the access protocol is HTTPS, access to MinIO via IP is not possible both inside and outside the cluster. Manual configuration of the mapping between the obtained IP address and the domain name entered during cluster creation is required to access normally via the domain name. | | Access Method |
    • NodePort: Opens a fixed port on each compute node host to expose the service externally. When configuring domain name access, it is recommended to use VIP for domain name resolution to ensure high availability.
    • LoadBalancer: Uses a load balancer to forward traffic to backend services. Before use, please ensure that the MetalLB plugin is deployed in the current cluster and there are available IPs in the external address pool. |
  5. Click Create Cluster at the bottom right.

    • Once the page automatically proceeds to Cluster Details, it indicates that the cluster creation was successful.

    • If the cluster remains in the creation process, you can click Cancel. After cancellation, the deployed cluster information will be cleaned up, and you can return to the cluster creation page to recreate the cluster.

Create Bucket

Log in to the control node of the cluster and use the command to create a bucket.

Procedure

  1. On the cluster details page, click the Access Method tab to view the MinIO access address, or use the following command to query.

    kubectl get svc -n <tenant ns> minio | grep -w minio | awk '{print $3}'
    

    Note:

    • Replace tenant ns with the actual namespace minio-system.
    • Example: kubectl get svc -n minio-system minio | grep -w minio | awk '{print $3}'
  2. Obtain the mc command.

    wget https://dl.min.io/client/mc/release/linux-amd64/mc -O /bin/mc && chmod a+x /bin/mc
    
  3. Configure MinIO cluster alias.

    • IPv4:

      mc --insecure alias set <minio cluster alias> http://<minio endpoint>:<port> <accessKey> <secretKey>
      
    • IPv6:

      mc --insecure alias set <minio cluster alias> http://[<minio endpoint>]:<port> <accessKey> <secretKey>
      
    • Domain Name:

      mc --insecure alias set <minio cluster alias> http://<domain name>:<port> <accessKey> <secretKey>
      mc --insecure alias set <minio cluster alias> https://<domain name>:<port> <accessKey> <secretKey>
      

    Note:

    • Enter the IP address obtained in step 1 for minio endpoint.
    • Enter the Access Key and Secret Key created during cluster creation for accessKey and secretKey.
    • Configuration examples:
      • IPv4: mc --insecure alias set myminio http://12.4.121.250:80 07Apples@ 07Apples@
      • IPv6: mc --insecure alias set myminio http://[2004::192:168:143:117]:80 07Apples@ 07Apples@
      • Domain Name: mc --insecure alias set myminio http://test.minio.alauda:80 07Apples@ 07Apples@ or mc --insecure alias set myminio https://test.minio.alauda:443 07Apples@ 07Apples@
  4. Create a bucket.

    mc --insecure mb <minio cluster alias>/<bucket name>
    

Upload/Download Files

Once the bucket is created, you can use the command line to upload files to the bucket or download existing files from the bucket.

Procedure

  1. Create a file for upload testing. This step can be skipped if uploading an existing file.

    touch <file name>
    
  2. Upload files to the bucket.

    mc --insecure cp <file name> <minio cluster alias>/<bucket name>
    
  3. View files in the bucket to confirm successful upload.

    mc --insecure ls <minio cluster alias>/<bucket name>
    
  4. Delete uploaded files.

    mc --insecure rm <minio cluster alias>/<bucket name>/<file name>
    

Redundancy Factor Mapping Table

Note: When adding additional storage pools, the redundancy factor needs to be calculated based on the number of instances in the first storage pool.

Instance NumberRedundancy Factor
4 - 52
6 - 73
>= 84

Storage Pool Overview

Storage Pool Overview ParameterCalculation Formula
Usable CapacityWhen the Instance Number ≤ 16, Usable Capacity = Single Storage Volume Capacity × (Instance Number - Redundancy Factor).
When the number of instances > 16, Usable Capacity = Single Storage Volume Capacity × (Instance Number - 4 × (Instance Number + 15) / 16)). The result of "4 × (Instance Number + 15) / 16)" should be rounded down.
Total CapacityTotal Capacity = Instance Numbers × Single Storage Volume Capacity
Number of failover storage services toleratedWhen the Instance Number > 2 × Redundancy Factor, Number of Tolerable Fault Storage Services = Redundancy Factor.
When the Instance Number = 2 × Redundancy Factor, the number of tolerable fault storage services = Redundancy Factor - 1