Skip to main content
Version: 3.1

Disaggregated installation on AWS EKS

In a disaggregated deployment of Portworx, the storage nodes are separate from the compute (or storageless) nodes. Based on the environment in which you are deploying Portworx, the installation instructions for disaggregated mode change.

In a cloud autoscaling environment, Portworx recommends using two separate node groups—one for storage nodes and the other for compute (storageless) nodes. This architecture enables you to scale up and scale down your compute cluster based on your application needs while keeping the storage node group constant.

Prepare your nodes

Before you deploy Portworx, you need to designate your nodes as storage and storageless (compute). Portworx looks for the following labels on the Kubernetes nodes to identify them as a part the storage node group or the storageless node group:

portworx.io/node-type: storage
portworx.io/node-type: storageless

When using a managed Kubernetes cluster in the cloud, such as AKS or EKS, add these label pairs to your node groups when you create the node groups. This way, the cloud will ensure that these labels are always present on the Kubernetes nodes.

Install Portworx

Follow the installation instructions for your cloud provider.

Once you have generated the StorageCluster spec, you will need to add the following environment variable in the env section:

spec:
env:
- name: ENABLE_ASG_STORAGE_PARTITIONING
value: "true"

You can also add the environment variables from the spec generator using the Environment Variables dropdown menu.

A sample StorageCluster spec for AWS looks like this:

kind: StorageCluster
apiVersion: core.libopenstorage.org/v1
metadata:
name: px-cluster-XXXX-XXXX-XXXX-XXXX-XXXX
namespace: <px-namespace>
annotations:
portworx.io/install-source: "https://install.portworx.com/?operator=true&mc=false&kbver=&b=true&kd=type%3Dgp2%2Csize%3D150&s=%22type%3Dgp2%2Csize%3D150%22&c=px-cluster-XXXX-XXXX-XXXX-XXXX-XXXX&stork=true&csi=true&mon=true&tel=false&st=k8s&e=ENABLE_ASG_STORAGE_PARTITIONING%3Dtrue&promop=true"
spec:
image: portworx/oci-monitor:2.10.1
imagePullPolicy: Always
kvdb:
internal: true
cloudStorage:
deviceSpecs:
- type=gp2,size=150
kvdbDeviceSpec: type=gp2,size=150
secretsProvider: k8s
stork:
enabled: true
args:
webhook-controller: "false"
autopilot:
enabled: true
monitoring:
prometheus:
enabled: true
exportMetrics: true
featureGates:
CSI: "true"
env:
- name: "ENABLE_ASG_STORAGE_PARTITIONING"
value: "true"

Once this environment variable is set, Portworx will run the nodes which are labeled as portworx.io/node-type=storage as storage nodes, and it will run the nodes labeled as portworx.io/node-type=storageless as storageless nodes.