diff --git a/e2e-tests/tests/monitoring-pmm3/08-check-mountpoint-expose.yaml b/e2e-tests/tests/monitoring-pmm3/08-check-mountpoint-expose.yaml new file mode 100644 index 000000000..e029b7515 --- /dev/null +++ b/e2e-tests/tests/monitoring-pmm3/08-check-mountpoint-expose.yaml @@ -0,0 +1,20 @@ +apiVersion: kuttl.dev/v1beta1 +kind: TestStep +commands: + - script: |- + set -o errexit + set -o xtrace + + source ../../functions + + series_fetched=$(curl --insecure -G "https://admin:admin@$(get_service_ip monitoring-service)/prometheus/api/v1/query_range" \ + --data-urlencode "query=node_filesystem_free_bytes{mountpoint=\"/pgdata\"}" \ + --data-urlencode "start=$(($(date +%s) - 300))" \ + --data-urlencode "end=$(date +%s)" \ + --data-urlencode "step=5s" | jq -r '.stats.seriesFetched') + + if [[ $series_fetched == 0 ]]; then + echo "seriesFetched is 0" + exit 1 + fi + timeout: 360 \ No newline at end of file diff --git a/e2e-tests/tests/monitoring-pmm3/08-check-password-leak.yaml b/e2e-tests/tests/monitoring-pmm3/09-check-password-leak.yaml similarity index 100% rename from e2e-tests/tests/monitoring-pmm3/08-check-password-leak.yaml rename to e2e-tests/tests/monitoring-pmm3/09-check-password-leak.yaml diff --git a/e2e-tests/tests/monitoring/08-check-mountpoint-expose.yaml b/e2e-tests/tests/monitoring/08-check-mountpoint-expose.yaml new file mode 100644 index 000000000..ace3f3672 --- /dev/null +++ b/e2e-tests/tests/monitoring/08-check-mountpoint-expose.yaml @@ -0,0 +1,20 @@ +apiVersion: kuttl.dev/v1beta1 +kind: TestStep +commands: + - script: |- + set -o errexit + set -o xtrace + + source ../../functions +# TODO: turn on after changes in PMM: PMM-14832 +# series_fetched=$(curl --insecure -G "https://admin:admin@$(get_service_ip monitoring-service)/prometheus/api/v1/query_range" \ +# --data-urlencode "query=node_filesystem_free_bytes{mountpoint=\"/pgdata\"}" \ +# --data-urlencode "start=$(($(date +%s) - 300))" \ +# --data-urlencode "end=$(date +%s)" \ +# --data-urlencode "step=5s" | jq -r '.stats.seriesFetched') +# +# if [[ $series_fetched == 0 ]]; then +# echo "seriesFetched is 0" +# exit 1 +# fi + timeout: 360 \ No newline at end of file diff --git a/percona/pmm/pmm.go b/percona/pmm/pmm.go index 1b17b0c17..c4e6b9f4b 100644 --- a/percona/pmm/pmm.go +++ b/percona/pmm/pmm.go @@ -8,6 +8,7 @@ import ( corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/util/intstr" + "github.com/percona/percona-postgresql-operator/v2/internal/postgres" v2 "github.com/percona/percona-postgresql-operator/v2/pkg/apis/pgv2.percona.com/v2" ) @@ -43,6 +44,179 @@ func sidecarContainerV2(pgc *v2.PerconaPGCluster) corev1.Container { pmmSpec := pgc.Spec.PMM + volumeMounts := []corev1.VolumeMount{ + { + Name: "cert-volume", + MountPath: "/pgconf/tls", + ReadOnly: true, + }, + } + if pgc.CompareVersion("2.9.0") >= 0 { + volumeMounts = append(volumeMounts, corev1.VolumeMount{ + Name: postgres.DataVolumeMount().Name, + MountPath: postgres.DataVolumeMount().MountPath, + ReadOnly: true, + }) + } + + env := []corev1.EnvVar{ + { + Name: "POD_NAME", + ValueFrom: &corev1.EnvVarSource{ + FieldRef: &corev1.ObjectFieldSelector{ + APIVersion: "v1", + FieldPath: "metadata.name", + }, + }, + }, + { + Name: "POD_NAMESPACE", + ValueFrom: &corev1.EnvVarSource{ + FieldRef: &corev1.ObjectFieldSelector{ + APIVersion: "v1", + FieldPath: "metadata.namespace", + }, + }, + }, + { + Name: "PMM_USER", + Value: "api_key", + }, + { + Name: "PMM_SERVER", + Value: pmmSpec.ServerHost, + }, + { + Name: "PMM_AGENT_SERVER_ADDRESS", + Value: pmmSpec.ServerHost, + }, + { + Name: "PMM_AGENT_SERVER_USERNAME", + Value: "api_key", + }, + { + Name: "PMM_AGENT_SERVER_PASSWORD", + ValueFrom: &corev1.EnvVarSource{ + SecretKeyRef: &corev1.SecretKeySelector{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: pmmSpec.Secret, + }, + Key: secretKey, + }, + }, + }, + { + Name: "CLIENT_PORT_LISTEN", + Value: "7777", + }, + { + Name: "CLIENT_PORT_MIN", + Value: "30100", + }, + { + Name: "CLIENT_PORT_MAX", + Value: "30105", + }, + { + Name: "PMM_AGENT_LISTEN_PORT", + Value: "7777", + }, + { + Name: "PMM_AGENT_PORTS_MIN", + Value: "30100", + }, + { + Name: "PMM_AGENT_PORTS_MAX", + Value: "30105", + }, + { + Name: "PMM_AGENT_CONFIG_FILE", + Value: "/usr/local/percona/pmm2/config/pmm-agent.yaml", + }, + { + Name: "PMM_AGENT_LOG_LEVEL", + Value: "info", + }, + { + Name: "PMM_AGENT_DEBUG", + Value: "false", + }, + { + Name: "PMM_AGENT_TRACE", + Value: "false", + }, + { + Name: "PMM_AGENT_SERVER_INSECURE_TLS", + Value: "1", + }, + { + Name: "PMM_AGENT_LISTEN_ADDRESS", + Value: "0.0.0.0", + }, + { + Name: "PMM_AGENT_SETUP_NODE_NAME", + Value: "$(POD_NAMESPACE)-$(POD_NAME)", + }, + { + Name: "PMM_AGENT_SETUP_METRICS_MODE", + Value: "push", + }, + { + Name: "PMM_AGENT_SETUP", + Value: "1", + }, + { + Name: "PMM_AGENT_SETUP_FORCE", + Value: "1", + }, + { + Name: "PMM_AGENT_SETUP_NODE_TYPE", + Value: "container", + }, + { + Name: "PMM_AGENT_SIDECAR", + Value: "true", + }, + { + Name: "PMM_AGENT_SIDECAR_SLEEP", + Value: "5", + }, + { + Name: "DB_TYPE", + Value: "postgresql", + }, + { + Name: "DB_USER", + Value: v2.UserMonitoring, + }, + { + Name: "DB_PASS", + ValueFrom: &corev1.EnvVarSource{ + SecretKeyRef: &corev1.SecretKeySelector{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: pgc.UserMonitoring(), + }, + Key: "password", + }, + }, + }, + { + Name: "PMM_AGENT_PRERUN_SCRIPT", + Value: agentPrerunScript(pgc, false), + }, + { + Name: "PMM_AGENT_PATHS_TEMPDIR", + Value: "/tmp", + }, + } + + if pgc.CompareVersion("2.9.0") >= 0 { + env = append(env, corev1.EnvVar{ + Name: "PMM_AGENT_SETUP_PROC_MOUNTS_PATH", + Value: "/proc/self/mounts", + }) + } + return corev1.Container{ Name: "pmm-client", Image: pmmSpec.Image, @@ -75,177 +249,175 @@ func sidecarContainerV2(pgc *v2.PerconaPGCluster) corev1.Container { }, }, }, - VolumeMounts: []corev1.VolumeMount{ - { - Name: "cert-volume", - MountPath: "/pgconf/tls", - ReadOnly: true, - }, + VolumeMounts: volumeMounts, + Env: env, + } +} + +// sidecarContainerV3 refers to the construction of the PMM3 container. +func sidecarContainerV3(pgc *v2.PerconaPGCluster) corev1.Container { + ports := []corev1.ContainerPort{{ContainerPort: 7777}} + + for port := 30100; port <= 30105; port++ { + // can't overflow int32, disable linter + ports = append(ports, corev1.ContainerPort{ContainerPort: int32(port)}) // nolint:gosec + } + + pmmSpec := pgc.Spec.PMM + + volumeMounts := []corev1.VolumeMount{ + { + Name: "cert-volume", + MountPath: "/pgconf/tls", + ReadOnly: true, }, - Env: []corev1.EnvVar{ - { - Name: "POD_NAME", - ValueFrom: &corev1.EnvVarSource{ - FieldRef: &corev1.ObjectFieldSelector{ - APIVersion: "v1", - FieldPath: "metadata.name", - }, + } + if pgc.CompareVersion("2.9.0") >= 0 { + volumeMounts = append(volumeMounts, corev1.VolumeMount{ + Name: postgres.DataVolumeMount().Name, + MountPath: postgres.DataVolumeMount().MountPath, + ReadOnly: true, + }) + } + + env := []corev1.EnvVar{ + { + Name: "POD_NAME", + ValueFrom: &corev1.EnvVarSource{ + FieldRef: &corev1.ObjectFieldSelector{ + APIVersion: "v1", + FieldPath: "metadata.name", }, }, - { - Name: "POD_NAMESPACE", - ValueFrom: &corev1.EnvVarSource{ - FieldRef: &corev1.ObjectFieldSelector{ - APIVersion: "v1", - FieldPath: "metadata.namespace", - }, + }, + { + Name: "POD_NAMESPACE", + ValueFrom: &corev1.EnvVarSource{ + FieldRef: &corev1.ObjectFieldSelector{ + APIVersion: "v1", + FieldPath: "metadata.namespace", }, }, - { - Name: "PMM_USER", - Value: "api_key", - }, - { - Name: "PMM_SERVER", - Value: pmmSpec.ServerHost, - }, - { - Name: "PMM_AGENT_SERVER_ADDRESS", - Value: pmmSpec.ServerHost, - }, - { - Name: "PMM_AGENT_SERVER_USERNAME", - Value: "api_key", - }, - { - Name: "PMM_AGENT_SERVER_PASSWORD", - ValueFrom: &corev1.EnvVarSource{ - SecretKeyRef: &corev1.SecretKeySelector{ - LocalObjectReference: corev1.LocalObjectReference{ - Name: pmmSpec.Secret, - }, - Key: secretKey, + }, + { + Name: "PMM_AGENT_SERVER_ADDRESS", + Value: pmmSpec.ServerHost, + }, + { + Name: "PMM_AGENT_SERVER_USERNAME", + Value: "service_token", + }, + { + Name: "PMM_AGENT_SERVER_PASSWORD", + ValueFrom: &corev1.EnvVarSource{ + SecretKeyRef: &corev1.SecretKeySelector{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: pmmSpec.Secret, }, + Key: secretToken, }, }, - { - Name: "CLIENT_PORT_LISTEN", - Value: "7777", - }, - { - Name: "CLIENT_PORT_MIN", - Value: "30100", - }, - { - Name: "CLIENT_PORT_MAX", - Value: "30105", - }, - { - Name: "PMM_AGENT_LISTEN_PORT", - Value: "7777", - }, - { - Name: "PMM_AGENT_PORTS_MIN", - Value: "30100", - }, - { - Name: "PMM_AGENT_PORTS_MAX", - Value: "30105", - }, - { - Name: "PMM_AGENT_CONFIG_FILE", - Value: "/usr/local/percona/pmm2/config/pmm-agent.yaml", - }, - { - Name: "PMM_AGENT_LOG_LEVEL", - Value: "info", - }, - { - Name: "PMM_AGENT_DEBUG", - Value: "false", - }, - { - Name: "PMM_AGENT_TRACE", - Value: "false", - }, - { - Name: "PMM_AGENT_SERVER_INSECURE_TLS", - Value: "1", - }, - { - Name: "PMM_AGENT_LISTEN_ADDRESS", - Value: "0.0.0.0", - }, - { - Name: "PMM_AGENT_SETUP_NODE_NAME", - Value: "$(POD_NAMESPACE)-$(POD_NAME)", - }, - { - Name: "PMM_AGENT_SETUP_METRICS_MODE", - Value: "push", - }, - { - Name: "PMM_AGENT_SETUP", - Value: "1", - }, - { - Name: "PMM_AGENT_SETUP_FORCE", - Value: "1", - }, - { - Name: "PMM_AGENT_SETUP_NODE_TYPE", - Value: "container", - }, - { - Name: "PMM_AGENT_SIDECAR", - Value: "true", - }, - { - Name: "PMM_AGENT_SIDECAR_SLEEP", - Value: "5", - }, - { - Name: "DB_TYPE", - Value: "postgresql", - }, - { - Name: "DB_USER", - Value: v2.UserMonitoring, - }, - { - Name: "DB_PASS", - ValueFrom: &corev1.EnvVarSource{ - SecretKeyRef: &corev1.SecretKeySelector{ - LocalObjectReference: corev1.LocalObjectReference{ - Name: pgc.UserMonitoring(), - }, - Key: "password", + }, + { + Name: "PMM_AGENT_LISTEN_PORT", + Value: "7777", + }, + { + Name: "PMM_AGENT_PORTS_MIN", + Value: "30100", + }, + { + Name: "PMM_AGENT_PORTS_MAX", + Value: "30105", + }, + { + Name: "PMM_AGENT_CONFIG_FILE", + Value: "/usr/local/percona/pmm/config/pmm-agent.yaml", + }, + { + Name: "PMM_AGENT_LOG_LEVEL", + Value: "info", + }, + { + Name: "PMM_AGENT_DEBUG", + Value: "false", + }, + { + Name: "PMM_AGENT_TRACE", + Value: "false", + }, + { + Name: "PMM_AGENT_SERVER_INSECURE_TLS", + Value: "1", + }, + { + Name: "PMM_AGENT_LISTEN_ADDRESS", + Value: "0.0.0.0", + }, + { + Name: "PMM_AGENT_SETUP_NODE_NAME", + Value: "$(POD_NAMESPACE)-$(POD_NAME)", + }, + { + Name: "PMM_AGENT_SETUP_METRICS_MODE", + Value: "push", + }, + { + Name: "PMM_AGENT_SETUP", + Value: "1", + }, + { + Name: "PMM_AGENT_SETUP_FORCE", + Value: "1", + }, + { + Name: "PMM_AGENT_SETUP_NODE_TYPE", + Value: "container", + }, + { + Name: "PMM_AGENT_SIDECAR", + Value: "true", + }, + { + Name: "PMM_AGENT_SIDECAR_SLEEP", + Value: "5", + }, + { + Name: "DB_TYPE", + Value: "postgresql", + }, + { + Name: "DB_USER", + Value: v2.UserMonitoring, + }, + { + Name: "DB_PASS", + ValueFrom: &corev1.EnvVarSource{ + SecretKeyRef: &corev1.SecretKeySelector{ + LocalObjectReference: corev1.LocalObjectReference{ + Name: pgc.UserMonitoring(), }, + Key: "password", }, }, - { - Name: "PMM_AGENT_PRERUN_SCRIPT", - Value: agentPrerunScript(pgc, false), - }, - { - Name: "PMM_AGENT_PATHS_TEMPDIR", - Value: "/tmp", - }, + }, + { + Name: "PMM_AGENT_PRERUN_SCRIPT", + Value: agentPrerunScript(pgc, true), + }, + { + Name: "PMM_AGENT_PATHS_TEMPDIR", + Value: "/tmp/pmm", }, } -} - -// sidecarContainerV3 refers to the construction of the PMM3 container. -func sidecarContainerV3(pgc *v2.PerconaPGCluster) corev1.Container { - ports := []corev1.ContainerPort{{ContainerPort: 7777}} - for port := 30100; port <= 30105; port++ { - // can't overflow int32, disable linter - ports = append(ports, corev1.ContainerPort{ContainerPort: int32(port)}) // nolint:gosec + if pgc.CompareVersion("2.9.0") >= 0 { + env = append(env, corev1.EnvVar{ + Name: "PMM_AGENT_SETUP_PROC_MOUNTS_PATH", + Value: "/proc/self/mounts", + }) } - pmmSpec := pgc.Spec.PMM - container := corev1.Container{ Name: "pmm-client", Image: pmmSpec.Image, @@ -278,143 +450,8 @@ func sidecarContainerV3(pgc *v2.PerconaPGCluster) corev1.Container { }, }, }, - VolumeMounts: []corev1.VolumeMount{ - { - Name: "cert-volume", - MountPath: "/pgconf/tls", - ReadOnly: true, - }, - }, - Env: []corev1.EnvVar{ - { - Name: "POD_NAME", - ValueFrom: &corev1.EnvVarSource{ - FieldRef: &corev1.ObjectFieldSelector{ - APIVersion: "v1", - FieldPath: "metadata.name", - }, - }, - }, - { - Name: "POD_NAMESPACE", - ValueFrom: &corev1.EnvVarSource{ - FieldRef: &corev1.ObjectFieldSelector{ - APIVersion: "v1", - FieldPath: "metadata.namespace", - }, - }, - }, - { - Name: "PMM_AGENT_SERVER_ADDRESS", - Value: pmmSpec.ServerHost, - }, - { - Name: "PMM_AGENT_SERVER_USERNAME", - Value: "service_token", - }, - { - Name: "PMM_AGENT_SERVER_PASSWORD", - ValueFrom: &corev1.EnvVarSource{ - SecretKeyRef: &corev1.SecretKeySelector{ - LocalObjectReference: corev1.LocalObjectReference{ - Name: pmmSpec.Secret, - }, - Key: secretToken, - }, - }, - }, - { - Name: "PMM_AGENT_LISTEN_PORT", - Value: "7777", - }, - { - Name: "PMM_AGENT_PORTS_MIN", - Value: "30100", - }, - { - Name: "PMM_AGENT_PORTS_MAX", - Value: "30105", - }, - { - Name: "PMM_AGENT_CONFIG_FILE", - Value: "/usr/local/percona/pmm/config/pmm-agent.yaml", - }, - { - Name: "PMM_AGENT_LOG_LEVEL", - Value: "info", - }, - { - Name: "PMM_AGENT_DEBUG", - Value: "false", - }, - { - Name: "PMM_AGENT_TRACE", - Value: "false", - }, - { - Name: "PMM_AGENT_SERVER_INSECURE_TLS", - Value: "1", - }, - { - Name: "PMM_AGENT_LISTEN_ADDRESS", - Value: "0.0.0.0", - }, - { - Name: "PMM_AGENT_SETUP_NODE_NAME", - Value: "$(POD_NAMESPACE)-$(POD_NAME)", - }, - { - Name: "PMM_AGENT_SETUP_METRICS_MODE", - Value: "push", - }, - { - Name: "PMM_AGENT_SETUP", - Value: "1", - }, - { - Name: "PMM_AGENT_SETUP_FORCE", - Value: "1", - }, - { - Name: "PMM_AGENT_SETUP_NODE_TYPE", - Value: "container", - }, - { - Name: "PMM_AGENT_SIDECAR", - Value: "true", - }, - { - Name: "PMM_AGENT_SIDECAR_SLEEP", - Value: "5", - }, - { - Name: "DB_TYPE", - Value: "postgresql", - }, - { - Name: "DB_USER", - Value: v2.UserMonitoring, - }, - { - Name: "DB_PASS", - ValueFrom: &corev1.EnvVarSource{ - SecretKeyRef: &corev1.SecretKeySelector{ - LocalObjectReference: corev1.LocalObjectReference{ - Name: pgc.UserMonitoring(), - }, - Key: "password", - }, - }, - }, - { - Name: "PMM_AGENT_PRERUN_SCRIPT", - Value: agentPrerunScript(pgc, true), - }, - { - Name: "PMM_AGENT_PATHS_TEMPDIR", - Value: "/tmp/pmm", - }, - }, + VolumeMounts: volumeMounts, + Env: env, } return container diff --git a/percona/pmm/pmm_test.go b/percona/pmm/pmm_test.go index 5a8bbbc59..caabafe32 100644 --- a/percona/pmm/pmm_test.go +++ b/percona/pmm/pmm_test.go @@ -184,40 +184,41 @@ func TestSidecarContainerV2(t *testing.T) { assert.NotNil(t, container.Lifecycle.PreStop) assert.Equal(t, []string{"bash", "-c", "pmm-admin unregister --force"}, container.Lifecycle.PreStop.Exec.Command) - assert.Len(t, container.Env, 31) + assert.Len(t, container.Env, 32) expectedEnvVars := map[string]string{ - "POD_NAME": "", // field reference is asserted separately - "POD_NAMESPACE": "", // field reference is asserted separately - "PMM_USER": "api_key", - "PMM_SERVER": pmmSpec.ServerHost, - "PMM_AGENT_SERVER_ADDRESS": pmmSpec.ServerHost, - "PMM_AGENT_SERVER_USERNAME": "api_key", - "PMM_AGENT_SERVER_PASSWORD": "", // secret reference is asserted separately - "CLIENT_PORT_LISTEN": "7777", - "CLIENT_PORT_MIN": "30100", - "CLIENT_PORT_MAX": "30105", - "PMM_AGENT_LISTEN_PORT": "7777", - "PMM_AGENT_PORTS_MIN": "30100", - "PMM_AGENT_PORTS_MAX": "30105", - "PMM_AGENT_CONFIG_FILE": "/usr/local/percona/pmm2/config/pmm-agent.yaml", - "PMM_AGENT_LOG_LEVEL": "info", - "PMM_AGENT_DEBUG": "false", - "PMM_AGENT_TRACE": "false", - "PMM_AGENT_SERVER_INSECURE_TLS": "1", - "PMM_AGENT_LISTEN_ADDRESS": "0.0.0.0", - "PMM_AGENT_SETUP_NODE_NAME": "$(POD_NAMESPACE)-$(POD_NAME)", - "PMM_AGENT_SETUP_METRICS_MODE": "push", - "PMM_AGENT_SETUP": "1", - "PMM_AGENT_SETUP_FORCE": "1", - "PMM_AGENT_SETUP_NODE_TYPE": "container", - "PMM_AGENT_SIDECAR": "true", - "PMM_AGENT_SIDECAR_SLEEP": "5", - "DB_TYPE": "postgresql", - "DB_USER": v2.UserMonitoring, - "DB_PASS": "", // secret reference is asserted separately - "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=pgstatements --cluster=test-cluster --environment=dev-postgres; pmm-admin annotate --service-name=$(PMM_AGENT_SETUP_NODE_NAME) 'Service restarted'", - "PMM_AGENT_PATHS_TEMPDIR": "/tmp", + "POD_NAME": "", // field reference is asserted separately + "POD_NAMESPACE": "", // field reference is asserted separately + "PMM_USER": "api_key", + "PMM_SERVER": pmmSpec.ServerHost, + "PMM_AGENT_SERVER_ADDRESS": pmmSpec.ServerHost, + "PMM_AGENT_SERVER_USERNAME": "api_key", + "PMM_AGENT_SERVER_PASSWORD": "", // secret reference is asserted separately + "CLIENT_PORT_LISTEN": "7777", + "CLIENT_PORT_MIN": "30100", + "CLIENT_PORT_MAX": "30105", + "PMM_AGENT_LISTEN_PORT": "7777", + "PMM_AGENT_PORTS_MIN": "30100", + "PMM_AGENT_PORTS_MAX": "30105", + "PMM_AGENT_CONFIG_FILE": "/usr/local/percona/pmm2/config/pmm-agent.yaml", + "PMM_AGENT_LOG_LEVEL": "info", + "PMM_AGENT_DEBUG": "false", + "PMM_AGENT_TRACE": "false", + "PMM_AGENT_SERVER_INSECURE_TLS": "1", + "PMM_AGENT_LISTEN_ADDRESS": "0.0.0.0", + "PMM_AGENT_SETUP_NODE_NAME": "$(POD_NAMESPACE)-$(POD_NAME)", + "PMM_AGENT_SETUP_METRICS_MODE": "push", + "PMM_AGENT_SETUP": "1", + "PMM_AGENT_SETUP_FORCE": "1", + "PMM_AGENT_SETUP_NODE_TYPE": "container", + "PMM_AGENT_SIDECAR": "true", + "PMM_AGENT_SIDECAR_SLEEP": "5", + "DB_TYPE": "postgresql", + "DB_USER": v2.UserMonitoring, + "DB_PASS": "", // secret reference is asserted separately + "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=test-cluster --environment=dev-postgres; pmm-admin annotate --service-name=$(PMM_AGENT_SETUP_NODE_NAME) 'Service restarted'", + "PMM_AGENT_PATHS_TEMPDIR": "/tmp", + "PMM_AGENT_SETUP_PROC_MOUNTS_PATH": "/proc/self/mounts", } for _, envVar := range container.Env { @@ -249,7 +250,7 @@ func TestSidecarContainerV2(t *testing.T) { } } - assert.Len(t, container.VolumeMounts, 1) + assert.Len(t, container.VolumeMounts, 2) assert.Equal(t, "/pgconf/tls", container.VolumeMounts[0].MountPath) assert.True(t, container.VolumeMounts[0].ReadOnly) } @@ -297,35 +298,36 @@ func TestSidecarContainerV3(t *testing.T) { assert.NotNil(t, container.Lifecycle.PreStop) assert.Equal(t, []string{"bash", "-c", "pmm-admin unregister --force"}, container.Lifecycle.PreStop.Exec.Command) - assert.Len(t, container.Env, 26) + assert.Len(t, container.Env, 27) expectedEnvVars := map[string]string{ - "POD_NAME": "", // field reference is asserted separately - "POD_NAMESPACE": "", // field reference is asserted separately - "PMM_AGENT_SERVER_ADDRESS": pmmSpec.ServerHost, - "PMM_AGENT_SERVER_USERNAME": "service_token", - "PMM_AGENT_SERVER_PASSWORD": "", // secret reference is asserted separately - "PMM_AGENT_LISTEN_PORT": "7777", - "PMM_AGENT_PORTS_MIN": "30100", - "PMM_AGENT_PORTS_MAX": "30105", - "PMM_AGENT_CONFIG_FILE": "/usr/local/percona/pmm/config/pmm-agent.yaml", - "PMM_AGENT_LOG_LEVEL": "info", - "PMM_AGENT_DEBUG": "false", - "PMM_AGENT_TRACE": "false", - "PMM_AGENT_SERVER_INSECURE_TLS": "1", - "PMM_AGENT_LISTEN_ADDRESS": "0.0.0.0", - "PMM_AGENT_SETUP_NODE_NAME": "$(POD_NAMESPACE)-$(POD_NAME)", - "PMM_AGENT_SETUP_METRICS_MODE": "push", - "PMM_AGENT_SETUP": "1", - "PMM_AGENT_SETUP_FORCE": "1", - "PMM_AGENT_SETUP_NODE_TYPE": "container", - "PMM_AGENT_SIDECAR": "true", - "PMM_AGENT_SIDECAR_SLEEP": "5", - "DB_TYPE": "postgresql", - "DB_USER": v2.UserMonitoring, - "DB_PASS": "", // secret reference is asserted separately - "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=pgstatements --cluster=test-cluster --environment=dev-postgres; pmm-admin add external --scheme=https --listen-port=8008 --tls-skip-verify --service-name=$(PMM_AGENT_SETUP_NODE_NAME)-patroni-external; pmm-admin annotate --service-name=$(PMM_AGENT_SETUP_NODE_NAME) 'Service restarted'", - "PMM_AGENT_PATHS_TEMPDIR": "/tmp/pmm", + "POD_NAME": "", // field reference is asserted separately + "POD_NAMESPACE": "", // field reference is asserted separately + "PMM_AGENT_SERVER_ADDRESS": pmmSpec.ServerHost, + "PMM_AGENT_SERVER_USERNAME": "service_token", + "PMM_AGENT_SERVER_PASSWORD": "", // secret reference is asserted separately + "PMM_AGENT_LISTEN_PORT": "7777", + "PMM_AGENT_PORTS_MIN": "30100", + "PMM_AGENT_PORTS_MAX": "30105", + "PMM_AGENT_CONFIG_FILE": "/usr/local/percona/pmm/config/pmm-agent.yaml", + "PMM_AGENT_LOG_LEVEL": "info", + "PMM_AGENT_DEBUG": "false", + "PMM_AGENT_TRACE": "false", + "PMM_AGENT_SERVER_INSECURE_TLS": "1", + "PMM_AGENT_LISTEN_ADDRESS": "0.0.0.0", + "PMM_AGENT_SETUP_NODE_NAME": "$(POD_NAMESPACE)-$(POD_NAME)", + "PMM_AGENT_SETUP_METRICS_MODE": "push", + "PMM_AGENT_SETUP": "1", + "PMM_AGENT_SETUP_FORCE": "1", + "PMM_AGENT_SETUP_NODE_TYPE": "container", + "PMM_AGENT_SIDECAR": "true", + "PMM_AGENT_SIDECAR_SLEEP": "5", + "DB_TYPE": "postgresql", + "DB_USER": v2.UserMonitoring, + "DB_PASS": "", // secret reference is asserted separately + "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=test-cluster --environment=dev-postgres; pmm-admin add external --scheme=https --listen-port=8008 --tls-skip-verify --service-name=$(PMM_AGENT_SETUP_NODE_NAME)-patroni-external; pmm-admin annotate --service-name=$(PMM_AGENT_SETUP_NODE_NAME) 'Service restarted'", + "PMM_AGENT_PATHS_TEMPDIR": "/tmp/pmm", + "PMM_AGENT_SETUP_PROC_MOUNTS_PATH": "/proc/self/mounts", } for _, envVar := range container.Env { @@ -357,7 +359,7 @@ func TestSidecarContainerV3(t *testing.T) { } } - assert.Len(t, container.VolumeMounts, 1) + assert.Len(t, container.VolumeMounts, 2) assert.Equal(t, "/pgconf/tls", container.VolumeMounts[0].MountPath) assert.True(t, container.VolumeMounts[0].ReadOnly) }