Install PMM Server with Helm on Kubernetes clusters¶
Deploy PMM Server on Kubernetes using Helm for scalable, orchestrated monitoring in containerized environments.
Helm is the package manager for Kubernetes. You can find Percona Helm charts in our GitHub repository.
Prerequisites¶
- Helm v3
- Kubernetes cluster running a supported version and Supported Helm versions
- Storage driver with snapshot support (for backups)
kubectl
configured to communicate with your cluster
Storage requirements¶
Different Kubernetes platforms offer varying capabilities:
- for production use, ensure your platform provides storage drivers supporting snapshots for backups
- for cloud environments, verify your provider’s Kubernetes storage options and costs
- for on-premises deployments, confirm your storage solution is compatible with dynamic provisioning
Deployment best practices¶
For optimal monitoring in production environments:
-
Separate PMM Server from monitored systems by either:
- using separate Kubernetes clusters for monitoring and databases
- configuring workload separation through node configurations, affinity rules, and label selectors
-
Enable high availability to ensure continuous monitoring during node failures
Install PMM Server on your Kubernetes cluster¶
Create the required Kubernetes secret and deploy PMM Server using Helm:
-
Create Kubernetes secret to set up
pmm-admin
password:cat <<EOF | kubectl create -f - apiVersion: v1 kind: Secret metadata: name: pmm-secret labels: app.kubernetes.io/name: pmm type: Opaque data: # base64 encoded password # encode some password: `echo -n "admin" | base64` PMM_ADMIN_PASSWORD: YWRtaW4= EOF
-
Verify the secret was created and retrieve the password if needed:
kubectl get secret pmm-secret -o jsonpath='{.data.PMM_ADMIN_PASSWORD}' | base64 --decode
-
Add the Percona repository and deploy PMM Server with default settings and your secret. See configuration parameters for customization. See configuration parameters for customization.
helm repo add percona https://percona.github.io/percona-helm-charts/ helm install pmm \ --set secret.create=false \ --set secret.name=pmm-secret \ --version ^1.4.0 \ percona/pmm
-
Verify the deployment:
helm list kubectl get pods -l app.kubernetes.io/name=pmm
-
Access PMM Server:
# If using ClusterIP (default) kubectl port-forward svc/pmm-service 443:443 # If using NodePort kubectl get svc pmm-service -o jsonpath='{.spec.ports[0].nodePort}'
Configure PMM Server¶
View available parameters¶
Check the list of available parameters in the PMM Helm chart documentation. You can also list the default parameters by either:
- check values.yaml file in our repository
- run the chart definition:
helm show values percona/pmm
Set configuration values¶
Configure PMM Server using either command-line arguments or a YAML file:
- using command-line arguments:
helm install pmm \ --set secret.create=false --set secret.name=pmm-secret \ --set service.type="NodePort" \ percona/pmm
- using a .yaml configuration file:
helm show values percona/pmm > values.yaml
Change credentials¶
Helm cannot modify application credentials after deployment. To change credentials after deployment, either:
- redeploy PMM Server with new persistent volumes
- use PMM’s built-in administrative tools
PMM environment variables¶
Add environment variables for advanced operations (like custom init scripts) using the pmmEnv
property:
pmmEnv:
PMM_ENABLE_UPDATES: "1"
SSL certificates¶
PMM comes with self-signed SSL certificates, ensuring a secure connection between the Client and Server. However, since these certificates are not issued by a trusted authority, you may encounter a security warning when connecting to PMM.
To enhance security, you have two options:
-
Configure custom certificates:
certs: name: pmm-certs files: certificate.crt: <content> certificate.key: <content> ca-certs.pem: <content> dhparam.pem: <content>
-
Use Ingress controller with TLS. See PMM network configuration for details.
Next steps¶
- Register PMM Clients with your PMM Server
- Back up PMM Server Helm deployment
- Configure advanced Kubernetes settings