Skip to main content
Version: 3.1

Autopilot Install and Setup

Summary and Key concepts

Summary:

This article outlines the steps for installing and configuring Portworx Autopilot, a rule-based engine for automated storage management. It details the prerequisites, such as a running Prometheus instance, and how to find the Prometheus service endpoint. The article provides instructions for configuring the Autopilot ConfigMap and explains how to enable Autopilot in the Portworx StorageCluster specification. Customization options for the installation, including setting up custom images and upgrading Autopilot either with or without a configmap, are also covered. The Operator method is recommended for Autopilot installation and upgrades.

Kubernetes Concepts:

  • ConfigMap: Used to store non-confidential data in key-value pairs, such as configuration settings for Autopilot.
  • Service: A way to expose an application running on a set of Pods, in this case, Prometheus.

Portworx Concepts:

  • Autopilot: Automates storage operations based on monitoring conditions, such as resizing volumes or expanding storage pools.
  • Prometheus Integration: Autopilot relies on Prometheus for monitoring metrics, and the Prometheus service endpoint must be configured for Autopilot to work.
  • PX-Security: Portworx's security framework that includes token-based authorization and encryption. Autopilot with PX-Security requires adding a shared secret to the StorageCluster.
  • StorageCluster: A custom Kubernetes resource used by Portworx to manage the storage cluster, which includes enabling and configuring Autopilot.

Follow the steps in the following sections to install and configure Autopilots.

Prerequisites

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

Once you have it installed, find the Prometheus service endpoint in your cluster. Depending on how you installed Prometheus, the precise steps to find this may vary. In most clusters, you can find a service named Prometheus:

kubectl get service -n portworx prometheus
NAME         TYPE           CLUSTER-IP    EXTERNAL-IP     PORT(S)          AGE
prometheus LoadBalancer 10.0.201.44 X.X.X.0 9090:30613/TCP 11d

In the example above, http://prometheus:9090 becomes the Prometheus endpoint. Portworx uses this endpoint in the Autopilot Configuration section.

note

Why http://prometheus:9090 ?

prometheus is the name of the Kubernetes service for Prometheus in the portworx namespace. Since Autopilot also runs as a pod in the portworx namespace, it can access Prometheus using its Kubernetes service name and port.

Configuring the ConfigMap

Replace http://prometheus:9090 in the following ConfigMap with your Prometheus service endpoint, if it is different. Once replaced, apply this ConfigMap in your cluster:

apiVersion: v1
kind: ConfigMap
metadata:
name: autopilot-config
namespace: portworx
data:
config.yaml: |-
providers:
- name: default
type: prometheus
params: url=http://prometheus:9090
min_poll_interval: 2

Install Autopilot

As Portworx transitions from the "old DaemonSet way" of installing Portworx and its components to using the Operator, Autopilot should now be installed via the StorageCluster. If you still need to install Autopilot, ensure that it is enabled in the StorageCluster specification:

kind: StorageCluster
spec:
autopilot:
enabled: true

Include enabled: true in the specification to activate Autopilot.

Customize Autopilot install

You can customize the Autopilot installation by adding configuration parameters to the Autopilot spec within your Portworx StorageCluster manifest. Here is an example on how to modify your Portworx StorageCluster spec to add these configurations for customizing your Autopilot install:

apiVersion: core.libopenstorage.org/v1
kind: StorageCluster
...
spec:
autopilot:
enabled: true
image: portworx/autopilot:1.3.14
providers:
- name: default
params:
url: http://px-prometheus:9090
type: prometheus
args:
log-level: debug

Upgrade Autopilot

To upgrade Autopilot and ensure your Portworx deployment is using the latest recommended components, follow the appropriate procedure based on your setup:

To a custom image

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.

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.

With Portworx Upgrade (with configmap)

  1. Download the latest Portworx version manifest:

    curl -o versions.yaml "https://install.portworx.com/$PXVER/version?kbver=$KBVER"
  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.