Elastic Kubernetes Service (EKS)

This topic explains how to install Portworx with AWS (Elastic Kubernetes Service). Follow the steps in this topic in order.


Granting Portworx the needed AWS permissions

Portworx creates and attaches EBS volumes. As such, it needs the AWS permissions to do so. Below is a sample policy describing these permissions:

    "Version": "2012-10-17",
    "Statement": [
            "Sid": "<stmt-id>",
            "Effect": "Allow",
            "Action": [
            "Resource": [

You can provide these permissions to Portworx in one of following ways:

  1. Instance Privileges: Provide above permissions for all the instances in the autoscaling cluster by applying the corresponding IAM role. More info about IAM roles and policies can be found here
  2. Environment Variables: Create a User with the above policy and provide the security credentials (AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY) to Portworx.


If you are not using instance privileges, you must also specify AWS environment variables in the DaemonSet spec file. The environment variables to specify (for the KOPS IAM user) are:


If generating the DaemonSet spec via the GUI wizard, specify the AWS environment variables in the List of environment variables field. If generating the DaemonSet spec via the command line, specify the AWS environment variables using the e parameter.

Generate the specs

To install Portworx with Kubernetes, you will first generate Kubernetes manifests that you will deploy in your cluster.

To generate the specs, click Generating the Portworx specs. close

Portworx can also be installed using it’s helm chart by following instructions here. The above method is recommended over helm as the wizard will guide you based on your environment.

Apply the specs

Apply the generated specs in your cluster.

kubectl apply -f px-spec.yaml
Monitor the portworx pods

Wait till all portworx pods show as ready in the below output.

kubectl get pods -o wide -n kube-system -l name=portworx
Monitor Portworx cluster status
PX_POD=$(kubectl get pods -l name=portworx -n kube-system -o jsonpath='{.items[0].metadata.name}')
kubectl exec $PX_POD -n kube-system -- /opt/pwx/bin/pxctl status


Once you have a running Portworx installation, below sections are useful.

Last edited: Friday, Nov 30, 2018