From a10ffbc3df624d43ed492a110a13a49366ed4389 Mon Sep 17 00:00:00 2001 From: Jobin Augustine Date: Wed, 7 Feb 2024 23:44:34 +0530 Subject: [PATCH 1/3] All complexities and failure senarios are removed, No more dependancy on psql outside the pod, No dependancy on password authentication or portforwaring. --- .../pt-k8s-debug-collector/dumper/dumper.go | 70 ++----------------- 1 file changed, 4 insertions(+), 66 deletions(-) diff --git a/src/go/pt-k8s-debug-collector/dumper/dumper.go b/src/go/pt-k8s-debug-collector/dumper/dumper.go index ba1120e7..c3435003 100644 --- a/src/go/pt-k8s-debug-collector/dumper/dumper.go +++ b/src/go/pt-k8s-debug-collector/dumper/dumper.go @@ -423,75 +423,13 @@ func (d *Dumper) getPodSummary(resource, podName, crName string, namespace strin summCmdName = "pt-mysql-summary" summCmdArgs = []string{"--host=127.0.0.1", "--port=" + port, "--user=root", "--password='" + string(pass) + "'"} case "pg": - var user, pass, port string - if d.forwardport != "" { - port = d.forwardport - } else { - port = "5432" - } - cr, err := d.getCR("pgclusters", namespace) - if err != nil { - return nil, errors.Wrap(err, "get cr") - } - if cr.Spec.SecretName != "" { - user, err = d.getDataFromSecret(cr.Spec.SecretName, "username", namespace) - } else { - user, err = d.getDataFromSecret(crName+"-postgres-secret", "username", namespace) - } - if err != nil { - return nil, errors.Wrap(err, "get user from PostgreSQL users secret") - } - if cr.Spec.SecretName != "" { - pass, err = d.getDataFromSecret(cr.Spec.SecretName, "password", namespace) - } else { - pass, err = d.getDataFromSecret(crName+"-postgres-secret", "password", namespace) - } - if err != nil { - return nil, errors.Wrap(err, "get password from PostgreSQL users secret") - } - ports = port + ":5432" summCmdName = "sh" - summCmdArgs = []string{"-c", "curl https://raw.githubusercontent.com/percona/support-snippets/master/postgresql/pg_gather/gather.sql" + - " 2>/dev/null | PGPASSWORD='" + string(pass) + "' psql -X --host=127.0.0.1 --port=" + port + " --user='" + user + "'"} + summCmdArgs = []string{"-c", "curl https://raw.githubusercontent.com/percona/support-snippets/master/postgresql/pg_gather/gather.sql | " + + d.cmd + " -n "+ namespace + " exec -i "+ podName +" -- psql -X -f - "} case "pgv2": - var user, pass, port string - if d.forwardport != "" { - port = d.forwardport - } else { - port = "5432" - } - cr, err := d.getCR("perconapgclusters/"+crName, namespace) - if err != nil { - return nil, errors.Wrap(err, "get cr") - } - if cr.Spec.SecretName != "" { - user, err = d.getDataFromSecret(cr.Spec.SecretName, "user", namespace) - } else if len(cr.Spec.Users) > 0 && cr.Spec.Users[0].Name != "" { - user = cr.Spec.Users[0].Name - } else { - user, err = d.getDataFromSecret(crName+"-pguser-"+crName, "user", namespace) - } - if err != nil { - return nil, errors.Wrap(err, "get user from PostgreSQL users secret") - } - if cr.Spec.SecretName != "" { - pass, err = d.getDataFromSecret(cr.Spec.SecretName, "password", namespace) - } else if len(cr.Spec.Users) > 0 { - if cr.Spec.Users[0].SecretName != "" { - pass, err = d.getDataFromSecret(cr.Spec.Users[0].SecretName, "password", namespace) - } else { - pass, err = d.getDataFromSecret(crName+"-pguser-"+user, "password", namespace) - } - } else { - pass, err = d.getDataFromSecret(crName+"-pguser-"+crName, "password", namespace) - } - if err != nil { - return nil, errors.Wrap(err, "get password from PostgreSQL users secret") - } - ports = port + ":5432" summCmdName = "sh" - summCmdArgs = []string{"-c", "curl https://raw.githubusercontent.com/percona/support-snippets/master/postgresql/pg_gather/gather.sql" + - " 2>/dev/null | PGPASSWORD='" + string(pass) + "' psql -X --host=127.0.0.1 --port=" + port + " --user='" + user + "'"} + summCmdArgs = []string{"-c", "curl https://raw.githubusercontent.com/percona/support-snippets/master/postgresql/pg_gather/gather.sql | " + + d.cmd + " -n "+ namespace +" exec -i "+ podName +" -- psql -X -f - "} case "psmdb": var port string if d.forwardport != "" { From 7400afe174f5fd1c78b0855803dea5a870908356 Mon Sep 17 00:00:00 2001 From: Jobin Augustine Date: Thu, 8 Feb 2024 11:51:39 +0530 Subject: [PATCH 2/3] Additonally accomodated the review comments on PR : https://github.com/percona/percona-toolkit/pull/764, further simplified the code to remove the extra CASE switch --- src/go/pt-k8s-debug-collector/dumper/dumper.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/go/pt-k8s-debug-collector/dumper/dumper.go b/src/go/pt-k8s-debug-collector/dumper/dumper.go index c3435003..62baa84f 100644 --- a/src/go/pt-k8s-debug-collector/dumper/dumper.go +++ b/src/go/pt-k8s-debug-collector/dumper/dumper.go @@ -422,14 +422,14 @@ func (d *Dumper) getPodSummary(resource, podName, crName string, namespace strin ports = port + ":3306" summCmdName = "pt-mysql-summary" summCmdArgs = []string{"--host=127.0.0.1", "--port=" + port, "--user=root", "--password='" + string(pass) + "'"} - case "pg": + case "pg","pgv2": + var kubeconfig string="" + if d.kubeconfig != "" { + kubeconfig=" --kubeconfig=" + d.kubeconfig + } summCmdName = "sh" - summCmdArgs = []string{"-c", "curl https://raw.githubusercontent.com/percona/support-snippets/master/postgresql/pg_gather/gather.sql | " + - d.cmd + " -n "+ namespace + " exec -i "+ podName +" -- psql -X -f - "} - case "pgv2": - summCmdName = "sh" - summCmdArgs = []string{"-c", "curl https://raw.githubusercontent.com/percona/support-snippets/master/postgresql/pg_gather/gather.sql | " + - d.cmd + " -n "+ namespace +" exec -i "+ podName +" -- psql -X -f - "} + summCmdArgs = []string{"-c", "curl https://raw.githubusercontent.com/percona/support-snippets/master/postgresql/pg_gather/gather.sql 2>/dev/null | " + + d.cmd + kubeconfig + " -n "+ namespace + " exec -i "+ podName +" -- psql -X -f - "} case "psmdb": var port string if d.forwardport != "" { From 91209b5837b71be9dc717976469ccdde48094425 Mon Sep 17 00:00:00 2001 From: Sveta Smirnova Date: Tue, 13 Feb 2024 19:42:18 +0300 Subject: [PATCH 3/3] PT-2233 - pt-k8s-debug-collector needs psql in the host node - Adjusted test TestPT_2169, because it does not depend on port for --resource=pg anymore --- src/go/pt-k8s-debug-collector/main_test.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/go/pt-k8s-debug-collector/main_test.go b/src/go/pt-k8s-debug-collector/main_test.go index 849bd9d7..216f05c9 100644 --- a/src/go/pt-k8s-debug-collector/main_test.go +++ b/src/go/pt-k8s-debug-collector/main_test.go @@ -244,11 +244,11 @@ func TestPT_2169(t *testing.T) { kubeconfig string }{ { - name: "pg with busy port", - resource: "pg", + name: "pxc with busy port", + resource: "pxc", want: "3", port: busyport, - kubeconfig: os.Getenv("KUBECONFIG_PG"), + kubeconfig: os.Getenv("KUBECONFIG_PXC"), }, { name: "pg no error",