Skip to content

Commit 6ac9ad4

Browse files
pooknullhors
andauthored
K8SPG-737: expose /pgdata mountpoint for node_exporter (#1113)
* K8SPG-737: expose `/pgdata` mountpoint for node_exporter https://perconadev.atlassian.net/browse/K8SPG-737 * fix upgrade tests * fix unit test * remove version check from pmm v3 container --------- Co-authored-by: Viacheslav Sarzhan <slava.sarzhan@percona.com>
1 parent 3ea7ff7 commit 6ac9ad4

File tree

6 files changed

+68
-11
lines changed

6 files changed

+68
-11
lines changed
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
commands:
4+
- script: |-
5+
set -o errexit
6+
set -o xtrace
7+
8+
source ../../functions
9+
10+
series_fetched=$(curl --insecure -G "https://admin:admin@$(get_service_ip monitoring-service)/prometheus/api/v1/query_range" \
11+
--data-urlencode "query=node_filesystem_free_bytes{mountpoint=\"/pgdata\"}" \
12+
--data-urlencode "start=$(($(date +%s) - 300))" \
13+
--data-urlencode "end=$(date +%s)" \
14+
--data-urlencode "step=5s" | jq -r '.stats.seriesFetched')
15+
16+
if [[ $series_fetched == 0 ]]; then
17+
echo "seriesFetched is 0"
18+
exit 1
19+
fi
20+
timeout: 360
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
apiVersion: kuttl.dev/v1beta1
2+
kind: TestStep
3+
commands:
4+
- script: |-
5+
set -o errexit
6+
set -o xtrace
7+
8+
source ../../functions
9+
10+
series_fetched=$(curl --insecure -G "https://admin:admin@$(get_service_ip monitoring-service)/prometheus/api/v1/query_range" \
11+
--data-urlencode "query=node_filesystem_free_bytes{mountpoint=\"/pgdata\"}" \
12+
--data-urlencode "start=$(($(date +%s) - 300))" \
13+
--data-urlencode "end=$(date +%s)" \
14+
--data-urlencode "step=5s" | jq -r '.stats.seriesFetched')
15+
16+
if [[ $series_fetched == 0 ]]; then
17+
echo "seriesFetched is 0"
18+
exit 1
19+
fi
20+
timeout: 360

internal/controller/postgrescluster/instance.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1352,6 +1352,9 @@ func generateInstanceStatefulSetIntent(_ context.Context,
13521352
// containers see each other's processes.
13531353
// - https://docs.k8s.io/tasks/configure-pod-container/share-process-namespace/
13541354
sts.Spec.Template.Spec.ShareProcessNamespace = initialize.Bool(true)
1355+
if cluster.CompareVersion("2.7.0") >= 0 {
1356+
sts.Spec.Template.Spec.ShareProcessNamespace = initialize.Bool(false) // K8SPG-737: should be false
1357+
}
13551358

13561359
// Patroni calls the Kubernetes API and pgBackRest may interact with a cloud
13571360
// storage provider. Use the instance ServiceAccount and automatically mount

percona/pmm/pmm.go

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
corev1 "k8s.io/api/core/v1"
88
"k8s.io/apimachinery/pkg/util/intstr"
99

10+
"github.com/percona/percona-postgresql-operator/internal/postgres"
1011
v2 "github.com/percona/percona-postgresql-operator/pkg/apis/pgv2.percona.com/v2"
1112
)
1213

@@ -42,6 +43,21 @@ func sidecarContainerV2(pgc *v2.PerconaPGCluster) corev1.Container {
4243

4344
pmmSpec := pgc.Spec.PMM
4445

46+
volumeMounts := []corev1.VolumeMount{
47+
{
48+
Name: "cert-volume",
49+
MountPath: "/pgconf/tls",
50+
ReadOnly: true,
51+
},
52+
}
53+
if pgc.CompareVersion("2.7.0") >= 0 {
54+
volumeMounts = append(volumeMounts, corev1.VolumeMount{
55+
Name: postgres.DataVolumeMount().Name,
56+
MountPath: postgres.DataVolumeMount().MountPath,
57+
ReadOnly: true,
58+
})
59+
}
60+
4561
container := corev1.Container{
4662
Name: "pmm-client",
4763
Image: pmmSpec.Image,
@@ -74,13 +90,7 @@ func sidecarContainerV2(pgc *v2.PerconaPGCluster) corev1.Container {
7490
},
7591
},
7692
},
77-
VolumeMounts: []corev1.VolumeMount{
78-
{
79-
Name: "cert-volume",
80-
MountPath: "/pgconf/tls",
81-
ReadOnly: true,
82-
},
83-
},
93+
VolumeMounts: volumeMounts,
8494
Env: []corev1.EnvVar{
8595
{
8696
Name: "POD_NAME",
@@ -306,7 +316,13 @@ func sidecarContainerV3(pgc *v2.PerconaPGCluster) corev1.Container {
306316
MountPath: "/pgconf/tls",
307317
ReadOnly: true,
308318
},
319+
{
320+
Name: postgres.DataVolumeMount().Name,
321+
MountPath: postgres.DataVolumeMount().MountPath,
322+
ReadOnly: true,
323+
},
309324
},
325+
310326
Env: []corev1.EnvVar{
311327
{
312328
Name: "POD_NAME",

percona/pmm/pmm_test.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
"github.com/pkg/errors"
77
"github.com/stretchr/testify/assert"
88
"github.com/stretchr/testify/require"
9-
109
corev1 "k8s.io/api/core/v1"
1110
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
1211

@@ -136,7 +135,6 @@ func TestContainer(t *testing.T) {
136135
assert.Contains(t, container.Env, tt.verificationEnvVar())
137136
})
138137
}
139-
140138
}
141139

142140
func TestSidecarContainerV2(t *testing.T) {
@@ -248,7 +246,7 @@ func TestSidecarContainerV2(t *testing.T) {
248246
}
249247
}
250248

251-
assert.Len(t, container.VolumeMounts, 1)
249+
assert.Len(t, container.VolumeMounts, 2)
252250
assert.Equal(t, "/pgconf/tls", container.VolumeMounts[0].MountPath)
253251
assert.True(t, container.VolumeMounts[0].ReadOnly)
254252
}
@@ -357,7 +355,7 @@ func TestSidecarContainerV3(t *testing.T) {
357355
}
358356
}
359357

360-
assert.Len(t, container.VolumeMounts, 1)
358+
assert.Len(t, container.VolumeMounts, 2)
361359
assert.Equal(t, "/pgconf/tls", container.VolumeMounts[0].MountPath)
362360
assert.True(t, container.VolumeMounts[0].ReadOnly)
363361
}

0 commit comments

Comments
 (0)