Skip to main content
Version: User Guides (BYOC)

Enable Tiered Storage for Existing Clusters

This guide is for users who have already deployed a BYOC/BYOC-I cluster using a previous version of the terraform examples and now want to enable tiered storage.

Prerequisites

  • Terraform provider zillizcloud version >= 0.6.34.

Step 1: Upgrade the Provider

Update the version constraint in your versions.tf or required_providers block. Note that Terraform's ~> constraint does not match pre-release versions, so pin explicitly if you are testing an -rc build:

zillizcloud = {
source = "zilliztech/zillizcloud"
version = ">= 0.6.34"
}

Step 2: Update data.tf

In your locals {} block, replace the existing k8s_node_groups assignment:

# Remove this line:
k8s_node_groups = data.zillizcloud_byoc_i_project_settings.this.node_quotas

With the following merge logic:

# Tiered node quota from API (separate provider field, null when not enabled)
tiered_node_quota = (
data.zillizcloud_byoc_i_project_settings.this.tiered_node_quota != null
? { tiered = data.zillizcloud_byoc_i_project_settings.this.tiered_node_quota }
: {}
)

k8s_node_groups = {
for name, ng in merge(
# Tiered placeholder (max_size=0 → count=0, not created unless API enables it)
{ tiered = { disk_size = 100, min_size = 0, max_size = 0, desired_size = 0, instance_types = "i4i.2xlarge", capacity_type = "ON_DEMAND" } },
# API returns: core, index, search, fundamental
data.zillizcloud_byoc_i_project_settings.this.node_quotas,
# API tiered quota overwrites placeholder when present
local.tiered_node_quota,
) : name => merge(ng, {
ami_id = lookup(var.k8s_node_group_image_id, name, null)
disk_size = max(ng.disk_size, 100)
})
}

# Placeholder has max_size=0, so this is false unless API returns tiered with max_size>0
enable_tiered = local.k8s_node_groups["tiered"].max_size > 0

Step 3: Update EKS Module

Copy the latest modules/aws_byoc_i/eks/ directory from the master branch of terraform-zilliz-examples to replace your local copy. This adds the tiered node group resource, enable_tiered variable, and updated validation rules.

Step 4: Pass enable_tiered to the EKS Module

In your root main.tf, add the argument to the module "eks" block:

module "eks" {
# ... existing arguments ...
enable_tiered = local.enable_tiered
}

Step 5: Enable Tiered Storage in Zilliz Cloud Console

  1. Log in to the Zilliz Cloud console.

  2. In the top-right corner, select the correct BYOC organization.

Tfgxb8cJRoahQxx8UYicQiPPnLf

  1. Navigate to Projects and locate the project you want to enable tiered storage for.

  2. Click the "..." button in the bottom-right corner of the project card, then click View Project Details.

Roidb6iXZo373pxGnCSc0C2MnLh

  1. In the Resource Settings section, click Edit.

DOsebYbZZo4fDAx8uIPcOSRknhc

  1. In the dialog, check Tiered and click Save in the bottom-right corner.

After saving, the API will return a tiered_node_quota for this project.

JvbVbbZlKojF2Pxd7SncmK69nvg

Step 6: Verify

terraform init -upgrade
terraform plan

Expected plan output:

Scenario

Expected Result

Tiered storage not enabled

No new resources (enable_tiered = false, count = 0)

Tiered storage enabled

aws_eks_node_group.tiered[0] will be created (1 to add)

Existing resources should show no destroy or recreate actions.