Skip to content

Commit 6187bb0

Browse files
catalinaadamademidoffBupycHuk
authored
[DOC] OpenShift support for PMM Server (PMM-14132) (#4452)
* Bring back missing Server options (#4252) * bring back missing options * fix links * chore: trigger the build * added icon --------- Co-authored-by: Alex Demidoff <[email protected]> * Fix the wrong port mapping (#4253) * Fix the wrong port mapping * chore: trigger the build * [DOC] OpenShift support for PMM Server (PMM-14132) * install updates * feedback * Update documentation/docs/install-pmm/install-pmm-server/deployment-options/helm/index.md Co-authored-by: Nurlan Moldomurov <[email protected]> * feedback * formatting * removed optional step --------- Co-authored-by: Alex Demidoff <[email protected]> Co-authored-by: Nurlan Moldomurov <[email protected]>
1 parent 9e95cd7 commit 6187bb0

File tree

4 files changed

+93
-33
lines changed

4 files changed

+93
-33
lines changed

documentation/docs/install-pmm/index.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ Compare the available deployment methods to choose what works best for your setu
2929
|-------------------|----------|------------|----------------|
3030
| [Docker](../install-pmm/install-pmm-server/deployment-options/docker/index.md) | Quick setup, development environments | • Fast deployment<br>• Easy to manage<br>• Runs without root privileges<br>• Minimal resource overhead | • Requires Docker knowledge<br>• May need additional network configuration |
3131
| [Podman](../install-pmm/install-pmm-server/deployment-options/podman/index.md) | Security-conscious environments | • Rootless by default<br>• Enhanced security<br>• Docker-compatible commands<br>• No daemon required | • Requires Podman installation<br>• Less common than Docker |
32-
| [Helm](../install-pmm/install-pmm-server/deployment-options/helm/index.md) | Kubernetes environments | • Native Kubernetes deployment<br>• Scalable and orchestrated<br>• ConfigMap and Secret management<br>• Ingress controller support | • Requires Kubernetes cluster<br>• Helm knowledge needed<br>• More complex setup |
32+
| [Helm](../install-pmm/install-pmm-server/deployment-options/helm/index.md) | Kubernetes and OpenShift environments | • Native Kubernetes deployment<br>• Scalable and orchestrated<br>• ConfigMap and Secret management<br>• Ingress controller support | • Requires Kubernetes cluster<br>• Helm knowledge needed<br>• More complex setup |
3333
| [Virtual Appliance](../install-pmm/install-pmm-server/deployment-options/virtual/index.md) | Traditional VM environments | • Pre-configured virtual machine<br>• Works with VMware, VirtualBox<br>• No container knowledge required<br>• Isolated environment | • Larger resource footprint<br>• VM management overhead<br>• Less flexible than containers |
3434
| [Amazon AWS](../install-pmm/install-pmm-server/deployment-options/aws/deploy_aws.md) | AWS cloud deployments | • Wizard-driven install<br>• Rootless deployment<br>• Integrated with AWS services | • Paid service, incurs infrastructure costs<br>• AWS-specific deployment |
3535

@@ -50,7 +50,7 @@ Install and run at least one PMM Server using one of the following deployment me
5050
[**Get started with Podman deployment** :material-arrow-right:](../install-pmm/install-pmm-server/deployment-options/podman/index.md)
5151

5252
=== ":material-kubernetes: Helm"
53-
Deploy PMM Server on a Kubernetes cluster
53+
Deploy PMM Server on Kubernetes or OpenShift clusters
5454

5555
[**Get started with Kubernetes deployment** :material-arrow-right:](../install-pmm/install-pmm-server/deployment-options/helm/index.md)
5656

documentation/docs/install-pmm/install-pmm-server/deployment-options/helm/index.md

Lines changed: 88 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -7,17 +7,24 @@ Deploy PMM Server on Kubernetes using Helm for scalable, orchestrated monitoring
77
## Prerequisites
88

99
- [Helm v3](https://docs.helm.sh/using_helm/#installing-helm)
10-
- Kubernetes cluster running a [supported version](https://kubernetes.io/releases/version-skew-policy/#supported-versions) and [Supported Helm](https://helm.sh/docs/topics/version_skew/) versions
11-
- Storage driver with snapshot support (for backups)
10+
- Kubernetes cluster running a [supported version](https://kubernetes.io/releases/version-skew-policy/#supported-versions) and [supported Helm](https://helm.sh/docs/topics/version_skew/) versions
11+
- storage driver with snapshot support (for backups)
1212
- `kubectl` configured to communicate with your cluster
1313

14-
## Storage requirements
14+
### OpenShift-specific requirements
15+
For OpenShift deployments, you'll also need:
16+
17+
- OpenShift Container Platform 4.16. Other versions will likely work but they haven't been tested
18+
- `oc` CLI tool configured
19+
- permissions to create Routes and manage RBAC policies
1520

16-
Different Kubernetes platforms offer varying capabilities:
21+
## Storage requirements
22+
Different Kubernetes platforms offer varying storage capabilities. When planning your deployment, consider:
1723

18-
- for **production use**, ensure your platform provides storage drivers supporting snapshots for backups
19-
- for **cloud environments**, verify your provider's Kubernetes storage options and costs
20-
- for **on-premises deployments**, confirm your storage solution is compatible with dynamic provisioning
24+
- **for production use**, ensure your platform provides storage drivers supporting snapshots for backups
25+
- **for cloud environments**, verify your provider's Kubernetes storage options and costs
26+
- **for on-premises deployments**, confirm your storage solution is compatible with dynamic provisioning
27+
- **for OpenShift**, use OpenShift Container Storage (OCS) with `ReadWriteOnce` access mode and appropriate `PersistentVolume` permissions for non-root containers
2128

2229
## Deployment best practices
2330

@@ -26,12 +33,17 @@ For optimal monitoring in production environments:
2633

2734
1. Separate PMM Server from monitored systems by either:
2835

29-
- using separate Kubernetes clusters for monitoring and databases
30-
- configuring workload separation through node configurations, affinity rules, and label selectors
36+
- using separate Kubernetes clusters for monitoring and databases.
37+
- configuring workload separation through node configurations, affinity rules, and label selectors.
38+
39+
2. Enable [High Availability](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/ha-topology/) to ensure continuous monitoring during node failures.
3140

32-
2. Enable [high availability](https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/ha-topology/) to ensure continuous monitoring during node failures
41+
3. Openshift considerations:
3342

34-
## Install PMM Server on your Kubernetes cluster
43+
- use OpenShift Routes for external access instead of Kubernetes Ingress.
44+
- define resource quotas and limits as OpenShift projects often have stricter defaults.
45+
46+
## Install PMM Server on your Kubernetes cluster/Openshift clusters
3547

3648
Create the required Kubernetes secret and deploy PMM Server using Helm:
3749
{.power-number}
@@ -81,34 +93,79 @@ Create the required Kubernetes secret and deploy PMM Server using Helm:
8193
percona/pmm 1.4.0 3.0.0 A Helm chart for Percona Monitoring and Managem...
8294
percona/pmm 1.3.21 2.44.0 A Helm chart for Percona Monitoring and Managem...
8395
```
84-
96+
8597
5. Deploy PMM Server with your chosen version and secret:
8698
87-
```bash
88-
# Choose a specific chart version from the list in previous step
89-
helm install pmm \
90-
--set secret.create=false \
91-
--set secret.name=pmm-secret \
92-
--version 1.4.3 \
93-
percona/pmm
94-
```
99+
=== "On Kubernetes"
100+
Use Helm to deploy PMM Server on standard Kubernetes clusters. This approach works with most Kubernetes distributions and cloud providers.
101+
102+
```bash
103+
helm install pmm \
104+
--set secret.create=false \
105+
--set secret.name=pmm-secret \
106+
--version 1.4.8 \
107+
percona/pmm
108+
```
109+
110+
=== "On OpenShift"
111+
OpenShift requires additional security configurations due to its stricter security policies:
112+
113+
1. Create a custom values file for OpenShift:
114+
```bash
115+
cat <<EOF > openshift-values.yaml
116+
secret:
117+
create: false
118+
name: pmm-secret
119+
120+
# OpenShift-specific pod security settings
121+
podSecurityContext:
122+
runAsNonRoot: true
123+
seccompProfile:
124+
type: RuntimeDefault
125+
EOF
126+
```
127+
128+
2. Deploy using the values file:
129+
```bash
130+
helm install pmm \
131+
-f openshift-values.yaml \
132+
--version 1.4.3 \
133+
percona/pmm
134+
```
95135
96136
6. Verify the deployment:
97137
```bash
98138
helm list
99139
kubectl get pods -l app.kubernetes.io/name=pmm
100140
```
101-
102141
7. Access PMM Server:
103142
104-
```bash
105-
# If using ClusterIP (default)
106-
kubectl port-forward svc/monitoring-service 443:443
107143
108-
# If using NodePort
109-
kubectl get svc monitoring-service -o jsonpath='{.spec.ports[0].nodePort}'
110-
```
111-
144+
=== "On Kubernetes"
145+
Standard Kubernetes clusters provide several options for accessing PMM Server. Choose the method that best fits your networking setup and security requirements:
146+
147+
```bash
148+
# If using ClusterIP (default)
149+
kubectl port-forward svc/pmm-service 443:443
150+
151+
# If using NodePort
152+
kubectl get svc pmm-service -o jsonpath='{.spec.ports[0].nodePort}'
153+
```
154+
155+
=== "On OpenShift"
156+
OpenShift offers native routing capabilities through its Route resource, which provides external access with built-in load balancing and SSL termination:
157+
158+
```bash
159+
# Create a Route to expose PMM
160+
oc expose svc/pmm-service --port=443
161+
162+
# Get the Route URL
163+
oc get route pmm-service -o jsonpath='{.spec.host}'
164+
165+
# Or use port-forwarding for testing
166+
oc port-forward svc/pmm-service 443:443
167+
```
168+
112169
### Configure PMM Server
113170
114171
#### View available parameters
@@ -122,15 +179,16 @@ Check the list of available parameters in the [PMM Helm chart documentation](htt
122179
123180
Configure PMM Server using either command-line arguments or a YAML file:
124181
125-
- using command-line arguments:
182+
=== "Using command-line arguments"
183+
126184
```sh
127185
helm install pmm \
128186
--set secret.create=false \
129187
--set secret.name=pmm-secret \
130188
--set service.type="NodePort" \
131189
percona/pmm
132190
```
133-
- using a .yaml configuration file:
191+
=== "Using a .yaml configuration file"
134192
```sh
135193
helm show values percona/pmm > values.yaml
136194
```

documentation/docs/quickstart/quickstart.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ This is the simplest and most efficient way to install PMM with Docker.
1010
- [Deploy on Podman](../install-pmm/install-pmm-server/deployment-options/podman/index.md)
1111
- [Deploy based on a Docker image](../install-pmm/install-pmm-server/deployment-options/docker/index.md)
1212
- [Deploy on Virtual Appliance](../install-pmm/install-pmm-server/deployment-options/virtual/index.md)
13-
- [Deploy on Kubernetes via Helm](../install-pmm/install-pmm-server/deployment-options/helm/index.md)
13+
- [Deploy on Kubernetes/OpenShift via Helm](../install-pmm/install-pmm-server/deployment-options/helm/index.md)
1414
- [Run a PMM instance hosted at AWS Marketplace](../install-pmm/install-pmm-server/deployment-options/aws/deploy_aws.md)
1515

1616
#### Prerequisites

documentation/docs/release-notes/3.4.0.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ This release improves enterprise deployments and monitoring reliability, includi
2020
Building on the existing OpenShift compatibility available for PMM Client, PMM 3.4.0 now extends full support to PMM Server as well. All PMM Docker images meet Red Hat certification requirements, including non-root user execution and SecurityContextConstraints (SCC) support. This means that you can seamlessly deploy both PMM Client and PMM Server in OpenShift environments.
2121

2222
While OpenShift 4.16 is fully tested and supported, other versions will likely work but not guaranteed.
23+
2324
To deploy PMM Server on OpenShift using the standard Percona Helm charts with platform-specific parameters, see the [Install PMM Server on your Kubernetes cluster/OpenShift clusters](../install-pmm/install-pmm-server/deployment-options/helm/index.md).
2425

2526
### Centralized `vmagent` settings for all clients
@@ -105,6 +106,7 @@ For detailed steps, see [Migrating PMM from VMware to alternative platforms](../
105106
- [PMM-14208](https://perconadev.atlassian.net/browse/PMM-14208): Added support for PMM Client on Red Hat Enterprise Linux 10 (RHEL 10) for both AMD64 and ARM64 architectures.
106107

107108
## Fixed issues
109+
108110
- [PMM-14141](https://perconadev.atlassian.net/browse/PMM-14141): Fixed a critical issue where the MongoDB exporter would sometimes ignore connection timeouts. This prevented **MongoDB Down** alerts from triggering when MongoDB was unavailable. We've also improved the MongoDB down alert rule to work more reliably in timeout scenarios.
109111

110112
- [PMM-13885](https://perconadev.atlassian.net/browse/PMM-13885): You can now reliably enable and disable advisors on the **Advisors > Advisor Insights** page, as the toggle issue has been fixed.

0 commit comments

Comments
 (0)