Skip to main content

Portworx Operator

Portworx is a software-defined persistent storage solution designed and purpose-built for applications deployed as containers via container orchestrators such as Kubernetes. You can use Palette to install Portworx on a cloud platform, on-premises, or at the edge.

Versions Supported

  • 2.11.x

Prerequisites

For deploying Portworx with Operator for Kubernetes, make sure to configure the properties in the pack:



Contents

The default installation of Portworx /w Operator will deploy the following components in the Kubernetes cluster:


  • Portworx Operator

  • StorageCluster resource that tells the Operator how to deploy & configure Portworx

  • StorageClass resource for dynamic provisioning of PersistentVolumes using the portworx-volume provisioner

  • Stork and Stork on Portworx

Optionally, you can enable Lighthouse for essential monitoring of the Portworx cluster.


Parameters

Charts - Portworx:

charts:
portworx-generic:

license:
# Valid options for "type" are: essentials, saas, enterprise
# If you want to deploy the PX Enterprise Trial version, or need manual offline activation,
# select the "enterprise" type and set "activateLicense" to false.
type: essentials
# The next block only gets used if the type is set to "essentials"
essentials:
# Base64-decoded value of the px-essen-user-id value in the px-essential secret
# Find your Essentials Entitlement ID at https://central.portworx.com/profile
userId: 1234abcd-12ab-12ab-12ab-123456abcdef
# Base64-decoded value of the px-osb-endpoint value in the px-essential secret
# Leave at the default value unless there are special circumstances
endpoint: https://pxessentials.portworx.com/osb/billing/v1/register
# The next block only gets used if the type is set to "saas"
saas:
key: <PAY-AS-YOU-GO-KEY>
# The next block only gets used if the type is set to "enterprise"
enterprise:
activateLicense: true
activationId: <Activation ID>
# customLicenseServer:
# url: http://hostname:7070/fne/bin/capability
# importUnknownCa: true
# licenseBorrowInterval: 1w15m
# addFeatures:
# - feature1
# - feature2

storageCluster:
# When autoGenerateName is true, a name of type "px-cluster-1234abcd-12ab-12ab-12ab-123456abcdef" is generated and the "name" field is ignored
autoGenerateName: false
name: "px-{{.spectro.system.cluster.name}}"
# annotations:
# If you need additional annotations, specify them here
spec: {}
# Use the Portworx Spec Builder at https://central.portworx.com/landing/login to define custom configurations, then paste the spec section here

storageClass:
name: spectro-storage-class
isDefaultStorageClass: true
# annotations:
# If you need additional annotations, specify them here
allowVolumeExpansion: true
# Delete or Retain
reclaimPolicy: Delete
# WaitForFirstConsumer or Immediate
volumeBindingMode: WaitForFirstConsumer
parameters:
repl: "3"
priority_io: "high"
# sharedv4: true
# Add additional parameters as needed (https://docs.portworx.com/portworx-install-with-kubernetes/storage-operations/create-pvcs/dynamic-provisioning/)

License Model

This pack can install Portworx in three different licensing modes:

  • Essentials: a free Portworx license with limited functionality that allows you to run small production or proof-of-concept workloads. Essentials limits capacity and advanced features, but otherwise functions the same way as the fully-featured Portworx Enterprise version of Portworx.
  • Enterprise: the fully featured version of Portworx. If you install this model without a valid key, Portworx will automatically enter a 30-day trial mode.
  • Enterprise SaaS PAYG: the fully featured version of Portworx but using a SaaS license key that allows unlimited use and in-arrears billing. If you install this model without a valid key, Portworx will automatically enter a 30-day trial mode.

Use the presets in the pack user interface to select which license model you want to use, then update the charts.portworx-generic.license section for your chosen license model.


    license:
type: essentials
essentials:
# Base64-decoded value of the px-essen-user-id value in the px-essential secret
# Find your Essentials Entitlement ID at https://central.portworx.com/profile
userId: 1234abcd-12ab-12ab-12ab-123456abcdef
# Base64-decoded value of the px-osb-endpoint value in the px-essential secret
# Leave at the default value unless there are special circumstances
endpoint: https://pxessentials.portworx.com/osb/billing/v1/register

Storage Specification

This pack can install Portworx in various different storage environment:

  • Using existing disks (generic): This mode does not integrate with any particular storage solution, it just uses existing disks available on the nodes.
  • AWS Cloud Storage: This mode integrates with Amazon EBS block volumes and allows EKS and EC2 kubernetes clusters to dynamically attach EBS volumes to worker nodes for Portworx.
  • Azure Cloud Storage: This mode integrates with Azure block storage and allows AKS and regular Azure kubernetes clusters to dynamically attach Azure block storage to worker nodes for Portworx.
  • Google Cloud Storage: This mode integrates with Google persistent disks and allows GKE and regular Google kubernetes clusters to dynamically attach persistent disks to worker nodes for Portworx.
  • VMware vSphere Datastores: This mode integrates with VMware vSphere storage and allows kubernetes clusters on vSphere to dynamically attach vSAN and regular Datastore disks to worker nodes for Portworx.
  • Pure Storage Flash Array: This mode integrates with Pure Storage Flash Arrays and allows kubernetes clusters to dynamically attach Flash Array disks over iSCSI to worker nodes for Portworx.

Use the presets in the pack user interface to select which storage specification you want to use, then update the charts.portworx-generic.storageCluster section to your specific needs.


    storageCluster:
spec:
# Use the Portworx Spec Builder at https://central.portworx.com/landing/login to define custom configurations, then paste the spec section here
image: portworx/oci-monitor:2.11.2
imagePullPolicy: Always
kvdb:
internal: true
# endpoints:
# - etcd:https://etcd.company.domain:2379
# authSecret: px-kvdb-auth
storage:
useAll: true
journalDevice: auto
secretsProvider: k8s
stork:
enabled: true
args:
webhook-controller: "true"
autopilot:
enabled: true
csi:
enabled: true
monitoring:
prometheus:
enabled: false
exportMetrics: false

Integration With External Etcd

Portworx Enterprise supports multiple Etcd scenarios.

Portworx will default use its internal key-value store (KVDB). However, you can integrate Portworx to an external Etcd server by following the steps below.


  1. Select the Use External Kvdb over HTTP or Use External Kvdb over SSL preset in the pack user interface. If your external Etcd server requires certificate authentication, you need the Use External Kvdb over SSL preset.
  1. Configure the external Etcd endpoint(s) in charts.portworx-generic.storageCluster.spec.kvdb.endpoints.
  1. When using the Use External Kvdb over SSL preset, leave the charts.portworx-generic.storageCluster.spec.kvdb.endpoints option to its default of px-kvdb-auth since that is the name of the secret that will be created by this pack.

When using the Use External Kvdb over SSL preset, you additionally need to configure the charts.portworx-generic.externalKvdb section:


  1. Set charts.portworx-generic.externalKvdb.useCertsForSSL to true to enable certificate authentication.
  1. Input your SSL certificates in the cacert, cert, and key sections of charts.portworx-generic.externalKvdb. The preset will give you cropped example values that you can overwrite with your actual PEM certificates.
caution

Make sure to follow the provided indentation style; otherwise, certs will not be imported correctly and will result in Portworx deployment failure.

Kvdb and Etcd Presets

These are the three types of Presets that can be selected and modified. The pack defaults to the Use Internal Kvdb option. Change to a different preset if you need to connect to an external Etcd server.


    storageCluster:
spec:
kvdb:
internal: true

References