TL;DR This is the process to get an EKS Cluster with Portworx installed with PDS installed and registered to your account in the PDS Control Plane. By following this you can use one command:
eksctl create cluster -f gitops-cluster.yaml
Wait about 22 minutes and you are ready to go with Amazon EKS, PX Enterprise and Portworx Data Services!
With big help form the amazing Chris Kennedy I would like to share how to quickly get a K8s cluster with Portworx Enterprise. To start read Chris’ blog post here:
Go back and follow it carefully, in this example I assume you fully have the above article working. Now that you are up to speed on using Flux to deploy Portworx.
Save this to a file called your EKS cluster specI called mine gitops-cluster.yaml
Get more on the using eksctl to create your cluster and what is required for Portworx here https://docs.portworx.com/install-portworx/cloud/aws/aws-eks/eksctl/eksctl-operator/
gitops: flux: gitProvider: github # required. options are github, gitlab or git flags: # required. arbitrary map[string]string for all flux args. # these args are not controlled by eksctl. see https://fluxcd.io/docs/get-started/ for all available flags owner: "yourgithubusername" repository: "demo-cloud-ops" private: "true" branch: "main" namespace: "flux-system" path: "clusters/demo-cluster"
If you followed Chris’ instructions you will have a git repo with the needed cloned from his example. The file you need to pay attention to for PDS to install on bootstrap of your cluster:
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namespace: pds-system resources: - pds-helm-release.yaml - pds-helm-repo.yaml
apiVersion: source.toolkit.fluxcd.io/v1beta2 kind: HelmRepository metadata: name: pds namespace: pds-system spec: interval: 1m0s url: https://portworx.github.io/pds-charts
apiVersion: helm.toolkit.fluxcd.io/v2beta1 kind: HelmRelease metadata: name: pds namespace: pds-system spec: interval: 1m0s chart: spec: chart: pds-target sourceRef: kind: HelmRepository name: pds namespace: pds-system version: 1.5.0 #set to your current pds version values: tenantId: "inserter your pds tennant id" bearerToken: "insert pds bearer token" apiEndpoint: https://your api endpoint for pds
Notice the parts in bold you must get from the add target cluster wizard in the PDS control plane UI.
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 kind: Kustomization metadata: name: portworx-pds namespace: flux-system spec: interval: 1m0s dependsOn: - name: portworx-storagecluster sourceRef: kind: GitRepository name: flux-system path: ./portworx/pds prune: true wait: true
This file has an important part that makes the PDS install wait until after the storagecluster is finished.
The next few files in the repo are there to add the required namespaces for PDS and for a “pds-demo” namespace with the label pds.portworx.com/available: “true” This namespace label allows PDS to deploy data services to that namespace. All other namespaces are not seen by the PDS Deployment UI.
apiVersion: kustomize.toolkit.fluxcd.io/v1beta2 kind: Kustomization metadata: name: namespaces namespace: flux-system spec: interval: 1m0s sourceRef: kind: GitRepository name: flux-system path: ./portworx/namespaces prune: true
kind: Namespace apiVersion: v1 metadata: name: pds-system --- kind: Namespace apiVersion: v1 metadata: name: portworx --- kind: Namespace apiVersion: v1 metadata: name: pds-demo labels: pds.portworx.com/available: "true"
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - px-ns.yaml
Once you have your files edited you can install your EKS cluster from a file. That has the gitops settings set to your Github repo.
eksctl create cluster -r gitops-admin.yaml
You will wait probably 20 – 25 minutes depending on how many nodes you are using. The minimum is 3 for Portworx but if you plan on have lots of Data Services running you will need to choose a bigger EC2 size and more nodes.