Autopilot installation and setup on AKS
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