Skip to content

Install PMM Server with Helm on Kubernetes clusters

Helm is the package manager for Kubernetes. You can find Percona Helm charts in our GitHub repository.

Prerequisites

Storage requirements

Different Kubernetes platforms offer varying capabilities.

To use PMM in production:

  • ensure your platform provides storage drivers supporting snapshots for backups
  • consult your provider about Kubernetes and Cloud storage capabilities

Deployment best practices

For optimal monitoring:

  1. 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
  2. Enable high availability to ensure continuous monitoring during node failures

Installation PMM Server on your Kubernetes cluster

Create the required Kubernetes secret and deploy PMM Server using Helm:

  1. 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
    

  2. Get admin password:

    kubectl get secret pmm-secret -o jsonpath='{.data.PMM_ADMIN_PASSWORD}' | base64 --decode
    
  3. 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
    
  4. Verify the deployment, listing all releases: helm list.

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

Important

Helm cannot modify application credentials after deployment.

Credential changes after deployment require either:

  • redeploying PMM Server with new persistent volumes
  • using 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:

  1. Configure custom certificates:

    certs:
      name: pmm-certs
      files:
        certificate.crt: <content>
        certificate.key: <content>
        ca-certs.pem: <content>
        dhparam.pem: <content>
    
  2. Use Ingress controller with TLS See PMM network configuration for details.