Skip to content

Support for new versions of Vault #9

@mauza

Description

@mauza

I'm working on integrating our internal tooling with creating vault cloudsql postgres roles. I've gotten this working locally using vault:1.8.3 but our actual dev and production environments are on vault 1.10.x. When I use vault:1.10.8 locally I get this error:

* error creating database object: invalid database version: 2 errors occurred:
        * error getting plugin type: unable to get database plugin type: rpc error: code = Unavailable desc = error reading from server: EOF
        * Incompatible API version with plugin. Plugin version: 5, Client versions: [4 3]

Here are the logs from the container when trying to interact and create a connection:

2022-11-08T16:44:45.786Z [INFO]  secrets.database.database_c57aeb57.cloudsql: configuring client automatic mTLS
2022-11-08T16:44:45.793Z [DEBUG] secrets.database.database_c57aeb57.cloudsql: starting plugin: path=/vault/plugins/cloudsql args=["/vault/plugins/cloudsql", "-log-level=debug", "-db-type=cloudsql-postgres"]
2022-11-08T16:44:45.793Z [DEBUG] secrets.database.database_c57aeb57.cloudsql: plugin started: path=/vault/plugins/cloudsql pid=41
2022-11-08T16:44:45.793Z [DEBUG] secrets.database.database_c57aeb57.cloudsql: waiting for RPC address: path=/vault/plugins/cloudsql
2022-11-08T16:44:45.797Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql: 2022-11-08T16:44:45.797Z [DEBUG] vault-plugin-database-cloudsql: initializing cloudsql plugin with multiplexing=%t: EXTRA_VALUE_AT_END=true
2022-11-08T16:44:45.863Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql: 2022-11-08T16:44:45.863Z [INFO]  vault-plugin-database-cloudsql: configuring server automatic mTLS
2022-11-08T16:44:45.884Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql: 2022-11-08T16:44:45.884Z [DEBUG] vault-plugin-database-cloudsql: plugin address: network=unix address=/tmp/plugin514498414
2022-11-08T16:44:45.884Z [DEBUG] secrets.database.database_c57aeb57.cloudsql: using plugin: version=6
2022-11-08T16:44:45.894Z [TRACE] secrets.database.database_c57aeb57.cloudsql.stdio: waiting for stdio data
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql: panic: sql: Register called twice for driver cloudsql-postgres
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql: 
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql: goroutine 47 [running]:
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql: database/sql.Register({0x7ffc019cda62, 0x11}, {0xe16840, 0xc0001ca480})
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql:  /usr/lib/go/src/database/sql/sql.go:51 +0x13d
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql: cloud.google.com/go/cloudsqlconn/postgres/pgxv4.RegisterDriver({0x7ffc019cda62, 0x11}, {0xc00008b7d0?, 0xc00008b7d8?, 0x40d987?})
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql:  /home/caseymau/go/pkg/mod/cloud.google.com/go/cloudsqlconn@v1.0.1/postgres/pgxv4/postgres.go:42 +0xbe
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql: github.com/expel-io/vault-plugin-database-cloudsql/cloudsql.newPostgresDatabase({0x7ffc019cda62?, 0x1?}, 0xc0001d27e0)
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql:  /home/caseymau/Projects/vault-plugin-database-cloudsql/cloudsql.go:114 +0x49
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql: github.com/expel-io/vault-plugin-database-cloudsql/cloudsql.New({0x7ffc019cda62, 0x11})
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql:  /home/caseymau/Projects/vault-plugin-database-cloudsql/cloudsql.go:41 +0x106
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql: main.Serve.func1()
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql:  /home/caseymau/Projects/vault-plugin-database-cloudsql/cmd/vault-plugin-database-cloudsql/serve.go:43 +0x25
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql: github.com/hashicorp/vault/sdk/database/dbplugin/v5.(*gRPCServer).createDatabase(0xc0002c48c0, {0xc0001e1380, 0xa})
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql:  /home/caseymau/go/pkg/mod/github.com/hashicorp/vault/sdk@v0.6.1/database/dbplugin/v5/grpc_server.go:56 +0x30
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql: github.com/hashicorp/vault/sdk/database/dbplugin/v5.(*gRPCServer).getOrCreateDatabase(0xc0002c48c0, {0xe1ed30, 0xc000491c20})
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql:  /home/caseymau/go/pkg/mod/github.com/hashicorp/vault/sdk@v0.6.1/database/dbplugin/v5/grpc_server.go:51 +0x153
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql: github.com/hashicorp/vault/sdk/database/dbplugin/v5.(*gRPCServer).Type(0xc3b8a0?, {0xe1ed30?, 0xc000491c20?}, 0xc00059ba20?)
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql:  /home/caseymau/go/pkg/mod/github.com/hashicorp/vault/sdk@v0.6.1/database/dbplugin/v5/grpc_server.go:270 +0x2a
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql: github.com/hashicorp/vault/sdk/database/dbplugin/v5/proto._Database_Type_Handler({0xccaf00?, 0xc0002c48c0}, {0xe1ed30, 0xc000491c20}, 0xc00029a380, 0x0)
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql:  /home/caseymau/go/pkg/mod/github.com/hashicorp/vault/sdk@v0.6.1/database/dbplugin/v5/proto/database_grpc.pb.go:217 +0x170
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql: google.golang.org/grpc.(*Server).processUnaryRPC(0xc0003d2000, {0xe226b8, 0xc0001029c0}, 0xc0000bd0e0, 0xc000490a20, 0x12fd520, 0x0)
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql:  /home/caseymau/go/pkg/mod/google.golang.org/grpc@v1.50.1/server.go:1340 +0xd23
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql: google.golang.org/grpc.(*Server).handleStream(0xc0003d2000, {0xe226b8, 0xc0001029c0}, 0xc0000bd0e0, 0x0)
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql:  /home/caseymau/go/pkg/mod/google.golang.org/grpc@v1.50.1/server.go:1713 +0xa2f
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql: google.golang.org/grpc.(*Server).serveStreams.func1.2()
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql:  /home/caseymau/go/pkg/mod/google.golang.org/grpc@v1.50.1/server.go:965 +0x98
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql: created by google.golang.org/grpc.(*Server).serveStreams.func1
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql:  /home/caseymau/go/pkg/mod/google.golang.org/grpc@v1.50.1/server.go:963 +0x28a
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.stdio: received EOF, stopping recv loop: err="rpc error: code = Unavailable desc = error reading from server: EOF"
2022-11-08T16:44:45.897Z [DEBUG] secrets.database.database_c57aeb57.cloudsql: plugin process exited: path=/vault/plugins/cloudsql pid=41 error="exit status 2"
2022-11-08T16:44:45.950Z [DEBUG] secrets.database.database_c57aeb57.cloudsql: starting plugin: path=/vault/plugins/cloudsql args=["/vault/plugins/cloudsql", "-log-level=debug", "-db-type=cloudsql-postgres"]
2022-11-08T16:44:45.950Z [DEBUG] secrets.database.database_c57aeb57.cloudsql: plugin started: path=/vault/plugins/cloudsql pid=51
2022-11-08T16:44:45.950Z [DEBUG] secrets.database.database_c57aeb57.cloudsql: waiting for RPC address: path=/vault/plugins/cloudsql
2022-11-08T16:44:45.954Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql: 2022-11-08T16:44:45.954Z [DEBUG] vault-plugin-database-cloudsql: initializing cloudsql plugin with multiplexing=%t: EXTRA_VALUE_AT_END=true
2022-11-08T16:44:46.100Z [DEBUG] secrets.database.database_c57aeb57.cloudsql.cloudsql: 2022-11-08T16:44:46.100Z [DEBUG] vault-plugin-database-cloudsql: plugin address: network=unix address=/tmp/plugin2080400221
2022-11-08T16:44:46.101Z [DEBUG] secrets.database.database_c57aeb57.cloudsql: plugin process exited: path=/vault/plugins/cloudsql pid=51 error="signal: killed"

I'm new to using Vault and creating a plugin to interface with it but I'm happy to help contribute.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions