Skip to content

Commit 3f20deb

Browse files
authored
Merge pull request #1111 from percona/K8SPG-654_pmm_postgres_params_v1
K8SPG-654 add possibility of adding custom postgres params for PMM
2 parents 988cd8a + b46e0b3 commit 3f20deb

File tree

12 files changed

+44
-12
lines changed

12 files changed

+44
-12
lines changed

build/crd/percona/generated/pgv2.percona.com_perconapgclusters.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -13633,6 +13633,8 @@ spec:
1363313633
- Never
1363413634
- IfNotPresent
1363513635
type: string
13636+
postgresParams:
13637+
type: string
1363613638
querySource:
1363713639
default: pgstatmonitor
1363813640
enum:

config/crd/bases/pgv2.percona.com_perconapgclusters.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -14038,6 +14038,8 @@ spec:
1403814038
- Never
1403914039
- IfNotPresent
1404014040
type: string
14041+
postgresParams:
14042+
type: string
1404114043
querySource:
1404214044
default: pgstatmonitor
1404314045
enum:

deploy/bundle.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -14331,6 +14331,8 @@ spec:
1433114331
- Never
1433214332
- IfNotPresent
1433314333
type: string
14334+
postgresParams:
14335+
type: string
1433414336
querySource:
1433514337
default: pgstatmonitor
1433614338
enum:

deploy/cr.yaml

+2-1
Original file line numberDiff line numberDiff line change
@@ -471,7 +471,8 @@ spec:
471471
# imagePullPolicy: IfNotPresent
472472
secret: cluster1-pmm-secret
473473
serverHost: monitoring-service
474-
# customClusterName: "<string>"
474+
# customClusterName: "<string>"
475+
# postgresParams: "<string>"
475476
# querySource: pgstatmonitor
476477
# patroni:
477478
# # Some values of the Liveness/Readiness probes of the patroni container are calculated using syncPeriodSeconds by the following formulas:

deploy/crd.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -14331,6 +14331,8 @@ spec:
1433114331
- Never
1433214332
- IfNotPresent
1433314333
type: string
14334+
postgresParams:
14335+
type: string
1433414336
querySource:
1433514337
default: pgstatmonitor
1433614338
enum:

deploy/cw-bundle.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -14331,6 +14331,8 @@ spec:
1433114331
- Never
1433214332
- IfNotPresent
1433314333
type: string
14334+
postgresParams:
14335+
type: string
1433414336
querySource:
1433514337
default: pgstatmonitor
1433614338
enum:

e2e-tests/functions

+3-2
Original file line numberDiff line numberDiff line change
@@ -182,7 +182,8 @@ get_cr() {
182182
.spec.proxy.pgBouncer.image = "'$IMAGE_PGBOUNCER'" |
183183
.spec.pmm.image = "'$IMAGE_PMM_CLIENT'" |
184184
.spec.pmm.secret = "'${cr_name}'-pmm-secret" |
185-
.spec.pmm.customClusterName = "'${cr_name}'-pmm-custom-name"
185+
.spec.pmm.customClusterName = "'${cr_name}'-pmm-custom-name" |
186+
.spec.pmm.postgresParams = "--environment=dev-postgres"
186187
' $DEPLOY_DIR/cr.yaml >$TEMP_DIR/cr.yaml
187188

188189
if [[ $OPENSHIFT ]]; then
@@ -381,7 +382,7 @@ deploy_pmm3_server() {
381382
oc create rolebinding pmm-pg-operator-namespace-only --role percona-postgresql-operator --serviceaccount=$NAMESPACE:pmm-server -n "${NAMESPACE}"
382383
oc patch role/percona-postgresql-operator --type json -p='[{"op":"add","path": "/rules/-","value":{"apiGroups":["security.openshift.io"],"resources":["securitycontextconstraints"],"verbs":["use"],"resourceNames":["privileged"]}}]' -n "$NAMESPACE"
383384
fi
384-
helm install monitoring --set imageTag=${IMAGE_PMM3_SERVER#*:} --set imageRepo=${IMAGE_PMM3_SERVER%:*} --set platform=$platform --set sa=pmm-server --set supresshttp2=false https://percona-charts.storage.googleapis.com/pmm-server-${PMM3_SERVER_VERSION}.tgz -n "$NAMESPACE"
385+
helm install monitoring --set imageTag=${IMAGE_PMM3_SERVER#*:} --set imageRepo=${IMAGE_PMM3_SERVER%:*} --set platform=$platform --set sa=pmm-server --set supresshttp2=false https://percona-charts.storage.googleapis.com/pmm-server-${PMM_SERVER_VERSION}.tgz -n "$NAMESPACE"
385386
else
386387
platform=kubernetes
387388

e2e-tests/tests/monitoring-pmm3/03-assert.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ spec:
4040
secret: monitoring-pmm3-pmm-secret
4141
serverHost: monitoring-service
4242
customClusterName: monitoring-pmm3-pmm-custom-name
43+
postgresParams: "--environment=dev-postgres"
4344
port: 5432
4445
proxy:
4546
pgBouncer:

e2e-tests/tests/monitoring/03-assert.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ spec:
4040
secret: monitoring-pmm-secret
4141
serverHost: monitoring-service
4242
customClusterName: monitoring-pmm-custom-name
43+
postgresParams: "--environment=dev-postgres"
4344
port: 5432
4445
proxy:
4546
pgBouncer:

percona/pmm/pmm.go

+15-5
Original file line numberDiff line numberDiff line change
@@ -238,10 +238,16 @@ func sidecarContainerV2(pgc *v2.PerconaPGCluster) corev1.Container {
238238
if pgc.Spec.PMM.CustomClusterName != "" {
239239
clusterName = pgc.Spec.PMM.CustomClusterName
240240
}
241-
container.Env = append(container.Env, corev1.EnvVar{
242-
Name: "CLUSTER_NAME",
243-
Value: clusterName,
244-
})
241+
container.Env = append(container.Env,
242+
corev1.EnvVar{
243+
Name: "CLUSTER_NAME",
244+
Value: clusterName,
245+
},
246+
corev1.EnvVar{
247+
Name: "PMM_POSTGRES_PARAMS",
248+
Value: pmmSpec.PostgresParams,
249+
},
250+
)
245251
}
246252

247253
return container
@@ -434,6 +440,10 @@ func sidecarContainerV3(pgc *v2.PerconaPGCluster) corev1.Container {
434440
Name: "CLUSTER_NAME",
435441
Value: clusterName,
436442
},
443+
{
444+
Name: "PMM_POSTGRES_PARAMS",
445+
Value: pmmSpec.PostgresParams,
446+
},
437447
},
438448
}
439449

@@ -461,7 +471,7 @@ func agentPrerunScript(querySource v2.PMMQuerySource, pgc *v2.PerconaPGCluster)
461471

462472
if pgc.CompareVersion("2.7.0") >= 0 {
463473
addServiceArgs = append(addServiceArgs,
464-
"--cluster=$(CLUSTER_NAME)",
474+
"--cluster=$(CLUSTER_NAME)", "$PMM_POSTGRES_PARAMS",
465475
)
466476
}
467477
addService := fmt.Sprintf("pmm-admin add postgresql %s", strings.Join(addServiceArgs, " "))

percona/pmm/pmm_test.go

+9-4
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ func TestContainer(t *testing.T) {
1919
ImagePullPolicy: corev1.PullIfNotPresent,
2020
ServerHost: "pmm.server.local",
2121
Secret: "pmm-secret",
22+
PostgresParams: "--environment=dev-postgres",
2223
Resources: corev1.ResourceRequirements{},
2324
ContainerSecurityContext: &corev1.SecurityContext{},
2425
}
@@ -144,6 +145,7 @@ func TestSidecarContainerV2(t *testing.T) {
144145
ImagePullPolicy: corev1.PullIfNotPresent,
145146
ServerHost: "pmm.server.local",
146147
Secret: "pmm-secret",
148+
PostgresParams: "--environment=dev-postgres",
147149
Resources: corev1.ResourceRequirements{},
148150
ContainerSecurityContext: &corev1.SecurityContext{},
149151
}
@@ -179,7 +181,7 @@ func TestSidecarContainerV2(t *testing.T) {
179181
assert.NotNil(t, container.Lifecycle.PreStop)
180182
assert.Equal(t, []string{"bash", "-c", "pmm-admin unregister --force"}, container.Lifecycle.PreStop.Exec.Command)
181183

182-
assert.Len(t, container.Env, 32)
184+
assert.Len(t, container.Env, 33)
183185

184186
expectedEnvVars := map[string]string{
185187
"POD_NAME": "", // field reference is asserted separately
@@ -211,9 +213,10 @@ func TestSidecarContainerV2(t *testing.T) {
211213
"DB_TYPE": "postgresql",
212214
"DB_USER": v2.UserMonitoring,
213215
"DB_PASS": "", // secret reference is asserted separately
214-
"PMM_AGENT_PRERUN_SCRIPT": "pmm-admin status --wait=10s; pmm-admin add postgresql --username=$(DB_USER) --password='$(DB_PASS)' --host=127.0.0.1 --port=5432 --tls-cert-file=/pgconf/tls/tls.crt --tls-key-file=/pgconf/tls/tls.key --tls-ca-file=/pgconf/tls/ca.crt --tls-skip-verify --skip-connection-check --metrics-mode=push --service-name=$(PMM_AGENT_SETUP_NODE_NAME) --query-source= --cluster=$(CLUSTER_NAME); pmm-admin annotate --service-name=$(PMM_AGENT_SETUP_NODE_NAME) 'Service restarted'",
216+
"PMM_AGENT_PRERUN_SCRIPT": "pmm-admin status --wait=10s; pmm-admin add postgresql --username=$(DB_USER) --password='$(DB_PASS)' --host=127.0.0.1 --port=5432 --tls-cert-file=/pgconf/tls/tls.crt --tls-key-file=/pgconf/tls/tls.key --tls-ca-file=/pgconf/tls/ca.crt --tls-skip-verify --skip-connection-check --metrics-mode=push --service-name=$(PMM_AGENT_SETUP_NODE_NAME) --query-source= --cluster=$(CLUSTER_NAME) $PMM_POSTGRES_PARAMS; pmm-admin annotate --service-name=$(PMM_AGENT_SETUP_NODE_NAME) 'Service restarted'",
215217
"PMM_AGENT_PATHS_TEMPDIR": "/tmp",
216218
"CLUSTER_NAME": "test-cluster",
219+
"PMM_POSTGRES_PARAMS": "--environment=dev-postgres",
217220
}
218221

219222
for _, envVar := range container.Env {
@@ -256,6 +259,7 @@ func TestSidecarContainerV3(t *testing.T) {
256259
ImagePullPolicy: corev1.PullIfNotPresent,
257260
ServerHost: "pmm.server.local",
258261
Secret: "pmm-secret",
262+
PostgresParams: "--environment=dev-postgres",
259263
Resources: corev1.ResourceRequirements{},
260264
ContainerSecurityContext: &corev1.SecurityContext{},
261265
}
@@ -291,7 +295,7 @@ func TestSidecarContainerV3(t *testing.T) {
291295
assert.NotNil(t, container.Lifecycle.PreStop)
292296
assert.Equal(t, []string{"bash", "-c", "pmm-admin unregister --force"}, container.Lifecycle.PreStop.Exec.Command)
293297

294-
assert.Len(t, container.Env, 27)
298+
assert.Len(t, container.Env, 28)
295299

296300
expectedEnvVars := map[string]string{
297301
"POD_NAME": "", // field reference is asserted separately
@@ -318,9 +322,10 @@ func TestSidecarContainerV3(t *testing.T) {
318322
"DB_TYPE": "postgresql",
319323
"DB_USER": v2.UserMonitoring,
320324
"DB_PASS": "", // secret reference is asserted separately
321-
"PMM_AGENT_PRERUN_SCRIPT": "pmm-admin status --wait=10s; pmm-admin add postgresql --username=$(DB_USER) --password='$(DB_PASS)' --host=127.0.0.1 --port=5432 --tls-cert-file=/pgconf/tls/tls.crt --tls-key-file=/pgconf/tls/tls.key --tls-ca-file=/pgconf/tls/ca.crt --tls-skip-verify --skip-connection-check --metrics-mode=push --service-name=$(PMM_AGENT_SETUP_NODE_NAME) --query-source= --cluster=$(CLUSTER_NAME); pmm-admin annotate --service-name=$(PMM_AGENT_SETUP_NODE_NAME) 'Service restarted'",
325+
"PMM_AGENT_PRERUN_SCRIPT": "pmm-admin status --wait=10s; pmm-admin add postgresql --username=$(DB_USER) --password='$(DB_PASS)' --host=127.0.0.1 --port=5432 --tls-cert-file=/pgconf/tls/tls.crt --tls-key-file=/pgconf/tls/tls.key --tls-ca-file=/pgconf/tls/ca.crt --tls-skip-verify --skip-connection-check --metrics-mode=push --service-name=$(PMM_AGENT_SETUP_NODE_NAME) --query-source= --cluster=$(CLUSTER_NAME) $PMM_POSTGRES_PARAMS; pmm-admin annotate --service-name=$(PMM_AGENT_SETUP_NODE_NAME) 'Service restarted'",
322326
"PMM_AGENT_PATHS_TEMPDIR": "/tmp",
323327
"CLUSTER_NAME": "test-cluster",
328+
"PMM_POSTGRES_PARAMS": "--environment=dev-postgres",
324329
}
325330

326331
for _, envVar := range container.Env {

pkg/apis/pgv2.percona.com/v2/perconapgcluster_types.go

+3
Original file line numberDiff line numberDiff line change
@@ -556,6 +556,9 @@ type PMMSpec struct {
556556
// +optional
557557
CustomClusterName string `json:"customClusterName,omitempty"`
558558

559+
// +optional
560+
PostgresParams string `json:"postgresParams,omitempty"`
561+
559562
// +kubebuilder:validation:Required
560563
Secret string `json:"secret,omitempty"`
561564

0 commit comments

Comments
 (0)