Autopilot installation and configuration for airgapped EKS
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.
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:
- Update the
configmap/px-versions
with the desired custom Autopilot image. - 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)
-
Delete the
configmap/px-versions
file.When Portworx is upgraded, the Operator will automatically upgrade the installed components to the recommended versions.
-
Upgrade the Portworx image in the storage cluster specification to proceed with the upgrade.
With Portworx Upgrade (with configmap)
-
Download the latest Portworx version manifest:
curl -o versions.yaml "https://install.portworx.com/$PXVER/version?kbver=$KBVER"
-
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 -
Add the
autoUpdateComponents
field to the storage cluster specification:kind: StorageCluster
spec:
autoUpdateComponents: OnceThis 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.