Skip to main content
Version: 3.5

Expand your Storage Pool with Autopilot

Autopilot is a rule-based engine that responds to changes from a monitoring source. Autopilot allows you to specify monitoring conditions along with actions it should take when those conditions occur.

Autopilot Overview

A user creates Portworx Autopilot rule. When an event occurs that is defined by an Autopilot rule, Autopilot can take a decision by fetching and using the metrics from the monitoring source configured on your cluster.

With Autopilot, your cluster can react dynamically without your intervention to events such as:

  • Resizing PVCs when it is running out of capacity
  • Scaling Portworx storage pools to accommodate increasing usage
  • Rebalancing volumes across Portworx storage pools when they come unbalanced

Configuring and managing Autopilot with Portworx on Kubernetes cluster includes the following:

Configure Autopilot with Portworx

Prerequisites

Ensure that your cluster has a running Prometheus so that Autopilot can fetch the metrics from it and take actions if the monitoring conditions are met.

Autopilot requires a running OpenShift Prometheus instance in your cluster. If you don't have Prometheus configured in your cluster, refer to the Observability section to set it up.

After you have enabled OpenShift Prometheus, fetch the Thanos host, which is part of the OpenShift monitoring stack.

oc get route thanos-querier -n openshift-monitoring -o json | jq -r '.spec.host'
thanos-querier-openshift-monitoring.tp-nextpx-iks-catalog-pl-80e1e1cd66534115bf44691bf8f01a6b-0000.us-south.containers.appdomain.cloud

Configure Autopilot using the above route host to enable its access to Prometheus's statistics.

Enable Autopilot with Portworx

Ensure that Autopilot is enabled in the StorageCluster specification as shown below:

kind: StorageCluster
spec:
autopilot:
enabled: true

Setting spec.autopilot.enabled: true in the StorageCluster specification enables Autopilot on the cluster.

Customize Autopilot

You can customize Autopilot by specifying configuration parameters to the Autopilot spec within your Portworx StorageCluster manifest. The following example shows how to customize Autopilot configuration to use custom the Prometheus URL and update the log level to debug based on your requirement.

apiVersion: core.libopenstorage.org/v1
kind: StorageCluster
...
spec:
autopilot:
enabled: true
image: portworx/autopilot:1.3.14
providers:
- name: default
params:
url: https://<THANOS-QUERIER-HOST>
type: prometheus
args:
log-level: debug

Configure Autopilot with PX-Security

If you have to configure Autopilot with PX-Security using the Operator, you must modify the StorageCluster manifest. Add the following PX_SHARED_SECRET env var to the spec.autopilot:

  autopilot:
...
env:
- name: PX_SHARED_SECRET
valueFrom:
secretKeyRef:
key: apps-secret
name: px-system-secrets

Upgrade Autopilot

To upgrade Autopilot, follow the appropriate procedure based on your setup:

To latest Autopilot image without upgrading Portworx

Portworx Operator takes care of updating all the components including autopilot based on the update strategy. If spec.autoUpdateComponents is set to Always in the STC, Portworx will check for update on regular interval and update the Autopilot image if new version is released.

To a custom Autopilot image without upgrading Portworx

To upgrade Autopilot to a custom image:

  1. Update the configmap/px-versions with the desired custom Autopilot image.
  2. Add the autoUpdateComponents field to the storage cluster specification:
kind: StorageCluster
spec:
autoUpdateComponents: Once

This will prompt the Portworx Operator to reconcile the Autopilot component and pull the latest image from the updated configmap.

Along With Portworx Upgrade without configmap

  1. Delete the configmap/px-versions file.

    When Portworx is upgraded, the Operator will automatically upgrade the installed components to the recommended versions.

  2. Upgrade the Portworx image in the storage cluster specification to proceed with the upgrade.

Along With Portworx Upgrade with configmap

  1. Download the latest Portworx version manifest:

    curl -o versions.yaml "https://install.portworx.com/$<portworx-version>/version?kbver=$<kubernetes-version>&opver=$<operator-version>"

    Replace:

    • <portworx_version> with the Portworx version you want to use.
    • <kubernetes-version> with the Kubernetes version you want to use.
    • <operator-version> with the Operator version you want to use.
  2. Update the px-versions configmap with the downloaded version manifest:

    kubectl -n <px-namespace> delete configmap px-versions
    kubectl -n <px-namespace> create configmap px-versions --from-file=versions.yaml
  3. Add the autoUpdateComponents field to the storage cluster specification:

    kind: StorageCluster
    spec:
    autoUpdateComponents: Once

    This will prompt the Portworx Operator to reconcile all components and retrieve the latest images from the configmap if available, or download them from the manifest if not.